אפרט כאן רשימה דיי כבדה של נושאים שכל מתכנת פרונט אנד חייב לדעת. כמפתחים שאכפת לכם מעשייה שבה אתם נמצאים, וכן ברצונכם להיות טובים ככל שתוכלו בתחביב הזה שבחרתם, יהיה עליכם להרהר ואף העמיק בנושאים שאציין, כמו כן אחלק אותם לכמה קטגוריות, להלן הרשימה:
קווי מחשבה ועקרונות
- Human centered design
- Understand the use case
- Data is the king
נסו לחשוב על עקרונות אלו בעבודתכם ותמצאו אותם מאד שימושיים. שינוי הגישה שלכם תעזור לכם לייצר מוצר מנצח. למשל תפתחו פיצ'ר מבלי להבין אותו ואיך בדיוק המשתמש הולך להשתמש בו, ככל נראה תתקלו בבעיות. כמו כן חשוב לי היה לציין כי הדטבייס הוא המלך, יכול להיות שחלקכם עוד לא רואים את זה עדיין. אבל תהליך החשיבה שלכם צריך להתחיל מהדטה, בעזרת הבנה של המבנה של הדטה יהי לכם קל ליישם את הפונקציות שיעבדו את הדטה ובסוף גם לסדר ולהציג את הדטה בכבוד.
עובדים מסודר – בצוות או לבד
- Git
- Lint
- Formatting
- Meaningful names
- Comments
- Static typing (type script)
- Test driven development
- Design system
חשיבות של עבודה מסודרת ידועה בארגונים גדולים יותר מאשר ארגונים קטנים. החשיבות של קוד מסודר כלכך גבוהה שחברות מוכנות להשקיע מליונים בשביל זה. אז גם אם אתם עובדים בצוות קטן, לא להזניח עבודה מסודרת. הרשימה הזו ויישום של הכלים והגישות הללו, להיות מסודרים יותר ומנוסים יותר. כמו כן עבודה נכונה עם גיט וכמובן code review גם אם אתם צריכים לעשות לעצמכם, אני ממליץ שתמיד תעשו לעצמכם code review. אציין את הנושא של Formatting , נושא קטן אבל משמעותי, יש לזכור בכל פרויקט, לקנפג פורמט שכולם מסכימים עליו וככה כל הקבצים יהיו זהים בפורמט שלהם.
עוד משהו שהייתי רוצה לחדד כי אולי פחות מוכר בעולמות של front end זה גישה של טסטים. שיקנה לכם הרבה ערך. תתחילו לכתוב טסטים לפונקציות שלכם. בכללי כל נושא הטסטים מחדד מאד כל מתכנת ויעזור לכם לכתוב קוד מסודר יותר במחשבה שהקוד הזה שאתם הולכים לכתוב יצטרך בדיקות.
ועוד משפט על ה design system שזה ברור מאליו אך יש נטייה לחפף בזה וחיפוף בפרטים הללו יוצר בלגן שאין לתאר. אז לא לחפף ולא להתעצל גם אם צריך לעשות שינויי רוחבי בשביל ליישם design system במוצר שאליו אתם עובדים.
שפות הפיתוח שלנו
- JavaScript \ TypeScript
- CSS(SCSS)
- HTML
- NodeJS
- SQL
- NoSQL
- GQL
- Prisma
- React
- rxjs
- redux
- Angular
- Vue
השתדלתי לא לחסוך ברשימה הזו, וכן אני יודע שהכותרת של הפוסט מחייבת ועדיין אני לא רואה לנכון לרשום רק 3 שפות כמו שעושים בהרבה מאמרים דומים, וכן גם לא רואה לנכון לציין רק framework אחד. ובטח חלקכם שואלים מה קשור דטהבייס וnodejs . אז אסביר לאט לאט.
הערך שלנו כמפתח פרונט מסתכם בכמה אנחנו יודעים לרשום JS. זה ברור כי זה הבסיס להכל. רוב הרשימה שציינתי מתקמפלים לJS. לכן לא צריך להיות למפתח פרונט טוב בעיה ללמוד ולהבין מהר מבוססי JS כמו הספריות והסביבות שציינתי ברשימה שרובכם ככל הנראה מכירים. כמו כן בטוח שחלקכם יתנסו בספריה ספציפית ולהתמחות בכולם זה דורש הרבה, אבל הכוונה היא להכיר את כל הסביבות והספריות הללו ולהתנסות בהן. באופן אישי אני מכיר היטב אנגולר וריאקט , יצא לי לכתוב קצת עם VUE וההיכרות הזו הספיקה לי בשלב זה, אם אראה לנכון לעבוד עם VUE בהמשך או אם יעלה הנושא בעובדה שלי, אוכל להשתתף בשיח ואף בכתיבה. חשוב להכיר הכל, לא לחשוש שזה יפגע לכם במקצועיות, להיפך, אתם רק תשתפרו, הכל מאד דומה בסופו של דבר, כל אחד גם יתרונות וחסרונות שונים במקצת , והתחביר שונה אבל זה משהו שעם מעט פרקטיקה מתרגלים.
כפי שכבר שוחחנו בפוסטים הקודמים, יש נקודות השקה בין המחלקות, וקשר בלתי ניתן להפרדה עם backend. ויותר מכך, אנחנו משתמשים בAPI ומבצעים תקשורת עם השרת בכל רגע, והרבה תקלות קורות בתפר הזה, ולכן אין לנו כל ברירה אלא לשנס מותניים ללמוד backend. אני לא אומר את זה בקטע מבאס, להיפך, אתם תרוויחו כל כך הרבה שיהיה לבידכם את היכולת להבין טכנית וגם ליישם end to end . וגם היכולת שלכם ליישם את המשימות שלכם ולטפל בתקלות כמפתחי פרונט תעלה משמעותית. זה לא משהו שכדאי לדעת, זה חובה!. שימו לב למשרות סיניור של מפתחי פרונט, לרוב ירשמו שמה ניסיון של כמה שנים בפיתוח backend. חשוב לציין כי זה שאתם יודעים בק זה לא אומר שאתם fullstake , אני לא מאמין במונח הזה, או שאתה פרונט או שאתה בק, אך ניסיון חייב להיות . רשמתי nodejs כי זה הכי מתאים לנו לדעת , כי זה לכתוב JS בצד שרת.
כמו כן דטה בייס, כבר אמרנו שדטה הוא המלך, וחשוב לדעת איך נראה דטה בייס בצורותיו השונות ואיך מתקשרים איתו. ארכיטקטורה כללית ויחסים בין טבלאות.
כישורים נוספים
- debugging
- עקרונות הנגישות
- workflow
- תקשרות עם מעצבים ופרודקט
- תקשורת עם אנשים backend
מתכנת טוב יודע לדאבג טוב, אין פה הרבה מה להוסיף. שפרו את יכולות הדיאבג שלכם, אתם תצטרכו אותם לעיתים קרובות.
workflow – להיצמד לתהליכי עבודה בארגון. זה יבטיח לכם שיקוף מלא שלא העשייה שלכם למנהלים, יש מגוון תהליכי עבודה, לרוב עבודה בספרינטים או קנבן. קחו אחריות מלאה על הטיקטים שלכם, תמיד תרשמו בטיקטים, אם אתם צריכים אנשים נוספים, הצמידו סאבטסק או תייגו אנשים אלו בקומנט. עוד נדון בנושא הזה בהמשך.
אי אפשר להתעלם ממציאות שמושתת על תקשורת בין בני אדם, כל אדם אופי אחר ובראש אחר וכל אחד עושה את המאמצים שלו לייצר תקשורת טובה עם הסביבה שלו, כי אחרת לא יהיה סביבה ולא תהיה עבודה. כאנשי צד לקוח יש לכם מגוון ערוצי תקשורת שלרוב יהיו באופי שונה, למשל אנשי בק יהיו אנשים יותר טכניים וירצו לדבר אתכם על יעילות וחישוביות וכדומה. ואילו אנשי הפרודקט ואנשי העיצוב ואפילו לקוחות ירצו לדבר יותר רגשי על מנת לממש איזה חזון. ואתם צריכים להצליח לגשר בין ערוצי התקשורת הללו ולתת את הטון. גישה מנצחת מוכחת היא שהפיתוח כפוף לפרודקט, ראינו את זה קורה באפל ובחברות נוספות, אבל זה לא קורה בכל החברות, דעו להיות תקשורתיים ולשרת מטרה אחת שהיא Human centered design לרוב זו הגישה שתאחד את כולם.
לסיכום פוסט – מה חייב לדעת כל מתכנת צד לקוח
אכן הרשימה ארוכה ויש אינסוף של דברים ללמוד ואם רוצים להתמקצע צריך הרבה מאד שנים של עבודה. אבל אנחנו פה בשביל העתיד שלנו ושל העולם, תזכרו שכל מה שאתם עושים יכול לשנות את העולם לטובה. עשו את הדברים עם תשוקה. וכל משימה והרפתקה חדשה היא בסופו של יום, היא סיפוק אדיר, כל עוד למדתם משהו חדש.🤹♂️