ישששש! טכנולוגיה לפניך – חלק 2

אם לא קראתם את החלק הראשון אפשר למצוא אותו כאן.

בפוסט הקודם הסברתי באופן כללי על איך אני בוחר טכנולוגיה לפרויקט.

Flow

בפוסט הנוכחי אכנס לאפשרויות ולבחירות שאני עושה בפרויקט של GridGood.

רק שאלה קטנה…

איך אני בוחר כבר טכנולוגיה לפני אפיון מסודר? שאלה טובה.

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

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

ככה שאת התשתית הראשונית התחלתי כבר ואחרי זה אצוק אליה תוכן.

אז בואו נתחיל…

1. מה הפרויקט צריך

All You Need is Love & Some Chocolate

חוץ מהרבה אהבה ושוקולד:

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

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

אז אלה השיקולים…

2. מה אני יודע

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

3. מה מעניין אותי ללמוד

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

למי שלא מגיע מעולם התכנות – Framework זה בעצם סט של כלים מוכנים שנועדו להקל על המתכנת. כלומר, אם אני יודע שפת תכנות כמו PHP למשל, במקום לבנות אתר מאפס, אני יכול להשתמש ב-Framework קיים שנותן לי נקודת התחלה טובה ולבנות איתו את האתר. במצב הזה, אני משתמש בבסיס הרבה יותר יציב שמאפשר לי גם להתקדם במהירות וגם, כנראה שכבר חשבו שם על כל הצרכים של האתר, כמו למשל – אבטחה, ניתוב קישורים וכו׳…

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

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

4. איזה משאבים יש לי

חוץ מנחישות ומשמעת (שזה לא פחות חשוב)

  1. שרת Apache

ותכלס, זהו.

אז מה עכשיו?

אז עכשיו אני יכול לראות מה האפשרויות שיש לי, ואוכל להחליט במה לבחור.

איך שאני רואה את זה יש לי שלושה מסלולים עיקריים שלאו דווקא קשורים אחד לשני:

  1. FullStack – אותה שפת תכנות בצד משתמש ואותה שפה גם בצד שרת.
  2. הטמעה – הצד משתמש מוטמע בתוך הצד שרת.
  3. הפרדה מוחלטת – צד שרת כשירות API וצד משתמש כאפליקציה שעומדת בפני עצמה.

זהירות סינית!

הקטע הבא מיועד למתכנתים, ככה שאם אתם לא מבינים תוכלו להמשיך לפסקה הבאה.

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

ועוד דבר, ברור לי שאני הולך בצד משתמש על AngularJs.

Feelings About AngularJS Over Time

לאו דווקא מהסיבות שבתמונה 

הממצאים

אחרי בדיקה של אופציות בצד שרת כמו: Parse, FireBase, Express, Laravel, Yii אלו הממצאים:

NodeJS – הייתי שמח ללכת על זה, אבל יש לי כבר שרת שאני משלם עליו, אני לא יכול להתקין עליו NodeJs ולהשאר בחיים . ירד.

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

Yii – פעם חיבבתי אותו, היום הוא פשוט מרגיש לי מסורבל . ירד.

Laravel – לא הכרתי אותו, אבל קראתי עליו דברים טובים…(אחרי שכבר עברו כמה שבועות שבהם אני עובד עליו, אני יכול להגיד שאני מאוד אוהב את העבודה איתו).

אז הוחלט – AngularJs + Laravel

איך אני יודע שעשיתי החלטה טובה?

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

איך אני מתחיל?

אתה מתחיל הכי מהר שלך ולאט לאט אתה מגביר
אתה מתחיל הכי מהר שלך ולאט לאט אתה מגביר

כל מי שראה ״מבצע סבתא״ יודע איך מתחילים 

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

במקרה הזה מצאתי כמה פרויקטים מעניינים שמשלבים את Laravel ו-Angular.

יש שתי שיטות שבהם אפשר לעבוד עם שני ה-Frameworks האלה. מה שהזכרתי מקודם – הטמעה או הפרדה מוחלטת:

  1. Angular מוטמע בתוך Laravel ככה שהוא מוגש מהצד שרת.
  2. שניהם נפרדים לחלוטין ורק מדברים אחד עם השני.

כל הפרויקטים שמצאתי היו בצורה של הטמעה, לא מספיק טוב…

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

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

בסופו של דבר מצאתי את הפרויקט הזה.

נדרש לי לשנות אותו כמעט לחלוטין עד שלא היה זכר למקור, כולל שינוי מוחלט של קובץ ה-Gulp שלו שלא עבד כבר מההתחלה. אבל, זה היה עדיף מכלום.

תזכורת

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

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

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

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

מה הלאה

לא יצא לי לעבוד על הפרויקט בשבוע האחרון…חופש וכאלה.

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

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

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

אם יש לכם ניסיון איתם אשמח לשמוע את דעתכם.

וכמו תמיד, שאלות וכו׳…תרגישו חופשי.


מה זה פה זה?

אני מלווה את הפרויקט שאני הולך לבנות. לשתף על הדרך תובנות, דילמות, הרהורים ולא פחות חשוב – ללמוד על הדרך.

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

Comments on this post

No comments.

Leave a Reply

Trackbacks and Pinbacks on this post

No trackbacks.

TrackBack URL