התמקצעות טכנולוגית

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

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

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

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

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

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

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

עוד חומר למחשבה

8 מחשבות על “התמקצעות טכנולוגית

  1. שניר דוד

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

  2. דורון

    שתי האגורות שלי .. או 2 הערות ..

    נתחיל עם זה שאתה צודק . ונעבור להערות:

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

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

    – אופק

  3. ik_5 מאת

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

  4. artyom

    אני הייתי מנסה לנסח את הכל טיפה אחרת:

    1. מפתח טוב חייב להיות רחב אופקים: להכיר טכנולוגיות החל משפות סקריפטים משפוטות עד מורכבות עד לידע בתחום assembly. אבל הוא צריך את הדברים ברמה של הכרות.
    2. הוא צריך לפחות תחום אחד או שניים של התמקצעות. מדוע? כי אפשר להתחיל להשתמש בכל טכנולוגיה תוך מספר ימים עד שבועות. אבל כדי להוציא ממנה את המירב אתה צריך לעבוד איתה לפחות שנה ־שנתיים. אחרת אתה תכתוב קוד גרוע.

    למשל, אני מכיר באופן שיטחי את Python, PHP וטיפה perl, אני מכיר ברמה מוגבלת Pascal ויודע לא רע שפות סקריפטים, matlab ועוד כמה כלים. אבל אני **יודע** בכל מובן המילה שפת C וגם יודע ברמה *טובה* שפת ++C, מה שמאפשר לי לכתוב קוד טוב בשפות האלה.

    אי אפשר ללמוד 10 טכנולגויות וגם ללמוד להשתמש בהם בצורה טובה — כי אדם הוא לא ייצור על.

    0.05₪ שלי

  5. Omer Zak

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

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

  6. Jabka Atu

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

    האמת אני ממש לא מבין איך אתה ואחרים וטובים אחרים מצליחים לשלוט בכל כך הרבה כלים – לדוגמה אני מאמין שאני מתחיל להבין חלקים קטנים משפת C שימוש ב posix (ככל שאני חופר בנושא מסויים אני מבין שאני צריך ללמוד עוד המון) למרות שאיפילו לא גירדתי את קצה הקרחון בנושאים שבאמת מעניינים אותי (Facial Recognition , שבבים תוך גופיים שמעבדים אותות וכו'…)

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

  7. Shlomi Fish

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

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

    יואל על תוכנה מתאר את התופעה הזאת כאן –

    http://www.joelonsoftware.com/articles/LordPalmerston.html

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

    כך ששני הצדדים צודקים כאן.

  8. ik_5 מאת

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

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

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

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s