JavaRush /בלוג Java /Random-HE /איך הומניסט זקן הלך ל-IT
PieIsLie
רָמָה
Санкт-Петербург

איך הומניסט זקן הלך ל-IT

פורסם בקבוצה
זִקוּקֵי דִי נוּר! בעצם, הרבה זמן חשבתי מה בדיוק אכתוב בפוסט הזה והאם אכתוב אותו בכלל. פשוט קרה שבתקופות שונות של השנתיים האחרונות הערכתי את הסיכויים שלי לקבל משרת מפתח Java בדרכים שונות: מ"במוקדם או במאוחר - בהחלט" ועד "שום דבר לא זורח לי ב-IT." איך הומניסט זקן הלך ל-IT - 1עם זאת, כמעט בדיוק שנתיים עברו מאז שנרשמתי ל-JavaRush. לפני כמה חודשים קיבלתי את ההצעה הראשונה שלי, קצת אחר כך קיבלתי את השנייה ואז התחלתי עבודה חדשה. סיפורי הצלחה עזרו לי מאוד במהלך הקורס, אז החלטתי לפרסם את שלי. מכיוון שהקורס התקיים בשנת 18', ייתכן שחלק מהמידע אינו עדכני. אני אגיד מיד שיהיה הרבה טקסט, כי... אנסה לספר לכם על הכשרה וחיפוש עבודה (דרישות, תגובות, מפרטים טכניים, ראיונות וכו'). אכתוב גם כמה טיפים כלליים שעזרו לי באופן אישי ועשויים לעזור לאחרים. בקצרה על עצמי: בן 32, 10 שנות ניסיון בניהול ומכירות, חינוך לאמנויות ליברליות וללא רקע טכני לחלוטין. לפני מספר שנים ניסיתי להיכנס ל-C++, ואז לפייתון - לא קיבלתי דבר מלבד כאב ראש. לכן, קשה לקרוא לי מפתח מוכשר: להיפך.

שלב 1. אימון

הגעתי ל-JavaRush במודע: מחירון חודשי הולם, מבנה ברור של החומר, תרגול רב ונוכחות הקהילה שלי. הנקודה הראשונה ברורה, אבל לימוד שפה ללא מבנה הוא די קשה, והכשרה כזו בהחלט תשאיר אדם עם פערים רציניים ב-Java Core. הניסיון של ראיונות ומפרטים טכניים מראה שניתן להשתמש בשאלות על "הליבה" לכל דבר: החל מהסטה סיבית ויציקה של גנריות ועד ל-IO והסדרה. תרגול הוא חובה; אני עדיין יכול להבין ולזכור רק חצי מהדברים אם כתבתי אותם בעצמי. ובכן, הקהילה: פתרת את הבעיה - תתפאר בזה בתגובות; אם לא החלטתם, אתם מוזמנים לשאול שאלות, אבל סביר להניח שאף אחד לא ייתן לכם פתרון מוכן. וחזרתי למאמרים מותאמים אישית בנושאים חינמיים גם לאחר סיום הקורס, יש שם הרבה דברים טובים להתחיל איתם (במיוחד ההתנסות הראשונה עם מסגרות באמצעות דוגמאות שלב אחר שלב + שאלות לראיונות). באופן כללי, אני אסיר תודה לפרויקט הזה על הבסיס שקיבלתי, אבל לא הייתי מסתמך רק על JavaRush - אותו Shildt הטוב מכולם הולך "חופף" לנושא הנלמד, ולעתים קרובות חושף כמה נקודות. הרבה כבר נאמר בביקורות על משימות שלפעמים מקדימות את התיאוריה ומאלצות אותך לגוגל. מבחינתי זה יותר פלוס מאשר מינוס - וזו לא עובדה שעכשיו המצב זהה לזה שלמדתי. עצה מיידית למי שכמוני נכנס לג'אווה "מאפס" : בשלב מסוים אתה עלול להשתעמם או להתקשות:
  1. לכולם קשה להתחיל מאפס, חלילה, רק 5% מהאנשים מגיעים לסוף הקורס. המשימה שלך היא להפוך לאחד מהם.

  2. התעניינתי אחרי חודש-חודשיים, כשהמשימות נעשו יותר קשות ומעניינות. להיות סבלני.

  3. העיקר הוא התקדמות שבועית. אחרי שבועיים של מנוחה כבר קשה לחזור, ולא כולם יכולים לכתוב כל יום כמה חודשים ברציפות. תן לעצמך הגבלה של שעות לשבוע - למשל, 15. אתה יכול לקודד ל-1.5 שעות בכל יום חול ועוד 3-4 שעות בשני סופי השבוע, או שאתה יכול לקחת כמה ערבים חופש, אבל "מגבלת סוף השבוע" תהיה להגביר. כך, לוח הזמנים יהיה גמיש, אך קבוע. כמובן שאז ניתן יהיה למדוד עבודה לפי משימות ופרוייקטים, אבל ברמת התחביר והקרנל, שעות יספיקו.
באופן כללי, לקח לי כ-5 חודשים לסיים את הקורס (לפני הגישה להתמחות) , למרות העובדה שיכולתי להרשות לעצמי גם חופשות וגם הפסקות קצרות; שוב, עבודה בשבוע של חמישה ימים השאירה רק סופי שבוע וערבי חול פנויים מ-22 עד 00. לכן, עם לוח זמנים רופף יותר או משטר אימונים נוקשה יותר, אתה יכול להתמודד הרבה יותר מוקדם. אחר כך תכננתי לקבל התמחות, אבל בסופו של דבר זה לא הסתדר.

שלב 2. חינוך עצמי

אז, לא קיבלתי את ההתמחות: השארתי רק כמה ימים על הדרישות הטכניות עד לסיום הגיוס לקבוצה ולא הספקתי להבין את הדרישות - היו יותר מדי מילים לא מוכרות. כי לא רציתי לחכות עוד שלושה חודשים, החלטתי להמשיך הלאה בעצמי. למרבה המזל, ישנם מדריכים ומדריכי וידאו לכל המסגרות הפופולריות. במהלך החודשים הבאים, עסקתי ב-Spring MVC, Spring Boot + Data, Spring Security, Hibernate, jUnit, Maven, Git, RDBMS, שלטתי ב-SQL וניסיתי לחבר את הכל לכדי שלם אחד. שישה חודשים לאחר מכן, היו לי פרויקטים שמפחידים להסתכל עליהם עכשיו, אבל רכשתי ניסיון מעשי בשימוש במסגרות "למבוגרים" ו-GitHub שניתן להציג לבקשת מעסיק פוטנציאלי. עצה :
  1. ככל שתלמד מוקדם יותר על .gitignore, כך ייטב. ;)

  2. מדריכים רבים כוללים מספר מסגרות בו זמנית; השתמש בזה והוסף משלך. כתבנו חנות מקוונת באמצעות Maven + Spring Boot + Data - הוסף הרשאות, בדיקות יחידות ורישום.

  3. עבור פרויקטים באינטרנט, אתה יכול לקחת תבניות חזיתיות בחינם מהאינטרנט - הן יותר נעימות לעבודה, הן נראות טוב יותר כצילומי מסך ב-README ב-Git. במקביל, תוכלו לזכור HTML ו-CSS – סביר להניח שתרצו לתקן את הסגנונות והפריסה.

הדרך הקלה ביותר ליצור לעצמך תוכנית פיתוח כזו היא לעבור דרך HH עבור משרות פנויות למפתחים של Junior\Middle Java Developer ולראות אילו טכנולוגיות ומסגרות מצוינות לרוב. רשמו אותם, העלו מפרט טכני עבורם, קבעו לעצמכם מועדים ליישום. אם כי, אולי אם אתחיל בהתמחות מקומית, לא אצטרך להשקיע כמה חודשים על פרויקטים ביתיים.

מה היה חסר לי (מאוחר יותר נכוויתי במהלך ראיון)

  1. אלגוריתמים. כדי למנוע את הטעויות שלי, אני ממליץ מיד על ספר קצר ברוסית, "אלגוריתמים גרושים". מה המורכבות של האלגוריתמים, ממה זה מורכב, למה קוויקסורט לא מספיק, מבוא לתורת הגרפים - הכל שם ובשפה הכי מובנת.

  2. אוספים "מתחת למכסה המנוע". אני לא זוכר אם זה היה ב-JavaRush, אבל זה שימושי לדעת איך HashMap.get() עובד או מדוע לא מובטח ש-HashSet ישמר סדר אלמנטים. שוב, אילו אוספים בטוחים ומדוע.

  3. SQL. אתה צריך לפחות עד JOINs - מה הם, איך הם עובדים, היכולת לכתוב SELECT על שתי טבלאות על נייר תוך כדי תנועה. אני ממליץ על www.sql-ex.ru: זה ייקח אותך לרמה הרצויה תוך יום או יומיים.

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

שלב 3. חיפוש עבודה

למעשה, בחודשיים הראשונים לאחר השלמת פרויקטים ביתיים, שלחתי כ-30 תגובות למשרות פנויות שונות של Junior\Trainee (דרך HH, LinkedIn, סוכנויות גיוס), עם כמעט אפס תוצאות. התמקדתי רק במשרות פנויות ללא ניסיון, ציינתי בכנות מחסנית מוכרת לי וכתבתי על יכולת הלמידה הגבוהה שלי במכתבים נלווים. התוצאה היא שתי שיחות (אחת מהן הסתיימה מיד באנגלית שלפני הביניים שלי), עוד שתי חברות שלחו מפרט טכני, הייתה רק "פגישה" אחת, ואז הייתי שם לבד ופתרתי בעיות באלגוריתמים על פיסת נייר, לאחר מכן HR פשוט לקח את הניירות ו"נתקשר אליך". ניסיתי לקבל כמה התמחויות (ללא תשלום ובתשלום מותנה): עשיתי את המפרט הטכני, אבל לא עברתי את הביטוח הלאומי הסופי; אבל עכשיו אני יכול לומר שהחניכים בהחלט מגויסים על ידי T-Systems, CFT, Andersen ו-EPAM (יש להם ביקורות מעורבות, תחליט בעצמך). מבחינתי, זו דרך טובה להיכנס לתחום אם יש לך אפשרות לשבת בלי הכנסה כמה חודשים ולא למות =) בכלל, אחרי החוויה הזו קצת נכנסתי לדיכאון, ושמתי את כל הסיפור עם החיפוש בהפסקה במשך כמעט חצי שנה - המשכתי לעבוד על הפרופיל הקודם, כתבתי כמה אפליקציות רק בשביל הכיף, אבל אפילו לא פרסמתי אותן ב-Git. עד שפגשתי מכר אחד, שסיפרתי לו כלאחר יד על הכשלים במשרות פנויות: באותה תקופה הוא כבר עבד כמפתח ביניים, אבל הוא התחיל באותו אופן - בלימוד עצמי. מכר נתן לי כמה המלצות , בהן השתמש בעצמו ואשר מאוד עזרו לי בחיפוש העבודה שלי בעתיד. אם אתה עוקב אחריהם או לא זה תלוי בך, כי... הם, בדרך כלשהי, לא לגמרי כנים. אז, ציטוטים נוספים:
  • בכל אופן, ספק לעצמך 6+ חודשים של ניסיון מסחרי בקורות החיים שלך: התמחות, פרויקטי גמר, פרילנסרים, עבודה מרחוק - מה שלא יהיה. זה יעזור מאוד בשלב של סינון ראשוני של קורות חיים על ידי משאבי אנוש;

  • הסר את המילה ג'וניור ומשכורת צפויה מהקורות חיים שלך; פשוט השאירו אותו כמפתח Java, ודנו על הכסף בנפרד עם כל חברה;

  • נסה לתת ל-HR שם את "המזלג" של השכר המוצע לפני שתציין את הציפיות שלך. אם חברה מציעה 80-120 אלף, ואתה מחפש 40 אלף או יותר, חלק מהסלקטורים יתייחסו אליך בזלזול;

  • הגש מועמדות לכל המשרות הפנויות המתאימות למחסנית שלך, גם אם הן דורשות 1-3 שנות ניסיון מסחרי.

לאחר שעקבתי אחר כל ההמלצות הללו, מצב החיפוש השתפר משמעותית. ראשית, מתוך כ-12 תגובות חדשות, מחציתן הסתיימו כמעט מיד בפגישה, או בסקייפ, או ב-TK (שכבר היה שונה מאוד מהתעלמות בחודשים קודמים). שנית, אנשי משאבי אנוש התחילו לכתוב לי, אליהם לא הגבתי – במסנג'רים מיידיים, בדואר, בלינקדאין. שלישית, דרישות הניסיון המסחרי התבררו ממש לא מחמירות מדי - חברות רבות היו מוכנות לתקשר עם מועמד שלא נכנס לטווח המצוין של 1-3 שנים של עיסוק תאגידי. כתוצאה מכך - הצעה אחת לג'וניור, אחת לאמצע עם תקופת ניסיון. בסך הכל, החיפוש ארך חודשיים. עצה :
  1. כלול בקורות החיים שלך את כל ערימת השפות, הטכנולוגיות והמסגרות שאיתם עבדת.

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

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

כמה מילים על ראיונות
  1. הם תמיד שואלים על האוספים: אילו מהם יש, במה הם שונים, מתי הזמן הטוב ביותר להשתמש בהם.

  2. תמיד על מחלקות וממשקים מופשטים - האם יש להם שיטות, שדות, אילו, האם הם יכולים לעבור בירושה וכו'.

  3. כמעט תמיד על multithreading - מה השתמשת בעבודה שלך, מילות מפתח, שיטות, האם אתה מכיר את util.concurrent.

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

  5. לפעמים על אלגוריתמים - איזה מהם אתה מכיר, איזו מורכבות, למה, אתה יכול לכתוב אלגוריתם עכשיו.

  6. לפעמים מבוסס על דפוסים - אילו אתה מכיר, באילו אתה משתמש, כתוב יחיד או מפעל.

  7. לפעמים ב-SQL - סוגי JOIN, מהי טרנזקציה, איך מבצעים אותה ב-JDBC, כותבים שאילתה קצרה.

למעשה, הכל מאוד תלוי בחברה : מישהו לא שואל שאלה אחת על Java Core, אלא מבלה 40 דקות בדיבור על מסגרות ו-SQL; יש אנשים שלא משתמשים במסגרות פופולריות בכלל ושואלים רק על אלגוריתמים, סוגים, אוספים וזיכרון. כמחצית מהמפגשים החלו במבחנים - לפעמים ברוסית, לפעמים באנגלית (20-30 שאלות במשך 20-30 דקות); בדרך כלל שאלות ברמה של "הנה הקוד, האם הוא ירוץ או לא, ואם לא, אז באיזה שורה" או "הנה מספר אובייקטים, האם הם יהיו שווים לאחר N פעולות". כמה מילים על מפרט טכני : 70% מהחברות שמתחילות תקשורת שלחו לי מפרט טכני לפני או אחרי הפגישה. בדרך כלל, ההשלמה ניתנת מיומיים עד שבוע, אך לרוב ניתן להזיז מעט את המועדים. כל דבר יכול לשמש כמפרט טכני. הנה הדוגמאות שעשיתי:
  • דף אנשי קשר עסקיים בפרופיל Salesforce עם עריכה והוספת רשומות חדשות;

  • הדמיית מעלית בבניין רב קומות באמצעות Spring State Machine עם בקרת קונסולה;

  • אפליקציית אנדרואיד המבוססת על ספריית LibGDX עם פלט טקסט תו אחר תו בעת לחיצה על כפתור;

  • חיקוי REST של שיתוף רכב, עם הוספת לקוחות באמצעות בקשת HTTP והחזרת JSON;

  • בעיה של מיון גרף לא מכוון דרך תא פנוי;

  • חיפוש משולשים שווה שוקיים באמצעות קואורדינטות מקובץ;

  • Refactoring של קוד מוגמר באמצעות Stream API;

  • מחשבון ממשק משתמש עם תמיכה בביטויים טרינריים;

  • מרוץ שרשורים עם כתיבת התוצאות לקובץ.

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

  2. בדוק את היעילות של הקוד שלך - פעם דחו אותי בגלל שבין השאר השתמשתי ב-PrintStream במקום BufferedWriter.

  3. תכננו את זמן הביצוע שלכם עם מרווח של 50% - עדיף להתחיל ולסיים מוקדם יותר מאשר לעשות דחיפה ב-8 בבוקר של המועד האחרון.

ובכן, כל מה שרציתי, אני חושב שכתבתי. הדבר החשוב ביותר הוא שהמים שוחקים אבנים. אתה לא יכול לכתוב הרבה, הרבה בג'אווה, ואז לחפש עבודה הרבה מאוד זמן, ובסוף להמציא כלום. אם מומחה למדעי הרוח בן 30 הצליח לעשות זאת, אתה יכול לעשות את זה אפילו טוב יותר. העיקר לא לפחד מהשיחות הראשונות, המטלות הטכניות והראיונות: אחרי כל זמן כושל, הובטח לי ללמוד משהו בעצמי ולשפר אותו - ככל שיותר זמן, כך אתה מרגיש יותר ביטחון. אם איפשהו זה יצא כאוטי או שיש טעויות - אני מתנצל מראש, כתוב, אני אתקן את זה. אני מקווה שהניסיון שלי יעזור לפחות למישהו =)
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION