-
@אוריי אמר בתכנות | איך להתחיל?:
@davidnead אמר בתכנות | איך להתחיל?:
ממליץ על זה, ועל עוד כמה מאמרים מעניינים שמופיעים שם:
https://he.quora.com/אילו-כישורים-חסרים-לעיתים-למתכנתיםועוד משהו חשוב עוד יותר:
https://he.quora.com/עכשיו-כשכל-אחד-יכול-ללמוד-לתכנת-האם-זה2 הקישורים האלו חסומים בנטפריי
הנה הראשון:
אילו כישורים חסרים לעיתים למתכנתים שלומדים תכנות באופן עצמאי? מה צריך ללמוד מתכנת שלומד עצמאית כדי ליישר קו עם עמיתיו שלמדו תכנות באופן פורמלי?
- מתמטיקה (ברמה אקדמאית בסיסית).
מדעי המחשב, וכיוצא מזה, חלקים של הנדסת תוכנה (רוב העיסוק של מתכנתים בתעשיה) מבוססים על מתמטיקה. מתכנת שאינו מכיר את הבסיס של מתמטיקה אקדמאית עלול לא להבין שימושים של פונקציות מתמטיות בשפות תכנות שונות ואת סוג הבעיות שאפשר לפתור בעזרתן. - ידע של אלגוריתמים מוכרים.
ישנם הרבה בעיות, גם בפרקטיקה וגם בתיאוריה, שכבר נפתרו מזמן ובצורה אופטימאלית ע"י אלגוריתמים מתמטיים ולוגיים שאותם לומדים באקדמיה. זו לא חובה בהכרך להבין לעומק איך הם פועלים, או איך לכתוב אימפלמנתציה שלהם (כי אנשים אחרים כבר עשו את זה).
אבל כל מתכנת צריך לפחות להכיר את קיומם, ולהבין איזה סוג של בעיות הם פותרים. אחרת, אותו מתכנת עלול למצוא את עצמו מבזבז זמן יקר על לפתור בעיות מוכרות בעצמו, והוא כנראה יעשה זאת בצורה לא מאוד טובה או אופטימאלית.
מצד שני, לרוב קשה להגדיר מתכנתים שלמדו תיכנות באקדמיה בלבד (עם מעט מאוד פרקטיקה) כ-"יודעים תיכנות פורמלי". להפך, בדרך כלל הקוד שלהם נראה מבולגן, ופחות קריא מאשר אלו שלמדו באופן עצמאי ועבדו על פרויקטים בעולם האמיתי או בצורה עצמאית.
"תיכנות פורמלי" לומדים מסמכות פורמלית בעולם פיתוח התוכנה. סמכות זו הם אנשים מוכרים ובעלי נסיון רב בתעשיה של פיתוח תוכנה אשר בנו דברים משמעותיים במהלך הקריירה שלהם. הם כתבו ספרים המבוססים על הנסיון שלהם, וספרים אלו כדאי לקרוא למי שמעוניין ללמוד תיכנות בצורה פורמלית.
אנשים אלו, בדרך כלל, אינם נוטים להיות המרצה הטיפוסי במכללה או באוניברסיטה.
והנה השני:
יש טעות נפוצה שאנשים שמתחילים ללמוד לתכנת נופלים בה - הם חושבים שהקושי העיקרי בעבודה כמתכנת הוא התחביר, כתיבת הקוד עצמו. הם לומדים לתכנת לבד, בקורס מקצועי, או בקורס מבוא למדעי המחשב בתואר, ותוך כמה חודשים הם שולטים טוב בתחביר ויודעים לתכנת.
מהר מאד הם מגלים שיש עוד דברים - מבני נתונים, אלגוריתמים, פרדיגמות כמו ״מונחה עצמים״ או פונקציונלי. הם מבינים שבעצם התחביר הוא רק בסיס שמאפשר להם להשתמש באלגוריתמים ובפרדיגמות, ואז הם חושבים שזה הקושי העיקרי.
הם מתמידים, משתלטים על כל הנ״ל ומצליחים להגיע לעבודה מקצועית. במקרה הטוב כבר שם הם מגלים שכל מה שהם למדו הוא עדיין רק הבסיס, והקושי האמיתי במקצוע הזה הוא להבין מערכת מורכבת ולהשתלב בה מהר, לעבוד עם אנשים אחרים בצוות, לעבוד עם מנהלי מוצר שרוצים הכל אתמול, להתאים את העבודה שלך לסטנדרטים משתנים, להתממשק טוב לטכנולוגיות המובילות בתחומך, לדעת מתי להחליף טכנולוגיות, לדעת מתי לרוץ מהר ומתי להאט ולהזהר, להשתמש בתבניות מסויימות ולהמנע מאחרות, איך להעריך זמנים, איך לכתוב קוד קריא, איך לכתוב טסטים טובים, איך לסדר קוד מורכב בצורה שתהיה קל להבין ולתחזק, איך לפרוס קוד כדי שיעבוד ״בעולם האמיתי״… ועוד המון דברים שלוקח שנים באמת להבין לעומק.
העבודה של מתכנת (או לצורך העניין, ״מהנדס תוכנה״) הרבה יותר מורכבת מאשר תכנות. בגיל 12 תכנתתי משחקים, אבל רק אחרי גיל 30 כשכבר היו לי שני תארים וכמה שנות נסיון רק התחלתי ללמוד איך באמת להיות מהנדס תוכנה ולהצדיק את הטייטל ״בכיר״.
- מתמטיקה (ברמה אקדמאית בסיסית).
-
@davidnead אמר בתכנות | איך להתחיל?:
לדעת מתי להחליף טכנולוגיות
איך להעריך זמנים
איך לכתוב קוד קריא
איך לכתוב טסטים טובים
איך לסדר קוד מורכב בצורה שתהיה קל להבין ולתחזק.אוי כמה זה חסר (גם אצל אלו שלמדו באופן פורמאלי).
-
@אוריי אמר בתכנות | איך להתחיל?:
@magicode אמר בתכנות | איך להתחיל?:
מטרה של להיות מתכנת זה לא נחשב מטרה לדעתי.
עד עכשיו שתקתי.. אבל על המשפט הזה אני חולק מכל וכל!!!!
אני בניתי כבר כמה פרויקטים גדולים באקסס וכן אלפי שורות קוד ב vba כו' ועוד כמה פרויקטים קטנים ב#C וחשבתי (לתומי) להיתמר כמתכנת (לפחות של vba) והרי כבר עשיתי פרויקטים ... למה לא!!
אולם לאחר ש @dovid עשה לי שטיפת מוח בנידון והסביר לי מהו מתכנת אני לא רק חושב אלא בטוח שאם לא יהיה לך מטרה להיות מתכנת לא תגיע לשם לעולם אתה תבנה מלא דברים אבל כאשר תגיע לתקלות ... לא נעים.. אבל לא תמצא ידיים ורגלים בכלל (מניסיון!).בקיצור נמרץ מתכנת הוא אחד שיודע לבנות קוד נכון (כלומר ליצור שגיאות לכל מהלך לא נכון של המשתמש בצורה הכי מיטבית) וכן לקרוא קוד נכון לא משנה באיזה צורה המתכנת הקודם כתב.
ולא רק להעתיק או לכתוב כל מיני שורות למיניהם שאתה איכשהו זוכר זה יביא אותך במקסימום לאיזו שהיא תוכנה עובדת שאתה מתפלל כל דקה שלא יצוצו לך תקלות .. שיכניסו אותך לאי נעימות.בדרך אגב לגבי האנגלית ברור שרצוי שתלמד אנגלית (אם יש כח זה בוודאי מוסיף) אבל אני אישית בכל אופן חוץ מאותיות ולקרוא איכשהו בלי להבין כמעט מילה ב"ה אני מסתדר היטב.
מה שנשאר לאחל לך הוא בהצלחה!!!
ואל תהסס לשאול כאן בפורום מניסיון שלי .... החברה כאן מאוד אוהבים לעזור...כנראה שאני לא מתכנת לפי כל הכללים שלך.
אבל זה לא מעניין אותי כי אין לי מטרה כזאת.
יש לי מטרה לעשות את מה שאני רוצה ואני די חושב שבסיעתא דשמיא די הצלחתי לעשות כמה דברים. -
-