טריקים קטנים בתכנות: למה פיסות ידע זעירות משתלמות בכל יום
ויל קלהר טוען שחלק ניכר מהפרודוקטיביות ההנדסית היומיומית נובע מפיסות ידע קטנות ועצמאיות — מחיפושי git pickaxe ועד דליי מדדים לוגריתמיים. הוא ממליץ לשתף טריק אחד ביום עם הצוות.
למה לידע קטן יש משמעות
ויל קלהר טוען בפוסט חדש בבלוג שחלק מפתיע מהפרודוקטיביות ההנדסית היומיומית נובע מפיסות ידע קטנות: לדעת שקיימת תכונה כלשהי בשפה, להבין שעיכוב TCP בלתי מוסבר קשור כנראה לאלגוריתם של Nagle, לזכור את פקודת ה-git הנכונה כדי לצאת מצרה, או להכיר טריק לשכתוב קובץ. לחלק מהן כמעט אין תשתית מנטלית תומכת — אין צורך לדעת Python כדי להריץ python3 -m http.server בתיקייה, וזה בכל זאת מקל על העבודה.
במעטפת הפקודה וב-Git
הדוגמאות שלו מתחילות בטרמינל. Ctrl+R מחפש בהיסטוריית הפקודות, והתקנה של fzf הופכת זאת לחיפוש מטושטש; atuin מחליף את היסטוריית המעטפת במסד SQLite שניתן לחפש בו; per-directory-history מאפשר לעבור בין חיפוש פקודות שהורצו בתיקייה הנוכחית לבין חיפוש כל הפקודות הקודמות. ב-Git, git log -S pattern — ה-pickaxe — מציג כל קומיט שהוסיף או הסיר מחרוזת מסוימת, וזה לדבריו שימושי במיוחד במאגרי קוד ישנים. git log -G דומה אך מראה גם מתי שורה הועברה ממקום למקום. ו-git checkout - מחזיר ל-HEAD הקודם, בדומה לאופן שבו cd - מחזיר לתיקייה הקודמת.
הוא גם טוען שכנראה אין בכם צורך ב-find: הרבה פקודות find אפשר להחליף בגלובים כמו **/*.md, שרוב המעטפות תומכות בהם כברירת מחדל — ב-bash יש להפעיל קודם shopt -s globstar. בדומה לכך, לדעתו רוב האנשים יעדיפו ripgrep על פני grep, ack או ag. השלמה אוטומטית מתקדמת ב-zsh, הוא מציין, אינה פעילה כברירת מחדל ודורשת כמה שורות הגדרה.
מסדי נתונים, מדדים ו-JavaScript
כמה מהטריקים עוסקים בקבלת תשובה מהר יותר. SELECT בלי FROM עובד ב-SQL ומהווה דרך מהירה לבדוק כיצד פונקציה מתנהגת או להיזכר מה מחזיר SELECT TRUE <> NULL. גם PostgreSQL וגם MySQL תומכים ב-explain analyze, שממש מריץ את השאילתה ומחזיר הרבה יותר מידע על ביצועיה מאשר explain רגיל. בביטויים רגולריים, \b מסמן גבול מילה ומקל על חיפוש תחילתה או סופה של מילה. ובמדדים, רישום דלי לוגריתמי כמו Math.floor(Math.log10(count)) נותן תחושה של התפלגות הערכים ולא רק של הממוצע.
בצד של JavaScript הוא מצביע על Array.flatMap, Object.entries ו-Promise.withResolvers כתכונות מודרניות שכדאי להכיר, וכן על טריק אחד ב-Node.js בעל השפעה גדולה במיוחד: יצירת https.Agent והעברתו לקריאות fetch שומרת על חיבור פתוח למשאב חיצוני, וזה יכול להשפיע באופן דרמטי על זמן התגובה.
הידע של החברה עשוי מאותו חומר
בתוך חברה, מציין קלהר, עוד יותר ידע מקבל את הצורה הזאת: באיזה מקור נתונים להשתמש כשמאתרים בעיה מסוימת, מי מבין לעומק בתחום מסוים ושמח לעזור, איפה נמצאת התיעוד הטוב, איזה אות מעיד שיש להרחיב את השירות ידנית, מהי הפקודה להפעלה מחדש מדורגת, ואיזו כלי עזר הופך בעיה מייגעת לסקריפט. בחברה קודמת הוא שיתף טריק אחד ביום עם צוות ההנדסה ב-Slack, גם טכני וגם פנימי. אפילו מי שהכיר תשעה מעשרה טריקים מצא את העשירי שימושי, וטריק אחד ביום היה המינון הנכון כדי לא להציף אנשים במידע. מהנדסים בכירים, הוא מציע, אולי כדאי שישקלו לעשות משהו דומה.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.