לינוקס לפלאפון- Ubuntu Touch

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

להמשיך לקרוא לינוקס לפלאפון- Ubuntu Touch

רשימת הבלוגים בנושאי תוכנה בעברית

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

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

או שסתם ראיתם כבר כל כך הרבה בלוגים, שאתם כבר לא זוכרים להתעדכן מול כולם.

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

פשוט, ומדהים.

אז הנה הRSS Feeds שאני עוקב אחרים, ואשמח כמובן להמלצות נוספות!

בלוגים מומלצים בעברית

חיפוש עבודה

תשתיות

Windows

לינוקס

תכנות

תוכנה

מתמטיקה

  • לא מדויק: – "There's no sense in being precise when you don't even know what you're talking about" (rss).

האקינג

WordPress

מדע

קוד פתוח

חדשות טכנולוגיה

  • TGspot: דף הבית | TGspot (rss).
  • כלכליסט – טכנולוגי: חדשות מחשבים, אינטרנט, סלולר וטכנולוגיה – כלכליסט טכנולוגי (rss).
  • Geektime גיקטיים: גיקטיים | חדשות, עדכונים וכתבות על טכנולוגיה, אינטרנט וסטארטאפים. (rss).
  • HWzone: • מדברים טכנולוגיה • הכל על מחשבים, אינטרנט והעולם הדגיטלי (rss).
        <h3>בקשה אישית ממני!</h3>       
    <p>אחרי שמיינתי את כל הבלוגים שאני עוקב אחריהם כדי להציג אותם פה בצורה מסודרת, גיליתי שאיבדתי כמה בלוגים בדרך, כנראה בגלל חיבור אינטרנט חלש או משהו.<br />אני אשמח לכל בלוג חדש שתרשמו פה, כפיצוי על רשימת בלוגים שאספתי במשך שנים.<br />אני כמובן אוסיף לפה את הבלוגים שתביאו לי.

לא על הציון לבדו יחיה הסטודנט

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

השאלה היא, האם זוהי ההצלחה האמיתית?

הגדרת המטרה

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

ולכן, כל סטודנט למדעי המחשב צריך לשאול את עצמו:

מה המטרה שלי?
בשביל מה הוא נרשמתי ללימודים?
האם אני מתקדם לעבר המטרה?

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

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

המטרה: תעשיית ההיי-טק

אז מה הם האמצעים הנוספים כדי להתקדם בתחום ההיי-טק?

נסיון מעשי

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

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

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

קשרים

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

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

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

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

ציונים

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

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

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

ונקווה שעם קצת תוספת מזל נתראה במהרה ב'צרות בהייטק'.

פודקאסטים בעברית למתכנתים

פודקאסט (באנגלית: Podcast; על פי החלטות האקדמיה ללשון העברית: הֶסְכֵּת) הוא מעין תוכנית רדיו או טלוויזיה, המופצים באינטרנט באמצעות מנוי חינמי או בתשלום, וניתן להאזין להם בכל זמן ובכל מקום (Radio-On-Demand).

ויקיפדיה

לא תמיד אנחנו מרוכזים בהתפתחות מקצועית, או יש לנו כוח לקרוא איזה ספר מקצועי או לבצע איזה פרויקט. אבל לפעמים יש לנו זמן פנוי, בנסיעות וכד', שאנחנו מרגישים שאנחנו רוצים לשמוע משהו שיקדם אותנו בחיים, בזמן הריק של הנסיעה. פודקאסט נותן לנו הזדמנות מצוינת להתפתח מקצועית ולהכיר את התעשייה שאנחנו נכנסים אליה. כל אחד מהפודקאסטים פה מתמקד בתחום טיפה שונה, כמו שתראו, וביחד הם עוזרים לנו להכיר את השפה, הטכנולוגיות וההתמודדויות של תעשיית התוכנה.
        <h3><a href="https://www.ranlevi.com/software/" target="_blank">עושים תוכנה</a></h3>        
    <p>אני מציג את הפודקאסט הזה ראשון, בגלל שלדעתי, כסטודנטים הוא הכי מתאים לנו. הפודקאסט <strong>עושים תוכנה</strong> מבית <a href="https://www.ranlevi.com/" target="_blank" rel="noopener">עושים הסטוריה</a>, נכנס בצורה מאוד קלה לנושאים שונים בעולם התוכנה, ומקפיד מאוד לדבר בשפה ברורה ולהסביר גם למי שבכלל לא מכיר את הנושא.</p>     
                                    <img width="660" height="660" src="https://baruchiro.files.wordpress.com/2019/09/efdc9-31960049_1808646542764152_4551425067463999488_o.jpg?w=1024&h=1024" alt="" srcset="https://i1.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/31960049_1808646542764152_4551425067463999488_o.jpg?resize=1024%2C1024&amp;ssl=1 1024w, https://i1.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/31960049_1808646542764152_4551425067463999488_o.jpg?resize=150%2C150&amp;ssl=1 150w, https://i1.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/31960049_1808646542764152_4551425067463999488_o.jpg?resize=300%2C300&amp;ssl=1 300w, https://i1.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/31960049_1808646542764152_4551425067463999488_o.jpg?resize=768%2C768&amp;ssl=1 768w, https://i1.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/31960049_1808646542764152_4551425067463999488_o.jpg?w=1400&amp;ssl=1 1400w, https://i1.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/31960049_1808646542764152_4551425067463999488_o.jpg?w=1320&amp;ssl=1 1320w" sizes="(max-width: 660px) 100vw, 660px" />                                            
        <a href="https://www.facebook.com/groups/making.software/" target="_blank" role="button">
                    קבוצת הפייסבוק
                </a>
        <h3><a href="http://notarbut.co/" target="_blank">מפתחים חסרי תרבות</a></h3>        
    <p>בפודקאסט הזה, שאותו מנחים שני ראשי צוותי פיתוח, מראיינים אנשים מגוונים מהתעשייה, או מדברים על נושאים שונים, שכולם קשורים ומשפיעים על <strong>תרבות הפיתוח</strong> בחברה.<br />איך גורמים למפתח לקחת אחריות על הבאגים שלו? איך עוזרים למפתח להרגיש שהוא מתקדם? ועוד...<br />כשאנחנו מקשיבים לפודקאסט הזה אנחנו קולטים את התמודדיות היום-יומיות של אנשי התוכנה, שלא בהכרח קשורים ליעילות של מיון בועות.</p>       
                                    <img width="660" height="660" src="https://baruchiro.files.wordpress.com/2019/09/16d0e-16797094_1285724654826393_324378325635097549_o.png?w=1024&h=1024" alt="" srcset="https://i2.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/16797094_1285724654826393_324378325635097549_o.png?resize=1024%2C1024&amp;ssl=1 1024w, https://i2.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/16797094_1285724654826393_324378325635097549_o.png?resize=150%2C150&amp;ssl=1 150w, https://i2.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/16797094_1285724654826393_324378325635097549_o.png?resize=300%2C300&amp;ssl=1 300w, https://i2.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/16797094_1285724654826393_324378325635097549_o.png?resize=768%2C768&amp;ssl=1 768w, https://i2.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/16797094_1285724654826393_324378325635097549_o.png?w=1320&amp;ssl=1 1320w" sizes="(max-width: 660px) 100vw, 660px" />                                          
        <a href="https://www.facebook.com/notarbutpodcast/" target="_blank" role="button">
                    קבוצת הפייסבוק
                </a>
        <h3><a href="https://www.reversim.com/" target="_blank">רברס עם פלטפורמה</a></h3>       
    <p>פודקאסט ותיק מאוד. קבוצת הפייסבוק אמנם כמעט לא פעילה, אבל עיקר הפעילות של הפודקאסט כיום היא סביב <a href="https://summit2019.reversim.com/" target="_blank" rel="noopener">כנס רברסים</a>, כנס מרכזי של הרצאות מקצועיות במגוון נושאים שקשורים לפיתוח.<br />ההרצאות מוקלטות ומשודרות אחר כך בפודקאסט, כך שלמרות שהנושאים בפודקאסט הם מתקדמים יחסית, ההרצאות מהכנס מגוונות מאוד ויש שם דברים נפלאים.</p>       
        <p><a href="http://www.binpress.com/" target="_blank">הלוגו באדיבות אדם בניון</a></p>       
                                    <img width="300" height="141" src="https://baruchiro.files.wordpress.com/2019/09/36eee-reversim-logo-white.png" alt="" />                                         
        <a href="https://www.facebook.com/notarbutpodcast/" target="_blank" role="button">
                    קבוצת הפייסבוק
                </a>
        <h3><a href="http://www.unsupervised-podcast.xyz/" target="_blank">UNSUPERVISED</a></h3>        
    <p>פודקאסט בנושא Data Science. כמו בפודקאסטים הקודמים, גם אם כרגע אנחנו לא מדעני נתונים, בהקשבה לפודקאסט אנחנו לומדים את השפה, ומבינים את האתגרים שאיתם אנשי הנתונים מתמודדים.<br />אני כבר לא מקשיב לפודקאסט הזה, אבל הספקתי ללמוד ממנו כמה דברים,אז מומלץ ביותר למי שמתעניין בתחום!</p>       
                                    <img width="660" height="660" src="https://baruchiro.files.wordpress.com/2019/09/4420b-22550346_472650739771870_6936595264954083591_o.jpg" alt="" srcset="https://i0.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/22550346_472650739771870_6936595264954083591_o.jpg?w=961&amp;ssl=1 961w, https://i0.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/22550346_472650739771870_6936595264954083591_o.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/22550346_472650739771870_6936595264954083591_o.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.bcsstudent.com/wp-content/uploads/2019/03/22550346_472650739771870_6936595264954083591_o.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="(max-width: 660px) 100vw, 660px" />                                         
        <h2>אפליקציות פודקאסט מומלצות</h2>      
                <ul>
                        <li >
                <a href="https://play.google.com/store/apps/details?id=mobi.beyondpod" target="_blank">                     
                                    BeyondPod (אנדרואיד)
                                        </a>
                                </li>
                            <li >
                <a href="https://itunes.apple.com/us/app/podcasts/" target="_blank">                        
                                    iTunes (אפל)
                                        </a>
                                </li>
                            <li >
                <a href="https://open.spotify.com/genre/podcasts-page" target="_blank">                     
                                    Spotify (כל הפלטפורמות)
                                        </a>
                                </li>
                    </ul>

כלים בחינם לסטודנטים

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

JetBrains- סביבות פיתוח


חברת JetBrains היא יצרנית של סביבות פיתוח. היא מפתחת את אנדרואיד סטודיו שהרבה מכירים, וגם את Intellij IDEA, PyCharm, Resharper ועוד. לחלק מהסביבות יש גרסה חינמית, ולחלק לא, אבל בתור סטודנטים אנחנו מקבלים הכל בחינם.



Github Student Pack


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



Microsoft Azure


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

                                    <img width="660" height="1" src="https://www.bcsstudent.com/wp-content/uploads/2019/03/Microsoft-Azure.svg" alt="" />                                           
        <h3><a href="https://aws.amazon.com/education/awseducate/" target="_blank">Amazon AWS</a></h3>      
    <p>עוד ספק של שירותי ענן. בעקרון שירותי הענן הם מתחרים, לכן לרובם יש תכונות דומות. בAWS יש הרבה שימוש במכונות וירטואליות, ותוכלו להרים לעצמכם מחשב לינוקס מרוחק, אם למשל אתם רוצים להריץ קוד לאורך זמן בלי הפסקה.</p>       
                                    <img width="660" height="1" src="https://www.bcsstudent.com/wp-content/uploads/2019/03/AWS-General_AWS-Cloud_light-bg.svg" alt="" />                                            
        <h3>רשימות נוספות של כלים בחינם</h3>        
                <ul>
                        <li >
                <a href="https://education.github.com/pack" target="_blank">                        
                                    החבילה של Github
                                        </a>
                                </li>
                            <li >
                <a href="https://github.com/AchoArnold/discount-for-student-dev" target="_blank">                       
                                    רשימה מתעדכנת של כלים
                                        </a>
                                </li>
                    </ul>

מה כדאי לסטודנט לדעת – Docker

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

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

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

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

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

מקווה שעד סוף הפוסט תבינו את הקשר ותבינו למה כל פוסט על Docker חייב לכלול תמונה של מכולות.

אז, מה זה Docker?

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

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

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

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

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

למה זה מועיל

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

לכן, אני אתן כמה מקרים שבהם ניתן לראות את היתרונות של Docker:

  • סביבה אחידה:
    כאשר אנחנו כותבים תוכנה, הרבה פעמים יש לה תלויות שנדרשות, כמו מסד נתונים מותקן, מערכת הפעלה מסוימת, גרסת סביבת ההרצה וכד'. אם אנחנו מספקים Dockerfile, שהוא קובץ שמגדיר לDocker איך לבנות את הסביבה, כל מי שמריץ את התוכנה לא יצטרך להתמודד עם הדרישות הללו.
    זה משפיע על המתכנתים, שכשהם בודקים את הקוד שהם כתבו, הם יודעים שהם לא מסתמכים על דברים שנמצאים רק בסביבת העבודה שלהם.
    בנוסף, זה משפיע על הבדיקות, כך שכדי לתמוך בגרסאות שונות של מסדי נתונים וכד', כל מה שצריך לעשות הוא להגדיר Dockerים עבור כל מקרה, ולהריץ את אותה בדיקה כל פעם בסביבה אחרת.
    וכמובן, הלקוחות, ברמה כזאת שאם התוכנה שלנו רצה על לינוקס, הלקוח יכול להשתמש בDocker כדי להריץ תוכנות לינוקס על שרתי Windows שיש לו בחברה, והוא לא צריך להתעסק בהקמת סביבה תומכת לתוכנה וכל מיני תוכנות צד שלישי שנדרשות, כי הכל מסופק לו בקובץ הDocker יחד עם התוכנה.
  • הקצאת משאבים לפי צורך:
    בגלל שההרצה של Docker היא בעצם תהליך של מערכת ההפעלה, מערכת ההפעלה מקצה לו משאבים בהתאם לצורך ולעומס על מערכת ההפעלה.
    נניח שיש לנו למשל אתר שצורך 4GB RAM ביום, חוץ מפעם בשבוע כשיש מבצע באתר, ואז הוא צורך 8GB RAM. אם היינו מאחסנים אותו במכונה וירטואלית בענן, היינו צריכים להקצות לו מראש את כמות הRAM המקסימלית שהוא דורש. אבל מכיוון שאנחנו מריצים אותו מעל Docker, נוכל להגדיר לשירות הענן שכאשר יש עומס, רק אז יקצה עוד משאבים.
    מקרה דומה הוא בעולם הMicroservices, כאשר יש לנו שירות שמבצע פעולה מסוימת, למשל הורדה של המון נתונים ממקום מרוחק כלשהו. השירות מוריד את הנתונים לתוך תיקייה בדיסק. כאשר אנחנו משתמשים בDocker, ומגיעים למצב שהשירות לא עומד בעומס, נוכל בקלות להרים עוד מופע של השירות, ולא תהיה התנגשות מכיוון שכל המופעים מורידים את המידע לאותה תיקייה, אבל כל אחד מהם הוא סביבה נפרדת, אז אלו לא באמת אותם תיקיות שבשרת.

מקורות:

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

השגרה – האתגר שכולנו שוכחים

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

השגרה

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

איפה זה פוגש אותנו?

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

כתיבת בלוג (משימה אישית)

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

עבודה ולימודים

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

מה עושים?

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

התמודדות

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

הצלחות קטנות

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

התקדמות

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

אז לסיכום

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

מושגים

  • podcast– עדיין אין פירוט למושג הזה.
  • refactor– עדיין אין פירוט למושג הזה.

אוטומציה וקוד פתוח לבלוג

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

קוד פתוח

הבלוג הזה נבנה על מערכת WordPress. השתמשתי בתוסף שמסנכרן את הפוסטים עם Github, לשני הכיוונים. כלומר, כשמעדכנים פוסט באתר, הוא מתעדכן אוטומטית בGithub, וכשמעדכנים פוסט בGithub הוא מעדכן מיד את הבלוג. לכן מעכשיו נגמרו התירוצים. כל הבלוג זמין פה- https://github.com/baruchiro/BcsStudent. בנוסף, בכל פוסט יש קישור לעריכת הפוסט. בכך שהעתקתי את כל הפוסטים לGithub, אנחנו יכולים יותר בקלות, במקום הנוח המוכר, לעבוד עליהם ביחד. (אם Github הוא לא מקום נוח ומוכר לכם, כדאי לכם להכיר אותו. יש פוסטים- git וקוד פתוח, ואני פה כדי לעזור.)

אוטומציה

רציתי אפשרות לסמן מושגים בכל פוסט, ולהציג רשימה שלהם בתחתית הפוסט, וגם לרכז רשימה בדף נפרד. מערכת WordPress כתובה בשפת php, שהיא שפה שאני לא ממש מכיר, ובנוסף, מכיוון שמדובר בFramework, יש צורך ללמוד איך הFramework מתנהג, בנוסף ללימוד השפה. אז נכון, בתור מפתחים אנחנו לא מפחדים משפות וframeworkים חדשים, במיוחד שמדובר במערכת שנמצאת בשליש מאתרי האינטרנט בעולם. אבל מה שכן היה חסר לי, זה זמן. לכן, כשראיתי שאני לא מספיק ללמוד איך לבצע את מה שאני רוצה בעזרת WordPress & PHP, ניצלתי את העובדה שכל הפוסטים נמצאים גם כטקסט בgithub, ואני יכול לבצע עליהם מניפולציה בדרכים שאני כבר מכיר. אז זהו, יש קוד בPython שאוסף את כל המושגים ומציג אותם פה בתחתית, וגם בדף הנפרד. הקוד כתוב לא בצורה הכי נקייה, אז אתם מוזמנים להציע עריכות משלכם, או ללכת לפי הIssues שפתוחים בgithub.

מושגים

  • wordpress– עדיין אין פירוט למושג הזה.
  • GitHub– גִיטהָאבּ הוא אתר לשיתוף קוד שמתבסס על תוכנת גיט.
  • framework– עדיין אין פירוט למושג הזה.

פרויקט גמר – תכנון

בפוסטים של פרויקט גמר אני אשתף בתהליך שאני ומני (השותף) עוברים במהלך העבודה על הפרויקט.

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

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

מערכת ההמלצות

מערכת ההמלצות שאנחנו נכין תהיה מבוססת אלגוריתם Machine Learning (למידה חישובית- ML). אלגוריתמי ML הם אלגוריתמים חישוביים שמתבססים על מידע קיים- מחשבים מסוימים שידוע שמתאימים לאנשים מסוימים (במקרה שלנו), ויודעים להגיד לנו:

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

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

איסוף מידע

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

התוכנה

מטרה

התוכנה צריכה להיות חוצת פלטפורמות (Cross Platform), כלומר, רצה על כל מערכת הפעלה (או לפחות שלושת המערכות העיקריות למחשבים- Windows, Linux, iOS) כדי למנוע כמה שאפשר את הסטייה של הנתונים. אם המערכת שלנו תכיר רק מחשבי Windows, היא תמליץ רק על המחשבים האלו, וייקח זמן עד שגם מחשבים של Apple ייכנסו למערכת.

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

שפת תכנות

אנחנו מכירים 2 שפות שיכולות להתקמפל ל3 מערכות ההפעלה- Python & C#.NET Core.
בדקנו קודם כל את c# כי זאת שפה שאני מכיר טוב, וראינו שאין תמיכה עדיין בקריאת מפרט המחשב.

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

אז עברנו לאופציה השנייה- Python. בעזרת כלי שנקרא PyInstaller, ניתן ליצור מקוד פייתון קובץ הרצה עבור כל מערכת הפעלה. בנוסף, בפייתון יש כמה ספריות שעוזרות לנו לקבל את המידע על מפרט המחשב.

ממשק משתמש

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

ואז חשבנו, שהFront-end הכי נפוץ, שכולם משתמשים בו בגלל מערכת הפעלה הוא הWeb!
או בעברית, הצגת מסמך HTML & JS באמצעות הדפדפן, שאת זה כמובן יש לכל מחשב.

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

הסקר

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

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

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

אם השאלון עושה בעיות, נשמח אם תענו עליו כאן.

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

מה כדאי לסטודנט לדעת- קוד פתוח

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

ויקיפדיה:

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

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

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

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

מה

אז מה זה קוד פתוח?

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

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

הקהילה

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

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

אז איך החברה מרוויחה כסף?

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

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

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

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

אני חושב על ארבעה סיבות עיקריותף מוזמנים לשתף אותנו בעוד סיבות:

  • חשיפה לקוד מקצועי
  • עבודה בצוות
  • השתלבות בקהילה
  • קורות חיים

חשיפה לקוד מקצועי

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

עבודה בצוות

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

השתלבות בקהילה

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

קורות חיים

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

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

איך

אז עשיתי חשק? מעולה! איך מתחילים?

רוב פרויקטי הקוד הפתוח מתנהלים בעזרת Git, שלמזלנו אנחנו כבר יודעים איך להשתמש בתוכנה.

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

  • מודעות
  • השתתפות
  • יוזמה

מודעות

ראיתי הרבה שמייעצים לבחור פרויקט, להחליט על משהו, לשאול אנשים וכו'. אלו עצות טובות ואני ארחיב עליהם מיד, אבל אני מעדיף להתחיל ממה שאותי אישית מוביל יותר ויותר לתרומה של קוד פתוח.

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

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

השתתפות

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

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

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

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

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

יוזמה

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

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

קישורים

  • Github הוא האתר הנפוץ ביותר לאחסון, שיתוף ועבודה על פרויקטים בקוד פתוח.
  • רשיונות– אמנם הקוד הוא פתוח, אבל יש רמות שונות של פתיחות. אחרי הכל, אני אשמח לשתף את הקוד שלי, אבל לא כדי שמתחרה שלי ינצל את זה כדי למכור את המוצר שלי בזול יותר. Github מציעים דף נחמד שעוזר לנו לבחור את הרשיון המתאים לנו.
  • up-for-grabs היא תגית נפוצה לדיונים, באגים ופיצ'רים שמתאימים למפתחים שרוצים להיכנס לקוד.
  • המקור היא עמותה ישראלית לקידום קוד פתוח. הם מקיימים מפגשים (Meetup) לקהילה ועוזרים לסטודנטים כמונו (ולא רק) להיכנס לעולם הקוד הפתוח.
  • למה לי קוד פתוח עכשיו– פרק של הפודקאסט המומלץ מפתחים חסרי תרבות על קוד פתוח.
  • איך להתחיל בעולם הקוד הפתוח– פרק של הפודקאסט עושים תוכנה על כניסה לקוד פתוח.