צוטט מ
https://www.geektime.co.il/the_way_to_full_stack/
צמד המילים Full Stack מתאר את כל התוכנה מכף רגל ועד ראש. כלומר, את כל שכבות התוכנה מצד השרת (Server) ועד צד הלקוח (Client).
כאשר חברה מסויימת מחפשת מפתח Full Stack, היא מחפשת מפתח שמתמצא במספיק טכנולוגיות ושפות פיתוח מבין סט הטכנולוגיות והשפות שאיתן היא עובדת, כדי שיוכל לתרום לפיתוח בכל אחת מהשכבות – בצד השרת, בצד הלקוח או בכל מה שקשור לתקשורת ביניהם.
חשוב לציין כי ניתן לפתח תוכנת שרת-לקוח באין ספור דרכים שונות. יש מספר כה רב של שפות תכנות, Frameworks, סוגי מסדי נתונים ופלטפורמות לקוח (כגון אתרי אינטרנט, טלפונים חכמים, IoT), שלפעמים כבר קשה לעקוב.
לדוגמה: ניתן לבנות אתר אינטרנט Full Stack בעזרת טכנולוגיות כגון: HTML5, CSS, JavaScript (for Client & Server Implementations) and Ajax.
מאידך, אפליקציית אנדרואיד, שמעבירה נתונים לשרת שנבנה על בסיס JAX-RS, גם היא תיחשב Full Stack אבל תדרוש ידע בשפת תכנות אחת בלבד – Java. למרות זאת, גם כאן יידרש ידע עצום לא פחות.
יש כמובן מגוון רחב של אפשרויות נוספות לפיתוח אנד-טו-אנד מסוג זה, ובקורלציה – ידע ומומחיות בשפות וכלים שונים.
אם כך, מפתח Full Stack הוא בעצם מפתח שמכיר כמות גדולה של טכנולוגיות ושפות פיתוח ומסוגל לפתח תוכנת שרת-לקוח מסוג אחד לפחות, והידע שלו בתחום ספציפי של טכנולוגיות מאפשר לו לעשות זאת מא’ ועד ת’. ניתן להסתכל על מפתח זה כעל מפתח סרבר ומפתח קלינט באדם אחד, שלאחרונה נהנה מביקוש רב.
הדרך ל-Full Stack
רובנו לא בוחרים את סט הטכנולוגיות, הכלים ושפות הפיתוח שעל בסיסן אנו בונים את הקריירה שלנו. הסיבה היא שבדרך כלל כסטודנטים צעירים או כבוגרים טריים אין לנו ניסיון או העדפה ברורה לשפה כזו או אחרת, ולכן בין השיקולים שלפיהם נבחר משרה לא תהיה בהכרח שפת הפיתוח שאיתה עובדים בצוות העתידי. למעשה, אנחנו חומר ביד היוצר (הארגון הראשון שמקבל אותנו לעבודה) וכך נתפתח – על בסיס הטכנולוגיות, הכלים והשפות שאותו ארגון עובד איתן.
לאחר שצברנו ניסיון בשפה כזו או אחרת בדרך כלל לא נחזור לנקודת האפס ונתחיל שוב משרת בוגר בשכר נמוך ממה שהורגלנו, אלא נמשיך להתפתח באותו כיוון. זו עובדה שיש להכיר בה ולא לנסות לשנותה; לא משנה מהם הכלים והשפות שאיתם התחלתם, הם בשום אופן לא יפגעו בפוטנציאל שלכם להתפתח למפתחי Full Stack, אם זו שאיפתכם. הרי כל שפה שייכת בסופו של דבר לפחות לאחד הצדדים: שרת, לקוח או אולי אפילו שניהם. זהו בעצם השלב היחיד בקריירה שלנו שבו אין לנו כל כך מה לשנות, אבל פרט לשלב זה המלאכה היא מרובה.
- הדבר הראשון והכי חשוב שיש לעשות הוא להתמקצע ולהפוך למומחה בשפת פיתוח אחת לפחות. זה ייקח זמן, וכדי להגיע ליעד זה עליכם להכיר לעומק מושגים בתכנות מונחה עצמים ו-Design Patterns (אם מדובר בשפת פיתוח מבוססת OOP), פרקטיקות קידוד טובות, מוסכמות קוד וארכיטקטורת תוכנה. אלה יספקו כלים לכתוב ולתכנן קוד טוב יותר, נכון יותר וגם יתנו פרספקטיבה רחבה יותר על הקוד. בהמשך, העמיתים והמנהלים יזהו את המקצועיות שלכם, תקבלו משימות מאתגרות ורחבות יותר בתוכנה ותוכלו להכיר וללמוד טכנולוגיות וכלים נוספים.
- עברו לצד השני: אם התחלתם כמפתחי צד שרת, עברו לתקופה לצד הלקוח ולהפך. חכו להזדמנות הנכונה ולכו על זה. הזדמנות טובה יכולה להיות למשל פרויקט משותף בין הצדדים או בזמן לחץ כשיש צורך לתגבר את אחד הצוותים. מעבר כזה יצריך לעשות שינוי ולצאת מאזור הנוחות, אך בתמורה תעשו קפיצה בדרך למפתח Full Stack. עם הזמן תצברו ביטחון באזורי קוד שלא היו מוכרים לכם ותיחשפו לטכנולוגיות שהיו מחוץ לתחום שלכם.
- היו עם אצבע על הדופק בכל מה שנוגע לטכנולוגיות וחידושים בתחום שלכם, כלומר ב-Stack שלכם, ואפילו נסו להטמיע אותן בקוד, זו דרך מצוינת ללמוד ולהתמקצע.
ככל שמפתח תוכנה מכיר טכנולוגיות נוספות ורבות יותר, מעבר לסט הצר שבו הוא באמת יכול להיות מומחה, הוא מגדיל במכפלה את סט הכלים שברשותו לפתור בעיה מסוימת, והרי אנחנו, מהנדסי התוכנה, בפתרון בעיות עסקינן. אם נניח רגע את הטייטל Full Stack בצד, הכתוב פה הוא למעשה המלצה לכל מי שמעוניין להתפתח בכיוון הטכני, להיות קצת מעבר למפתח מן הישוב ואפילו להפוך למומחה.