הסבר

מהו הפרוייקט?
אאור שרף, הוא SonOfLilit, מקים בימים אלה קבוצת לימוד לתכנות שתפעל דרך האינטרנט דרך ויקי ומערכות אחרות ותשים דגש:
 * בצד הטכני - על הכרת המחשב דרך תכנות למחשבים עתיקים, פיתוח הרגלים טובים דרך תכנות למחשבים מוגבלי-משאבים, לימוד גוון רחב ככל האפשר של נושאים ותחומים במחשוב מודרני (מעשיים ותיאורטיים).
 * בצד המעשי - על עבודה יצרנית עם הכלים והשיטות הנמצאים בשימוש בתעשייה ובצוות.
 * בצד הלימודי - על עבודה יחד במבני עבודה שונים ועל תחרותיות חברותית ותכנות למטרת הנאה.

כיצד יתנהל הפרוייקט?

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

מה יש לעשות כדי להשתתף?
צריך פשוט להודיע שמעוניינים בכך (יש לזה מקום בויקי: נרשמים), להשתתף ולשלוח את התרגילים.

מה צריך כדי להשתתף?

 * מחשב מקושר לאינטרנט. אם הוא ישן במיוחד או בעל הגבלות מיוחדות (מערכת הפעלה שאינה חלונות או לינוקס, למשל) יש צורך לציין זאת בהערה בתחתית דף ההרשמה וידאגו שכולם יוכלו להריץ כל כלי שנלמד איתו או אותו.
 * הבנה בסיסית של אנגלית. נא לציין אם אינך קורא\ת אנגלית שוטפת בדף ההרשמה.

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

ואם יש לי בגרויות?
גם למנחה יש. והוא צריך להשקיע בזה הרבה יותר. אל דאגה, המשתתפים לא יידרשו ליותר משהם מסוגלים להשקיע.

למה לא צ'אט?
מערכת הויקי נבחרה כבסיס כי היא הטובה ביותר להשיג את המטרות של הפרוייקט. אם לדעתכם יש מערכת טובה יותר, אתם מוזמנים לדון בה כאן: בחירת_מערכת_בסיסית. למרות שהויקי יהווה את הבסיס לפרוייקט, ייעשה שימוש בהרבה מערכות אחרות (כמו צ'אט, מסרים מיידיים, אימייל, הקלטות קול ו\או וידאו (אולי), טלפון, מפגש פנים אל פנים (אולי) וכלים שנועדו לתכנות בקבוצות).

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

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

נתקלתי [SonOfLilit] בזה בהמון מקומות. לדעתי הסיבה לכך היא כפולה:
 * 1) הכרה טובה יותר של המערכת שמתכנתים בגלל עבודה ברמה נמוכה יותר (קרובה יותר לשפת מכונה)
 * 2) הרגלי חשיבה טובים שנרכשים בגלל הצורך התמידי לחסוך במשאבים כמו זכרון וזמן חישוב ולכן הצורך לעשות דברים טוב יותר

הפרוייקט הזה מנסה להכניס את הלומדים לסביבה בה ייאלצו להתמודד עם שני הגורמים המוזכרים ולבדוק האם באמת יתכנתו טוב יותר בגלל זה. אין לי אף ספק שכן, ורבים מסכימים אתי.

תכנות, לא שפת תכנות
לימוד תכנות היום מתרכז לרוב סביב לימוד שפת תכנות. במקום להתמקד בתחביר של שפה מסויימת, אני אנסה ללמד תכנות באופן כללי, מכל הזוויות.

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

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

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

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

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

שאלות?
הוסיפו כאן שאלות הקשורות לנושא (דרך

Edit

) ואענה בהקדם.