מה דעתכם על NodeJS?

oriori56

New member
מה דעתכם על NodeJS?

שלום,

אני מתכנת בעל 5 שנות ניסיון ב-Java וכעת אני מחפש עבודה.

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

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


אשמח לשמוע את דעתכם!
תודה!
 

user32

Well-known member
מנהל
אני עברתי מג'אווה לNode

לדעתי זה כיוון חיובי במיוחד אתה מפתח מוצרים ווביים.

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

יש המון עבודה בשתי הפלטפורמות ויש גם משרות שישמחו מישהו שיודע את שניהם (מוצרים שמשלבים גם וגם).
 

user32

Well-known member
מנהל
פירוט

כרגע אני עושה פרוייקט פיננסי לחברה שעוסקת במסחר וברוקראז' לסחורות. הפיתוח הוא from scratch בnode. ניצלתי את זה שמדובר בפרוייקט חדש כדי לעשות אותו MEAN באופן מלא. כרגע אני מפתח אותו לבד (סוגר חצי שנה) אבל כנראה שאצרף מישהו בקרוב.

בעקרון יש לי stack שאותו אני דוחף. זה משתנה לאורך השנים. הייתי בעבר עם ,J2EE-JSF, שעבר לGWT ומשם ספרינג+הייברנט+אנגולר, עשיתי נסיון עם רובי שלא התחברתי אליו. כרגע אני עם MEAN. כמובן שזה לא מחייב וכל פרוייקט משתנה לפי הצרכים אבל הרבה פיתוחי web הם בעלי מכנה משותף והרבה פעמים אפשר לזרום עם stack קלאסי.
כל כמה שנים אני מרענן וככה זורמים...

בשנים האחרונות התחלתי לזלוג לכיוונים אחרים ובעיקר IoT וגם שם אני מריץ node או פית'ון בשביל ממשקים ווביים על לוחות כמו רסברי פיי וכו' וגם בשביל לספק API שאפשר בקלות לכתוב לו סקריפטים.
 

eveik

New member
node נוח לך לפיתוח אפליקציה מלאה?

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

user32

Well-known member
מנהל
למה לא ריילס

קודם כל מודה באשמה: לא התאמצתי מספיק. ככה זה כשאתה עסוק בכמה וכמה פרוייקטים במקביל ולא נתון 100% למעבר.
אז בהינתן המידע הזה, ציפיתי שההקמה של האקו סיסטם יהיה יחסית חלק ופשוט. כל הקונספט של "סטנדרטים במקום קונפיגורציה" קסם לי בתור רעיון אבל כשהגיע הביצוע התייאשתי.
בעיקר תאימות בין גרסאות: כל שינוי בין 3.2 ל3.1.1 ל3.2.23 ללא יודע מה גרם למליון דברים להפסיק להתקמפל או להפסיק לעבוד. רק לי נראה מוזר שמשנים כל כך הרבה API בתתי גרסאות? ואני שוב מודה באשמה שכשאני מנסה לעשות משהו פשוט אני מסתמך על stackoverflow ולא תמיד קורא במשך שבוע את כל התיעוד של הגרסה הספציפית. אז אם מצאתי איך נגיד קוראים קוקי ואז גרסה אחר כך זה משתנה וכנ"ל לגבי שמות חבילות, התנגשויות, כל הבלאגן בgem, ועוד ועוד אתה מגיע למצב שבו רוב הזמן המערכת לא עובדת ואין לך איך לפתור כי כל פוסט שאתה מוצא מתייחס לגרסה אחרת שלא תואמת במדוייק את מה שיש אצלך. זה זרק אותי אחורה לDLL Hell...

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

לגבי node: כן היא מרגישה קצת מוזר. בעיקר מפריע לי שJS היא שפה מאוד עניה ומרגישה קצת שנות ה90. דבר שני זה החבילות הסטנדרטיות של JS שלא כוללות כמעט כלום או בצורה מאוד פרימיטיבית ודברים שהתרגלת שיש בכל שפה אתה צריך להתקין ספריה בשביל זה וכמובן שלא כל ספריה תואמת את הצרכים או את הספריות האחרות וכו' וכו'.

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

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

eveik

New member
אני חושב שאתה צריך לתת לריילס צ׳אנס נוסף :)

לגבי גירסאות - לא יודע האם באמת התדירות היא כל כך גבוהה אבל זה לא כל כך אמור לשנות לך. אתה רץ על גירסא מסויימת ואתה לא מחוייב לעדכן כל הזמן (ובטח שלא את כל הgems כל הזמן). יש מצב שהרצת את אחת הפקודות המסוכנות ביותר (
) שהיא bundle update וזה בעצם עידכן לך את הכל - מה שתמיד יוצר בלאגן שלם שאי אפשר לצאת ממנו. ה best practice הוא להגדיר לכל gem גירסא ספציפית ואז אתה עושה lock על הגירסא ולא תקבל גירסאות חדשות.

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

אני חושב שיש כל מיני סיבות למה ללכת על שפות דינאמיות - סרוויסים קטנים זה בהחלט אחד, אבל אני חושב שלהתחיל פרוייקט ולרוץ מהר זה בהחלט סיבה נוספת. אגב, כשעוברים לסרווסים לא צריך את כל ריילס ויש לך אפשרויות אחרות בעולם הרובי. יש גירסא ״רזה״ של ריילס שנקראת rails api שאפשר להשתמש בה ויש עוד כמה אופציות כך שאתה לא מקובע לריילס. היופי בריילס שהיא מחולקת לgems השונים כך שאם אתה מאוד אוהב פונקציונליות מסויימות אתה יכול להוסיף אותה לכל פרוייקט רובי בלי בעיה.

יש לי 2 חברים טובים שעבדו איתי ברובי ועברו ל2 סטארט אפים אחרים שעובדים היום בפייתון. למרות שהם עובדים עם פייתון כבר 6-12 חודשים - שניהם מתלוננים על הרבה דברים ״בסיסיים״ שמקבלים בריילס (/ בעולם של רובי) במתנה והם צריכים לעשות שמיניות באוויר כדי להשיג את הפונקצליות הזאת. אני חושב שפייתון מאוד חזקה/מתאימה לסטארט אפים שצריכים להתעסק עם machine learning (שזה נכון לגבי שניהם) אבל האמירה שdjango מקביל לריילס נראה שלא בדיוק תואמת את המציאות.

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

user32

Well-known member
מנהל
תודה. אולי יום אחד

לתומי אכן הרצתי bundle update לעיתים קרובות וזה באמת הרס הכל. לזכותי ייאמר שכמעט כל פוסט על כל נושא מתחיל בדרישה להריץ update אז לא חשבתי שזו תהיה בעיה.

גם הרעיון של "להחביא" דברים הוא טוב כשזה במצגות אבל במציאות אתה מוצא את עצמך מדבאג ויותר גרוע: משנה/דורס קוד של אחרים. הרבה פרימוורקים שהתיימרו לעשות יותר מדי מאחורי הקלעים כשלו מהסיבה שהדרישות במציאות עולות על כל דמיון המתכנת ואתה מוצא את עצמך כל הזמן עושה reverse engineering אפילו אם זה רק בראש בכדי לאלץ את הפרימוורק לעשות את מה שאתה רוצה. כמובן שחלק מזה זה חוסר מקצועיות בגלל חוסר נסיון אבל גם זו בעיה: שבשביל לפתח דברים בסיסיים צריך ללמוד יותר מדי.
אני אשאר עם node בweb ועם פיתון בסיסטם ו/או אלגוריתמיקה לעת עתה. אולי בעתיד אחזור לרובי. אגב, איך השוק? כי מאז שעסקתי בזה היה נדמה לי שזה בירידה מסויימת.
 

eveik

New member
זאת פעולה כל כך נוראית ומיותרת

שאני זוכר שדיברו על להוציא אותה בכלל. באיזה מצב אתה רואה את עצמך בפרוייקט רוצה לשדרג עכשיו את כל הספריות שאתה עובד איתן באותו רגע? זה פשוט לא הגיוני. אולי בפרוייקט מאוד קטן ואז אפשר להריץ אחד אחד, אבל בפרוייקט בינוני+ אין סיכוי שתהליך כזה יעבור חלק.
&nbsp
אני זוכר את עצמי (ומתכנתים סביבי) נלחמים מידי פעם בקונבנציות של ריילס אבל זה לא המצב השכיח וזה לא באמת מה שאתה עושה ביום יום. אני עדיין קצת מתקשה להבין איך node הוא תחליף לריילס אבל אולי פשוט לא עבדתי איתו מספיק.
&nbsp
לגבי מצב השוק - לא חיפשתי עבודה לאחרונה אז לא יודע ממש להגיד. באופן כללי ריילס / רובי זה כבר לא הדבר הסקסי שמדברים עליו בכל כנס וריילס הופכת להיות יותר mature. כשחיפשנו אנשי backend לא התרשמתי שיש המון אנשי רובי אבל זה לא משהו חדש. ממאמרים שאני קורא פה ושם נראה שעדיין לא מעט סטארט אפים חדשים משתמשים בריילס כך שאני לא רואה את ריילס נעלמת אבל אין ספק שאם חלק מהשוק הולך ל MEAN אז זה גם נלקח מהחלק של ריילס.
 

user32

Well-known member
מנהל
איך node הוא תחליף לריילס?

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

izackv

New member
התחלתי לעבוד לאחרונה די הרבה עם meteor

שבנויה על nodejs
נותנת פתרון מדהים לטעמי לפיתוח בעולם של ווב כשגם צד הלקוח וגם צד השרת נכתבים בדיוק באותה טכנולוגיה ובאותו קוד-בייס
ומציגה עקרונות מעניינים מאוד של ״החלפת מידע״ בין הדפדפן לבין השרת

כרגע רוב מה שאני כותב הוא או בפייתון או ב meteor
 
למעלה