כלי הפיתוח שאתם חייבים להכיר

קבלו את ארגז כלי הפיתוח שחובה להחזיק קרוב לשימוש תכוף

צילום: flickr, cc-by, Official Star Wars

רגע לפני שאנחנו יוצאים לקרב המכריע רצוי מאוד לוודא שכולם עשו את ההכנות הרצויות, כדי שלא נגלה באמצע הדרך שהמימיות ריקות. גם בעולם פיתוח התוכנה צריך לבצע את ההכנות הללו. אמנם מדי פעם תמצאו חבורה מצומצמת של יוצאי ממר”ם או 8200 שמצליחים לעשות קפיצה קוואנטית ולשנות את התעשייה, אבל גם הם בד”כ הגיעו עם הרגלים ותשתיות מוכנות מהבית.

אז מה צריך להכין?

Source Control: המקום שבו ישמר הנכס החשוב ביותר שלכם אחרי האנשים. הכלים המובילים היום הם TFS בעולם המיקרוסופט, SVN בעולם שאינו מיקרוסופט (וגם לא מעט מפתחי .Net נהנים פחות או יותר להשתמש בו) ו – Git הכוכב העולה החדש המגיע מעולם הפיתוח המבוזר של הקוד הפתוח. כמובן שיש כלים נוספים בינהם כלי Rational.

כלי ניהול משימות: המקום שבו תרשמו את המשימות שלכם. הכלי הבסיסי ביותר שכולכם תחזרו אליו (או תתחילו איתו) כששום דבר לא יעבוד: הלוח המחיק או ה – White Board. מלבדו ישנם כלים רבים המתחלקים לשלושה סוגים:

  • כלים הכוללים תמיכה בניהול תהליך ניפוי הבאגים (Bugzilla ו – Trac).
  • כלים עם אוריאנטציה של ניהול משימות כדוגמת BaseCampHQ (מוגש בהמלצה חמה).
  • כלים שמשתלבים בסביבת הפיתוח כדוגמת ה – TFS של מיקרוסופט וה – Rational של IBM.

סביבת הפיתוח: לכל שפה ולכל מפתח יש סביבת העבודה המועדפת עליו, ולכן אני אמנע מלהמליץ לכם במה לבחור. עם זאת ישנם תוספים רבים שמאוד מומלצים כדי לשפר את איכות הקוד ומהירות הכתיבה שלו. לדוגמה למפתחי .Net השימוש ב –  Resharper הוא הכרח ותצטרכו לפתוח את הכיס בשבילו.

Unit Tests: כתבתם קוד? רצוי מאוד שתהיה לכם סביבה מסודרת לכתיבת בדיקות יחידה (וגם בדיקות נרחבות יותר במקרה הצורך). מימוש טוב של בדיקות אלו יאפשר לכם לבצע אוטומציה מלאה לקוד ולזהות שבירה שלו (ולחסוך הרבה שעות שינה וכאבי לב). הסביבה הנפוצה ביותר בתחום היא משפחת ה – XUnit הכוללת את JUnit ל – Java, ה – NUnit לעולם ה – .Net ו – SimpleTest לעולם ה – PHP. ההמלצה שלי: אל תחפשו בכלל פתרון אחר למשפחה הזאת. טיפ למתקדמים: תוכלו לשלב פתרונות Mock המסמלצים מוצרים חיצוניים כמו בסיסי נתונים על מנת לבודד את בדיקות היחידה שלכם. אחת החברות המובילות בשוק זה היא TypeMock הישראלית.

Code Review Procedures: רגע לפני שאתם מכניסים את הקוד לתוך כלי ניהול התצורה שבחרתם, מומלץ מאוד שכל שורת קוד ששונתה תעבור לפחות עין בוחנת נוספת. איך עושים את זה? ראו את הפוסט אז מה היה לנו?

Continuous Integration: או בקיצור CI: אחרי שכתבתם קוד מסודר, הטמעתם מערכת ניהול תצורה ויש לכם אפילו 100% כיסוי עם בדיקות אוטומטיות, למה לא לדאוג שהגרסה האחרונה שנמצאת במערכת בקרת התצורה תקינה ואין בה באגים? למה לחכות עד לסיום הגרסה ובדיקות האינטגרציה? בחירה בכלי מתאים כדוגמת TeamCity, FinalBuilder או Jenkins (לשעבר Hudson) יעשו את העבודה. הכלים הללו יודעים לזהות ביצוע Commit במערכת ה – Source Control שלכם, למשוך את הקוד, לבצע Build ואפילו להריץ את כל (או חלק מ)בדיקות האוטומציה שלכם. המתקדמים ביניכם יוכלו לשלב גם Build לילי עם בדיקות מסיביות יותר כדוגמת בדיקות עומסים.

רוצים להוציא מהם עוד? הכלים הללו גם יודעים לאתחל את בסיס הנתונים ואפילו לממש את השלב הבא: Continuous Deployment שיביא את הקוד שלכם ממש אל המשתמשים.

Continuous Deployment: או בקיצור CD: מימשתם את התהליך שבודק את הקוד? נותנים שירות ללקוחות שלכם (לדוגמה מערכת SaaS)? פתרונות ה – CD לוקחים אתכם צעד אחד קדימה, ומתקינים את הקוד בשידור חי אצל המשתמשים שלכם. עם קצת מיומנות ובטחון תגיעו לעד עשרות התקנות בייצור ביום! הכלים שישמשו אתכם למהלך הם Selenium, BuildBot, Atlassian Bamboo, Chef ו – Puppet.

Logging/Tracing/Analytics: מעלים את הקוד לייצור? רוצים לדעת מה הולך שמה? רוצים לראות איזה Exceptions עפו? במה משתמשים באמת משתמשים ובמה לא? מבחר כלים ואמצעים יעמדו לרשותכם:

Logging/Tracing: הכלי הבסיסי ביותר, שילוב של API חיצוני בתוך הקוד יאפשר לכם לתפוס שגיאות או לציין נקודות משמעותיות בתוך הקוד ולרשום אותן החוצה לעיון מאוחר יותר. השליטים הבלתי מעורערים בתחום הזה הם כלי ה – Log4X וביניהם Log4J ו – Log4Net. המלצה חמה: אם המערכת שלכם גדולה, אל תתפתו לשמור את קבצי ה – Log בבסיס הנתונים עצמו. הסיבה לכך היא שזהו מתכון בטוח לבעיות ביצועים בייצור, ולטבלאות שיהיה קשה מאוד לתשאל אותן במקרה הצורך. התחליף המומלץ הוא שמירת הנתונים לדיסק ושימוש בכלי MapReduce ובראשם ה – Hadoop לביצוע אנליזות.

Analytics: רוצים לדעת איפה המשתמשים שלכם? כמה זמן הם בכל עמוד? ומה המסלול האהוב עליהם? Google Analytics החינמי הוא הכלי הבסיסי ביותר והנפוץ ביותר בתחום. אם אתם רוצים לדעת אינפורציה נוספת תוכלו לעשות שימוש בכלים נוספים שכל אחד מהם מביא את היכולות שלו:

  • מפות חום: רוצים לדעת על מה המשתמש מסתכל? איפה הוא מתמקד במסך? איך הוא מטייל בעמוד? ClickTale ישמחו לעזור לכם בנושא.
  • היזון חוזר? בשוק כלי Feedback רבים, המאפשרים לכם לקבל סיוע בזמן אמת מהמשתמשים שלכם, מתלונות ועד להמלצות. בין הכלים המובילים: Kampyle, GetSatisfaction ו – uservoice. תוכלו להשתמש בכלים הללו גם כדי לתעדף תכונות חדשות במוצר בשיתוף הקהילה וגם כדי לייצר קהילת משתמשים מסביב למוצר.
  • רוצים לדעת מטריקות מדויקות עבור כל משתמש: totango של גיא נירפז תשמח לעזור לכם בקרוב.

ניטור סביבת הייצור: שתי משפחות מוצרי הניטור הנפוצות ביותר כיום בתחום האינטרנט (ולא רק לניטור של ה – CPU Utilization אלא גם כמה Signups לדקה יש במערכת) הם Nagios ו – Zabbix. המערכות הללו ידאגו שתתעוררו באמצע הלילה אם עשיתם שטויות במהלך היום…

ומה עכשיו?

בהנחה שאתם כבר יודעים מה האסטרטגיה שלכם וזאת בהחלט לא מילה גסה, כל מה שנותר עכשיו הוא לבחור את טקטיקת הפיתוח: איך אתם הולכים לפתח? איך אתם הולכים לבדוק? וכמה מהר המוצר יגיע ללקוחות שלכם. על השיטות הללו ובינהן SCRUM, Agile ו – Continuous Deployment נדבר בפוסטים הבאים.
.

השורה התחתונה

תבחרו את הכלים הטובים ביותר לאנשים שלכם כדי שברגע האמת הם לא ילחמו בידיים. עם זאת מומלץ להטמיע את המוצרים בהדרגה לפי רמת המיומנות של האנשים על מנת למנוע מצב שבו אתם מטמיעים כלים בלבד במקום לפתח.
.

משה קפלן

משה קפלן הוא מפתח ויזם. בשנים האחרונות הקים את חברת רוקטיר עם שותפים, סטארט אפ שהפך לחברה מובילה בתחום האצת ביצועים של מערכות תוכנה. בעל תואר ראשון בפיזיקה ומדמ"ח ותואר שני בהנדסה, לשעבר דירקטור בארגון הגריד הישראל ויועץ לסטארטאפים בנושאים שונים כגון חיבור תשתיות ותוכנה, כיצד להטמיע תהליכי פיתוח מתקדמים דוגמת SCRUM ו - Agile, כיצד לבחור טכנולוגיה וארכיטקטורה וכיצד לשלב את הטכנולוגיה עם הצרכים העסקיים.

הגב

17 תגובות על "כלי הפיתוח שאתם חייבים להכיר"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.

סידור לפי:   חדש | ישן | הכי מדורגים
רונן
Guest
בחרת נושא חשוב מאוד לדבר עליו וזה מצוין! לדעתי יש כמה הערות קטנות שרציתי להביע: 1. לוח מחיק עובדים איתו גם כשהכול עובד. הוא יכול לשקף עבודות נקודתיות ולתת מבט מהיר לצוות הפיתוח על המתרחש אצל כל אחד מהעובדים (אנחנו משתמשים בו בעיקר בתור לוח איטרציה בAGILE למשל). 2.Unit Tests זה דבר חשוב. לכתוב אותו אחרי שהקוד קיים זאת טעות בשימוש של בדיקות יחידה. אם רוצים להשתמש בהם נכון, צריך לכתוב בדיקות יחידה ומתוכן לממש את הקוד. אם סוף סוף ראש הצוות נזכר שצריך לבצע בדיקות יחידה אחרי שהקוד כתוב אז באמת חוזרים לתוכנית שלך. 3.השימוש בכלי MApReduce לביצוע אנליזות… Read more »
משה קפלן
Guest
שלום רונן, קודם כל תודה, ודבר שני הערות מצויינות 1. לגבי הלוח המחיק, אני בהחלט מסכים, אם מדובר על קבוצה קטנה במקום פיזי אחד זה פשוט, אם מדובר על משהו מורכב יותר, הרבה פעמים רוצים יכולת סינכרון ועדכונים בין אנשים שונים (לדוגמה במקרה של קבוצות וירטואליות). במקרה כזה צריך לוח מחיק שרץ על מחשב :-) 2. TDD, לצערנו מעט מדי עושים את זה בצורה הנכונה. 3. בד”כ לוגים של מאות גיגה (שממש קל להגיע אליהם אם שומרים כל פיפס), כבר תוקעים את בסיס הנתונים. 6-4. לשיטות העבודה אתה יותר ממוזמן לחכות לפוסטים הקרובים. לגבי האנשים, היו לי כבר כמה פוסטים… Read more »
יגאל
Guest

אחרי למעלה משנה שימוש ב-GIT ליותר מעשה פרויקטים, ממליץ עליו לכל מפתח קוד פתוח, הוא עובד מצויין גם בסביבת לינוקס וגם חלונות. כלי פשוט, נוח וקל לשימוש, אחד היחידים שבאמת שומר על הקוד שלכם, כלי שמצריך קצת שינוי תפיסה מכאלה שהתרגלו ל-SVN, אה ולינוס טורבלדס כתב אותו.

משה קפלן
Guest

יגאל,

תודה על ההמלצה, אתה לא היחיד, ואני חושב שגם מתכנתי קוד לא פתוח לא יסבלו יותר מדי :-)

ממשיכים לפתח,
משה קפלן

גלעד
Guest

כסטודנט שצריך לבחור כלי ניהול גרסאות לצורך פרוייקט, דווקא הייתי רוצה לשמוע יותר על GIT. הזכירו את הכלי בהרצאות, אך עיקר ההתמקדות הייתה ב-SVN ו-Mercurial.
אשמח לשמוע יותר על GIT, ועל השוואה (בעיקר בין GIT ל-Mercurial, ששניהם עובדים כניהול גרסאות ביזורי בניגוד ל-SVN הריכוזי) בין הכלים השונים מאנשי המקצוע המנוסים.
תודה, ושבוע טוב,
גלעד.

משה קפלן
Guest
שלום גלעד, כמו שכתבת, ההבדלים בין Git לבין Mercurial קטנים יחסית. לעומת ההבדלים בינם ל – SVN משמעותיים יחסית. למרות זאת במאמר מוסגר אני אומר שפרויקט האחרון שניהלתי, בחרנו לעשות שימוש בפתרון מבוסס SVN שהיה דומה מאוד למהותו לקונספט של Git (כל אחת מהמפתחים עובד על Branch משלו שאליו הוא מבצע Commit לכל אורך הדרך גם אם הפתרון לא יציב. רק לאחר שהתכונה החדשה או תיקון הקוד בשלים הם מאוחדים לתוך ה – Trunk). היתרון הגדול לצורה המבוזרת היא היכולת של כל מפתח לבנות לעצמו ארגז חול שבו הוא יכול להרוס את הקוד כאוות נפשו, ורק כשהעסק בשל להכניס את… Read more »
גלעד
Guest

תודה רבה! אני כנראה אלך על מע’ מבוזרת. כלומר git או mercurial.
בפוסט שפרסמת, דווקא נראה שיש עדיפות ל-mercurial (לפחות לטענת המחבר),
אבל git נפוצה יותר בארץ. אגב, בפוסט מוזכרת גם Bazaar, ומאחר שאנחנו עובדים ב-ubuntu, אולי כדאי לבדוק גם אותה. בכל מקרה, תודה! אני אבדוק את שתי (3?) האופציות…

ליאור קסוס
Guest

Redmind rocks
הזכרת מספר כלי ניהול משימות…
רדמיין היא כלי מדהים (מבוסס רובי) אשר מנהל משימות, וויקי וניהול קבצים פר פרויקט, אינטוגרציה מעולה לsource control – גיט וכדומה – אם היכולת לראות קומיטים ודיף וויזואלי על ההבדלים בין גרסאות.
אנו עובדים עם רדמיין כבר יותר מ3 שנים אפילו יצא לי להרצות על מספר פלאגינים מתקדמים שלו והשימוש שלנו בהם בדרופלקון בשיקאגו – מומלץ!

משה קפלן
Guest

תודה ליאור!

בהחלט כלי מעניין, וטוב לשמוע המלצה חמה (בד”כ אנשים נותנים למשפחות הכלים הללו מילים חמות אחרות : -). ההמלצה האישית שלי בנושא הזה היא BaseCamp.

ממשיכים לפתח,
משה קפלן
http://blogs.microsoft.co.il/blogs/vprnd

ליאור קסוס
Guest

sed s/redmind/redmine/
http://www.redmine.org/

ישי סמיט
Guest

בנוגע לcontinuous deployment כלים רלונטיים הם Apache ZooKeeper, Capistrano ן LinkedIn/Glu.
כלים כמו Puppet וChef הם עבור קונפיגורצית מכונות, הם לא דינמיים מספיק עבור CD. לא ניתן לבנות בעזרתם מערבת הגנה חיסונית גמישה מספיק לפריסה בקצבים גבוהים.

http://mevuzar.blogspot.com/

משה קפלן
Guest

שלום ישי,

תודה על העדכונים והתיקונים! ובכלל תודה על הדחיפה של הנושא הזה בארץ!
אגב הפודקאסט שנמצא בקישור יותר ממומלץ (ובכלל הפודקאסטים של רברסים מומלצים http://www.reversim.com)

ממשיכים לפתח
משה קפלן
http://blogs.microsoft.co.il/blogs/vprnd

Shay Davidoff
Guest

הכי פשוט…
תודה! :-)

משה קפלן
Guest

תודה לך שי,

ממשיכים לפתח,
משה קפלן
http://blogs.microsoft.co.il/blogs/vprnd

זהר ארד
Guest

גלעד, יש מידע על git, mercurial ו bazzar בפוסט הזה – http://www.newsgeek.co.il/distributed-source-control-systems-2/

כמו כן, יש מידע על מערכות ניהול פרוייקטים בפוסט הזה – http://www.newsgeek.co.il/project-management-systems/

משה, אחלה סקירה. ממצה ומאירת עיניים

משה קפלן
Guest

זהר, תודה,
פוסטים (ועבודה) מצויינים כרגיל,

ממשיכים לפתח,
משה קפלן
http://blogs.microsoft.co.il/blogs/vprnd

משה קפלן
Guest

אלו מסוג התגובות שאתה לא בטוח אם הן אמיתיות או פשוט SEO,

ניתן לך להנות מחמת הספק :-)

ממשיכים לפתח,
משה קפלן

wpDiscuz

תגיות לכתבה: