אני מניח שבתקופה האחרונה יצא לך לקרוא או לפחות לשמוע את המושג Full Stack Developer מלא פעמים. נכון, סיכוי גבוה שאחד מהחבר'ה שלך שחי בעולם ההייטק כבר יודע מה זה אומר וכנראה שמעולם לא היה לך את האומץ לשאול אותו (כי בתוך תוכך אתה יודע שככל הנראה לא תהיה לו סבלנות להסביר מה זה בכלל).
מה התפקיד הזה בכלל אומר? קודם כל, וחשוב שתדע זאת, סיכוי די גבוה שבכל מקום, משרד או חברה התפקיד יוגדר בצורה מעט שונה, כפי שקורה המון פעמים בתעשיית ההייטק. אבל בגדול? תפקידו של מפתח ה-Full Stack הוא להכיר ולבצע את כל תכנות ה-WEB מא' ועד ת'.
מפתח Full Stack מכיר את כל שכבות התוכנה, הן מצד השרת והן מצד הלקוח. כלומר, הוא צריך לדעת מספר שפות וטכנולוגיות בשביל שיוכל להתמודד עם סוגי הפיתוח השונים שהוא יצטרך לתכנת ולבצע בכל יום.
להכיר את שני הצדדים
כנראה שאחד ההסברים הטובים ביותר, גם לאלה שהם לא מבינים שום דבר בעולם ההייטק, הוא לקרוא למפתח Full Stack: "נו, האלה שעושים גם וגם". אז מה זה בעצם "גם וגם"? כל אחד שנכנס לתחום למעשה יצטרך להכיר ולהתמקצע בצורה הטובה ביותר הן מבחינת Front End והן מבחינת Back End.
אז בואו ונחשוב על זה בצורה הפשוטה ביותר, הדפדפן שאנחנו משתמשים בו, לא משנה אם זה כרום, פיירפוקס או אקספלורר (אם קיימים אנשים שעדיין משתמשים בו בכלל) הוא המקום בו אנחנו "יוצרים קשר" עם השרת, הדפדפן מרכיב את כל הקודים, השפות וכו' שהשרת "שלח" לו לעמוד שאנחנו רואים בפועל.
כל אותם נתונים מורכבים משורות קודים שונות, לא משנה באיזו שפה זה יהיה, הם יכולים להכיל תוכן, מיקרו-קופי, לינקים, תמונות, הנעות לפעולה וכל דבר אחר, נכון כשאנשים לא מהתחום יביטו בתכנות שלהם וזה ייראה כמו סינית בשבילם, אבל ברגע שקצת מכירים את העולם, ניתן (כמעט) בקלות לדעת כבר מה הולך שם.
אז בגדול, כבר פחות או יותר הבנת מהו פרויקט WEB ומה נדרש בשביל זה. עכשיו אפרט מעט על שני התפקידים השונים, מפתח Front End, שניתן לקרוא לו גם צד מפתח לקוח, הוא אותו אחד שנוגע בכל המערכות והשינויים שקשורים לדפדפן. תפקידו בגדול הוא לוודא שמערכת האתר ושחווית וממשק המשתמש יעבדו כמו שצריך, אני בעצמי מתוסכל עדיין מכמות הפעמים שאני צריך לחפש באתר של פיצרייה את הכפתור 'הזמנת פיצה'. זאת אומרת, דמיינו לכם שבנו אתר שלם, אבל רק דברים "קטנטנים", כמו חווית משתמש, יכולים לגרום לגולשים לנטוש אותו (ולא לחזור אליו ככל הנראה).
אבל זה לא נגמר פה, התאמת האתר לממשקים שונים (מובייל, טאבלטים, דפדפנים שונים), הגלישה וכניסה לכל העמודים זה חלק בלתי נפרד מהעבודה שלו, אני כבר בטוח שקרה לך לפחות פעם אחת שנכנסת לאיזשהו עמוד דרך הטלפון ו.... זה פשוט לא עבד, מה שבאמת יכול לפגוע באותו בית עסק או נותן שירות.
ומה תפקידו של ה- Back End? תפקידו הראשי הוא לכתוב שפות שרתים שונות ולפתח אותו, הוא מצידו מוודא שכל ענייני השרתים עומדים כמו שצריך. במידה ולא יעשה זאת, כל האתר והמערכות שלו עלולות לקרוס. מלבד זה עליו לעבוד מאחורי הקלעים ולדאוג שהכל עובד כשורה בענייני השרתים וכו'. הוא צריך לדאוג לכל הדאטה והשרתים וגם לדברים שמפתח ה-Front End דורש ממנו. בנוסף לכך, מפתח הבק אנד צריך לבנות מערכות, מערכות שונות, API וכו'.
חלק נוסף, שהוא גם בלתי נפרד מכל מפתח Back End הוא ביצוע בדיקות הבאגים לאתר. שידע שהוא פועל בצורה הטובה והחלקה ביותר. הרי לא הייתם רוצים לעבוד על אתר שלם ובסופו של דבר לגלות ש..... הוא לא יעבוד בגלל איזה באג, רוגלה או כל מקור זדוני אחר שיכול לפגוע בו.
בתחום ה-Back End לומדים שפות תוכנה שונות, כמו PHP, Ruby, Python ועוד. לעומת זאת, בתור מפתח Front End רוכשים את כל הידע על שפות תוכנה אחרות, כמו JavaScript, HTML, CSS וכו'.
מלא התלבטויות
אז נכון, יש אנשים שיעדיפו לבחור את אחד מהתחומים ולהתמקצע בהם, אבל אין ספק שישנה דרישה גבוהה היום בשוק למפתחי Full Stack Web Developer, למה? בוא ותדמיין שאתה לצורך הדוגמה מנכ"ל של חברה לבניית אתרים, בדיוק חתמת חוזה עם לקוח והוא חייב אתר חדש, אתה כמובן תרצה שזה ייעשה בצורה המקצועית והטובה ביותר, זה מובן, ככל הנראה שתרצה שאדם אחד יעבוד על זה, אני אציין רק שתי סיבות משלל הסיבות שקיימות:
יש קלישאה מסוימת שאומרת שבעתיד לא יהיה צורך במפתח בק אנד ופרונט אנד, אז לשמחתנו, מדובר בקלישאה ותו לא, יהיה צורך במפתחים מהסוג הזה לפחות לעוד כמה שנים. בדיוק כמו הסטראוטיפ שקיים בעולם בדיקות התוכנה –QA, שמפתחים ידניים יאבדו את מקומות עבודתם בגלל מפתחי האוטומציה שנכנסים לשוק.
יחד עם זאת, הדרישה עבור מפתח Full Stack Developer הולכת וגוברת, ואם אתה בצומת דרכים ומתלבט מה לבחור בעולם התכנות, ככל הנראה שזוהי התשובה בשבילך. אבל רגע, האם זה בכלל העולם שיכול לדבר אליך? יש סיכוי שלא תאהב את זה? האם דבר כמו לימוד בניית אתרים יתאים לך?
זה בכלל יכול להתאים לך?
אני יודע שלפעמים עולם ההייטק נשמע זוהר, נוצץ ובעיקר יוקרתי. הרבה אנשים נמשכים אליו מהמון סיבות, בין אם זה המשכורות הגבוהות, מה שהוא יכול להציע, העניין שקיים בו, התנאים הטובים (כן כן, אין משרד הייטק שאני מכיר שלא קיימת בו מכונת נספרסו ולעובדים שלהם אין כרטיס תן-ביס), אבל, לפני שצוללים למים העמוקים, בואו ונראה אם תוכל להתאים לעולם הזה.
הדבר הבסיסי בשביל להבין אם אתה מתאים לעולם הפיתוח ובכללי לעולם ההייטק, היא לא היכולת שלך לשבת מול המחשב, אלא האהבה שלך לשבת מול המחשב. כן כן, אתה בהחלט צריך להיות טיפוס שיאהב את זה ויוכל לשבת מול המחשב לא מעט זמן.
אני זוכר שלא מזמן חבר טוב שלי התלבט בין קורס בניית אתרים לקורס שיווק באינטרנט, הוא רצה לדעת על ההבדלים ביניהם, מה כדאי, מה לא ולמשך 5 דקות הוא לא הפסיק לדבר. עצרתי אותו באמצע אחד המשפטים שלו ושאלתי אותו: "תגיד, לפני הכל, אני יודע שאתה גיימר, שאתה אוהב לשבת מול המחשב, השאלה אם תוכל לקחת את העובדה הזאת למשך כל הקריירה ובמשך כל יום לאהוב את העובדה שאתה יושב מולו לא מעט שעות?". הוא ענה לי בחיוב. אגב, הוא בסוף בחר בתחום ה-Full Stack ולא מזמן התחיל לעבוד כפרילנסר ופיתח כבר שני אתרים מוצלחים לשתי מסעדות בתל אביב.
נכון שיש אנשים שהם עם יותר צדדים "טכניים", שלרוב יעדיפו לפנות לתחום בדיקות התוכנה – QA, אבל אפילו גם אצלם יש חדשות וטובות וחלקם עברו להפוך לבודקי אוטומציה, מה זה אומר? שהם מתעסקים גם בפיתוח וגם בבדיקות תוכנה.
ובלי קשר, הביקוש עבור מפתחי אתרים הולך וגובר, בטח ובטח כשחנויות E-Commerce צצות כפטריות אחרי הגשם, כי מה לעשות, אנשים קונים כמעט בלי סוף בתקופות האחרונות ברשת (לאף אחד היום כמעט ואין אנרגיה לצאת מהבית בשביל השופינג שלהם). אז רגע לפני שאתה נכנס אליו, תדע שיש המון משרות בשוק.
לסיכום, אתה מת על מחשבים, אתה די מחבב טכנולוגיה ואתה עם הסמראטפון כל הזמן ביד (ובנינו, מי לא?). השאלה הנוספת היא, האם יש לך את התכונות המתאימות בשביל כך? אם אתה מחשיב את עצמך כאדם אחראי ומחושב, אחד כזה שאוהב לחשוב המון ויודע להתנהל כמו שצריך, ההוא שלא מפחד מאתגרים ותמיד יגדיל ראש, אז ברכות, ככל הנראה אתה תתאים לתחום ואם ממש תרצה, תוכל להיות Full Stack Developer תוך כ-7 חודשים.