מחפשים רעיון לפרויקט שיעזור לכם לצבור ניסיון ולהראות את היכולת שלכם למעסיקים?
בתור בוגר תואר ראשון במדעי המחשב ומתמטיקה הבנתי שלמרות התיאוריה שלמדנו בהרצאות, קוד לומדים בידיים. הסיבה היא שהרבה יותר פשוט לקלוט קונספטים מורכבים תוך כדי עשייה בפועל.
העניין הוא שהרבה אנשים לא יודעים מאיפה להתחיל, ומתקשים למצוא נושא לפרויקט מעניין שמתאים לרמה הטכנית שלהם.
במאמר זה ריכזתי 5 רעיונות לפרויקטים מעניינים ברמות קושי שונות, שיעזרו לכם להתנסות בשפות תכנות וטכנולגיות מגוונות, ולהרחיב את תיק העבודות שלכם.
רעיון לפרויקט #1: בניית בלוג ב- Spring (שת"פ עם אנשים נוספים)
למה להסתבך שיש הכל מוכן?
ספרינג הוא FrameWork סופר-פופולרי שמאפשר לנו להתמקד במה שאנחנו רוצים לבנות, ופחות בכתיבת קוד ומימוש עצמי של דברים. בשורה התחתונה, אם עובדים עם הספריות המיועדות ניתן לחסוך הרבה זמן. והכי טוב, לא כל כך מסובך ללמוד את זה.
בסיס השימוש של ספרינג הוא ב- Dependency Injection. כלומר, מזריקים אובייקטים בזמן הריצה של הפרויקט ולא בזמן הקומפילציה. בעצם שומרים איזה העתק של אובייקט (נקרא Bean בספרינג) בתוך משהו שנקרא IoC קונטיינר, ובזמן הריצה הוא יודע לשלוף לפי בקשה.
חשוב לציין שאתם תזדקקו לידע ב- JAVA כדי לעבוד עם ספרינג.
שימושים נפוצים של ספרינג
- אבטחה – מאוד פשוט לעבוד עם האותנטיקציה והאוטוריזציה של ספרינג. לרוב הם מתנהלים על ידי JWT (טוקן ג׳ייסונים) ומאפשרים הגבלה לפי הרשאות, זיהוי משתמשים ועוד.
- עבודה עם הענן – זורקים כמה dependency (ספריות של ספרינג שאתם אומרים להם ״בוא.. אני עצלן לממש לבד״) ובכמה שורות קוד פשוטות יש אינטגרציה לענן.
- מסדי נתונים – כמו עם הענן, גם כאן בכמה לחיצות כפתור ניתן להתחבר למסדי נתונים! יש מגוון רחב של אינטגרציות ופשוט צריך לבחור בהתאם לפרויקט.
- מיקרוסרביס – על קצה המזלג, זה פיזור של הפרויקט על פני כמה שירותים שונים שכל אחד רץ בצורה נפרדת. יש לזה המון יתרונות (שלא ארחיב עליהם פה) וספרינג עוזרת להפוך את זה לפשוט יותר.
רוצים ללמוד עוד? בערוץ יוטיוב בשם AmigosCode תמצאו חומר מאוד ברור המשלב הצגת קוד (לפעמים תידרשו לחפש קצת מונחים לבד).
אז עם איזה פרויקט להתחיל?
דרך נוחה היא ליצור אפליקציה פשוטה יחסית (נגיד, בלוג) ולשתף פעולה עם אנשי מקצוע נוספים כמו:
- DevOps – שיעזרו להעלות את זה לשרת
- Back end – שיתכנתו את הפונקציונליות של זה
- Front end – מומלץ שימוש ב- React או Angular
מחפשים שותפים לפרויקט? מוזמנים להצטרף לקהילת P2G שם תוכלו להתייעץ וליצור שיתופי פעולה עם מגוון בעלי תפקידים.
רעיון לפרויקט #2: פרויקט בלמידת מכונה (pic to excel)
פיצ'ר של התוכנה האהובה (או השנואה, תלוי את מי שואלים) מאפשר לכם לצלם בפלאפון ולהעביר ישירות לקובץ אקסל. אז למה שלא תבנו בסגנון הזה בעצמכם – From pic to Excel.
הכוונה היא ליישום שבו מכניסים תמונה כקלט והיא מוציאה כפלט קובץ אקסל מוכן לשימוש.
לקריאת המדריך (הסבר עם קוד) לחצו כאן.
וכמובן, מכאן אתם יכולים לתת לדמיון שלכם לסחוף אתכם ולחשוב על כמה רעיונות להמשך פיתוח. אם אתם רוצים לקחת את זה לשלב הבא נסו לצרף מפתח.ת WEB ותבנו את זה כאתר, תחזקו מסד נתונים כלשהו, יישמו מתודולוגיות של UX UI ועוד.
רעיון לפרויקט #3: משחקייה בפייתון
בשנים האחרונות Python הפכה לאחת השפות הפופולריות ביותר. הביקוש בתעשיה גדול והשימוש בה הוא סופר ורסטילי. אז למה לא ללמוד פייתון? ואם כבר ללמוד, למה לא תוך כדי בניה?
הנה רעיון שמיועד למתחילים – לבנות כמה משחקי arcade תוך כדי למידת Python.
מה חשוב לדעת לפני שמתחילים?
- אם אין לכם נסיון בתכנות בכלל – מומלץ קודם להתחיל מלהכיר את ה- syntax של פייתון.
- אם זו שפה ראשונה שלכם – אני אישית ממליץ להתחיל משפות שפחות מבוססות על ספריות וקיצורים כמו פייתון, ודווקא להתחיל מ- Java או C++ (ולרציניים שבאמת רוצים להבין איך קוד עובד, שפת C) הן יתנו בסיס יותר רחב לידע שלכם להמשך העבודה בכל שפה שתבחרו לעסוק בה.
- יעילות השפה – בפייתון יש שימוש רב בספריות חיצוניות שעושות מימוש יעיל של כל מיני דברים (מקריאת קבצים ועד מודלים בלמידה עמוקה) ומומלץ להכיר ולהרגיש בנוח לעשות שימוש באלא אחרת היעילות של התוכנית תהיה נמוכה בגלל שפייתון מאוד איטית (בעיקר בלולאות).
לצפיה בסרטון שיעזור לכם בהתליך העבודה לחצו כאן. חשוב להבין, הסרטון באורך 6 שעות, אך העבודה אף פעם לא מסתכמת בזה.
ההמלצה שלי, נסו למצוא פרטנר או שניים, ולקבוע לו"ז קבוע (למשל: פעמיים בשבוע בשעה 6 עד 8) לצפייה בשיעור ביחד. סכמו את הדברים החשובים בדגש על עקרונות השפה, ולאחר מכן תכנתו לבד עד לפגישה הבאה שבה כל אחד יציג לשני מה הוא הספיק.
כמובן שלאורך תהליך העבודה רצוי לדבר, להתייעץ ולשתף אחד את השני.
רעיון לפרויקט #4: השילוב בין מוזיקה לרגש
אי אפשר להפריד בין מוזיקה לבין הרגש. שאנחנו עצובים, שמחים או עייפים.. לכל מצב יש ז׳אנר מוזיקלי שיושב בדיוק על הרגש הזה. אז למה לא לבנות נגן מוזיקה מבוסס אמוציות?
במילים אחרות, זיהוי תמונה וקלסיפיקציה (מיון) של מצב הרוח של המשתמש. לפי החיזוי התוכנה שלנו תנגן מוזיקה בהתאם למצב הרוח.
בניגוד לפרויקטים אחרים שהצגתי פה, הפרויקט הזה מיועד למתקדמים יחסית. הוא ידרוש מכם לדעת פייתון, שליטה טובה (או לפחות הבנה) ב- OpenCV והבנה של רשתות.
בלינק הזה תמצאו הסבר על הפרויקט.
רעיון לפרויקט #5: WAZE על גרפים
אני רואה הרבה אנשים שמנסים לבנות דברים מבלי להקדיש מחשבה לשאלה הבאה: "איך עושים את זה יעיל/אופטימלי מבחינה אלגוריתמית?" וחבל! הפרויקטים שלכם יכולים להיות אימון מצויין דווקא לזה.
זכרו שתכנות זה לא רק שורות קוד אלא גם דרך חשיבה יצירתית שתגרום למוצר להיות מהיר יותר וטוב יותר. ומעבר לכך, זה יתן לכם אחלה ניסיון.
אז מה בעצם צריך? רצון ללמוד ואהבה לתכנות. זה ממש לא רעיון חדש, ולרוב הנושאים האלו מתורגלים באקדמיה לפחות פעם או פעמיים במהלך התואר.
איך להתחיל?
- נבין מה זה גרף – חיבור של קודקודים וצלעות אחד לשני. כמה מונחים חשובים:
– גרף מכוון: לכל צלע בגרף יש כיוון, ז"א שיכול להיות צלע שלוקחת מקודקוד A ל- B אבל זה לא אומר שניתן לחזור מ- B ל- A. כמו רחוב חד סטרי.
– גרף לא מכוון: כל צלע שמחברת בין A ל- B ניתן ללכת עליה לכל כיוון. כביש דו סטרי.
– גרף ממושקל: לכל צלע יש "משקל", נניח כמו שיש עומס בכביש מסוים אז "עולה" יותר זמן לנסוע בו. - בניית אובייקט גרף – כמו שנאמר כל גרף הוא אוסף של צלעות וקודקודים, לכן בניית האובייקטים הצורה נכונה צריכה להיות גרף > קודקוד > צלע.
אני לא ארחיב כי כאן זה החלק המעניין, באיזה צורה תממשו אותם ובאיזה מבני נתונים תעשו שימוש! (רמז: כדי לחשוב על משהו יעיל בחיפוש ושליפה וכדי שיהיה ממושקל) - אלגוריתמים למימוש – המומלצים ביותר הם bfs, dfs, dijkstra, האלגוריתמים האלה בשימוש נרחב וטוב להכיר את השימושים שלהם!
- אלתורים – מכאן אתם יכולים לעשות מה שאתם רוצים, יכול לעשות משחק של מציאת הדרך המהירה ביותר מנקודה לנקודה, GUI שמציג את הגרפים, בניית המסלול הכי נכון וסוכן נסיעות, אפשר להכניס את הכל לאפליקציה שתציג את החישובים וההליכה במסלול ועוד ועוד..
שימו לב לקושי – מצד אחד זה לא פרויקט מסובך מבחינת ידע, אך מצד שני האתגר הוא לעשות את זה לבד.
אם אתם ממש מתקשים מוזמנים להיכנס לפרויקט שאני והשותף שלי ואני עשינו במהלך הלימודים כדי לקבל השראה (ואם זה עזר לכם לחצו על הכוכב). לצפייה בפרויקט שלנו.
לקריאה נוספת: 5 סיבות טובות להשקיע בפרויקטים >>
Data Engineer עם תשוקה לבינה מלאכותית, דאטה וקוד. מנהל קהילת Projects2Gather המחברת אנשים ליצירת פרויקטים משותפים. להצטרפות לקהילת P2G >>