מפת דרכים של מפתח Java
חבר שלי תהה למה מפתחים תמיד כל כך שמחים. התשובה שאיתה הגיעה הייתה פשוטה ומפתיעה: הם עושים מה שהם אוהבים ומרוויחים כסף גדול. ברוכים הבאים לעולם מפתחי התוכנה.
שכר מפתח תוכנה
אני רוצה לספר לכם על משכורות המפתחים. איך הארץ שוכנת עם משכורות, לאן כדאי ללכת לעבוד, ולאן לא. אם אינך מפתח ומנסה לברר זאת בעצמך, ייתכן שתקבל נתונים שנוי במחלוקת למדי. הנקודה העיקרית היא שגורם מרכזי המשפיע על שכר היזם אינו הכשירות, אלא מקום העבודה. לפעמים, בהינתן רמת הכשרה שווה, ההבדל בין מקום עבודה טוב לרע יכול להיות פי 2 עד 10(!) כל רגע נתון של ההסמכה שלך קבועה. אתה לא יכול להיות מוכשר כפול בחודש ולקבל תשלום כפול. אבל אתה יכול לשנות מקום עבודה תוך חודש ולקבל משכורת גדולה פי שניים. פעם בזרימת חודשיים המשכורת שלי מוכפלת בשלוש (!) - חוויה בלתי נשכחת. אז בואו נגלה איזה מקום הכי טוב. להלן שלושת הגורמים המשפיעים בעיקר על רמות השכר בחברות:- האם העסק העיקרי של החברה הוא פיתוח תוכנה
- בין אם החברה מכוונת לשוק גלובלי או מקומי
- היכן ממוקם המשרד הראשי: מדינה מפותחת או מדינה מתפתחת
מספרים ספציפיים
מכיוון שהמשכורות שונות בחלקים שונים של העולם, אני מציע לקחת את השכר של מפתח Java בכיר עם 5 שנות ניסיון כנקודת התחלה ולקרוא לזה "5 שנים מקסימום". כל הנתונים להלן יינתנו כאחוז מסכום זה. הנה כמה דוגמאות למשכורות "מקסימום 5 שנים" בערים שונות בעולם:


מה אתה יכול להשיג אלא אם כן אתה עושה דברים מטופשים
אם אתה מתחיל לעבוד על החינוך העצמי שלך בתכנות עכשיו, השכר שלך יכול להיראות כך:
לְתַכְנֵן
0-3 חודשים (סטודנט)
אתה יודע מעט מאוד על תכנות. אולי למדת את זה בבית הספר או במכללה ברמה בסיסית. מה שאתה צריך לעשות זה ללמוד איך לתכנת וללמוד Java. המטרה שלך היא לקבל עבודה כמפתח ג'אווה ג'וניור בחברה ברמה 3 ומעלה. במשך שלושת החודשים הראשונים של התוכנית לא תקבל כלום, כי אתה רק לומד כיצד לתכנת. אבל ככל שמתחילים מוקדם יותר טוב יותר. הזמן הטוב ביותר הוא עכשיו. בעתיד, כאשר יש לך משפחה והמון הלוואות, יהיה הרבה יותר קשה להזדכות מחדש. כדי לתקן את הטעות שלך תצטרך להניח בצד כסף כדי לשלם עבור לפחות שנה של חיים נורמליים. אל תעשה טעויות מטופשות.3-15 חודשים (מפתח ג'אווה ג'וניור)
אתה כבר עובד כמפתח תוכנה והניסיון שלך גדל מדי יום. אל תירגע. יש לך הרבה מה לעשות לפני שתנוח על משוטים. מה שאתה צריך לעשות הוא - ללמוד טכנולוגיות שתצטרך כמפתח בינוני. מה אלה? העולם משתנה כל הזמן. אני אעמיס אותך בעצות והחיים ישנו את הכל. מצא כמה משרות פנויות באינטרנט וראה מה אתה צריך להגיש מועמדות. הקפד לקרוא ספר מאת ברוס אקל "לחשוב בג'אווה". המטרה שלך בשנה הראשונה לעבודה כמפתח ג'אווה ג'וניור היא להגיע לרמה של מפתח Java Middle. אף אחד לא אומר שזה יהיה קל, אבל זה אפשרי עבור אדם ממוקד מטרה. זה יגדיל את המשכורת שלך ברגע עד 40% מ"מקסימום 5 שנים" (50 אלף דולר ל-SF ולונדון, 6 אלף דולר לבנגלור).תכנות דו-שנתי (מפתח ג'אווה אמצעי, רמה 1)
עשית עבודה טובה בשנה שעברה ועכשיו אתה מפתח Java Middle. אתה יכול לחיות די טוב ולהרוויח 50% ממשכורתו של מפתח Java בכיר. אתה מקבל כמה משימות רציניות בעבודה והניסיון שלך גדל באופן משמעותי. אתה תגיע לרמה של מפתח Java בכיר תוך שנתיים או שלוש. לא צריך למהר. ממילא לא תקבל עליות גדולות בשכר. מה שאתה צריך לעשות זה ללמוד דפוסי עיצוב, לקרוא - הקוד של McConnell Complete. שפר את איכות הקוד וכישורי הצוות שלך. צור כלל של קריאת ספר אחד על תכנות מחשב בכל חודש. ואז, בעוד 4 שנים תהיו חכמים יותר ב-50 ספרים מכל השאר. אל תדחה את זה: לא תקבל כמות גדולה יותר של זמן פנוי, חוץ מזה, סביר להניח שתקים משפחה, או אם יש לך כזו, היא תגדל. המטרה שלך היא לבחור כמה טכנולוגיות להתמחות בהן כמפתח Java בכיר. אתה לא יכול ללמוד את כולם, אתה יודע. וזו תמיד החלטה טובה להפוך לגורו בהתמחות אחת.
תכנות תלת-ממדיות (מפתח ג'אווה אמצעי, רמה 2)
כעת אתה מפתח בינוני מנוסה ואתה חושב להיות מפתח בכיר. זה נעים וגם יוקרתי. המשכורת שלך עולה על 60% מ"המקסימום של 5 שנים" (10 אלף דולר בבנגלור, 25 אלף דולר בקייב, 40 אלף דולר בברלין, 80 אלף דולר בניו יורק). מרגע זה והביקוש לאנשי מקצוע כמוך עולה ההצעה. תמיד תוכל למצוא עבודה תוך מספר ימים וכמעט לא תרוויח פחות ממה שאתה מרוויח עכשיו. זה, כמובן, אם אתה לא עושה שום דבר טיפשי. מה שאתה צריך לעשות זה להמשיך ללמוד את הטכנולוגיות שבחרת. תעבוד טוב יותר. לא למען המעסיק שלך, למען שלך. הגש בקשה להשתתף בפרויקטים הכוללים טכנולוגיות מבטיחות (כמו BigData, כרגע מאמר זה נכתב). אתה תבלה 8 שעות ביום במשרד בכל מקרה, אז למה לא לקבל קצת יותר כסף עבור זה, ומה שחשוב הרבה יותר, הניסיון היקר ביותר שתזדקק לו בעתיד. המטרה שלך היא למצוא עבודה חדשה. תמיד אפשר למצוא צוות טוב. אתה תתמודד עם פרויקטים וטכנולוגיות חדשות. אתה לא צריך להשתרש לכיסא שלך. אם אתה עדיין עובד בחברה ברמה שלישית, תחשוב על העסקה לרמה רביעית.תכנות שנה 5 (מפתח ג'אווה בכיר, רמה 1
אתה כעת מפתח בכיר. אולי, לא הגיע לך, ואתה מרגיש את זה. ובכל זאת, ברכותיי. זה לא משנה אם אתה ראוי לתפקיד שלך עכשיו, כל מה שחשוב שתהיה ראוי לו בעתיד. אני חושב שתסכים שעדיף לקבל עבודה טובה ואחרי לצמוח לרמה הנדרשת אז להיפך. אני מקווה שלא שכחת את עצתי לקרוא ספר אחד בחודש? כל תלמיד יקנא בידע ובכישורים שלך עכשיו. ליתר דיוק, הוא יתפלל עליהם. רק תחשוב על זה: יש לך רווחים רציניים, קרוב ל-90% מהמשכורת של "5 שנים מקסימום". אתה כנראה עדיין צעיר. העולם למרגלותיך. מה שאתה צריך לעשות הוא להעריך מחדש את הטכנולוגיות שבחרת. אולי, אתה צריך לשנות התמחות. העולם השתנה, הטכנולוגיות השתנו, וצברת לא מעט ידע בשנתיים האחרונות. מה שתבחר עכשיו יהפוך עבורך לכותרת לכמה שנים הבאות. זה הזמן לבחור את הטכנולוגיות המועדפות עליך. המטרה שלך היא לבחור את כיוון הצמיחה שלך. הם רבים, אף אחד לא יכול למנות את כולם, אבל הבחירה שלך צריכה להיעשות כבר עכשיו. אם תעשה שינוי קטן היום, תקבל שינוי גדול בעתיד.תכנות שנה 6 (מפתח ג'אווה בכיר, רמה 2)
החלטת על עתידך ואתה עובד על כך שחלומך יתגשם. כיוון שנבחר נכון יחד עם רצון להתקדם – והתוצאה לא תארך זמן רב. מזל טוב. אני שמח לראות שיש עוד אדם אחד שהנחית את החלום שלו. יש אמת אחת עמוקה. אנשים מרבים להעריך יתר על המידה את מה שהם יכולים להשיג בשנה ומזלזלים במה שהם יכולים לעשות בחמש. תסתכל חמש שנים אחורה. זה כל - כך. מה שאתה צריך לעשות זה להימנע מהחלטות לא נבונות ולא להתעצל. המטרה שלך היא לבחור כיוון ולהתקדם. או שחשבתם שזה נגמר כאן? זכור את הסיום שלך. זה לא הסוף, זו רק ההתחלה.אתה התמחות עתידית

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

לראות את נאפולי ולא למות.
אין לך עדיין משפחה ואתה אוהב לטייל . oDesk זה הכל. מצא לקוח, הסכים לתעריף של $20-$50 לשעה, קח איתך מחשב נייד ולך! המשכורת שלך תספיק לחיות בכל מקום בעולם. למה שלא תתחיל להגשים את החלומות שלך מיד?אני לא רוצה לתכנת, אני בת..
אם את בת , ייתכן שתצטרך לקחת חופשת לידה . זה נשמע כמו בדיחה סקסיסטית, וזהו. ובכל זאת, יש בזה הרבה שכל ישר. סביר להניח שלקיחת חופשת לידה תוכל לקבל הרבה כסף לחופשת לידה (במדינות עם הגנה סוציאלית גבוהה). יש חברות שלא משלמות כלום, ויש כאלה שמשלמות טוב. אחת הסטודנטיות שלי קיבלה שליש מהמשכורת השנתית בחופשת לידה. וזה קרה באביב 2009, במהלך פיטורים. ובעוד שנה וחצי אתה עשוי לחזור, להיות לפחות מפתח אמצעי.לבבל 6

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

3 אלי, תסיים
- שוב שלום! עכשיו אני אתן לך מבוא קצר לשיטה finalize() . שיטה זו נקראת על ידי מכונה וירטואלית של Java על האובייקט לפני שהאובייקט מושמד. למעשה, שיטה זו הפוכה מהקונסטרוקטור. בשיטה זו ניתן לשחרר את המשאבים המשמשים אובייקט. - למחלקה Object יש את השיטה הזו, לכן, לכל מחלקה יש את זה ( כל המחלקות ב-Java נחשבות לירושות מהכיתה Object ומכילות עותק של השיטות שלה ). אם תכתוב במחלקה שלך את השיטה finalize() והיא תיקרא לפני שאובייקטים של מחלקה זו יושמדו. דוגמה:
4 אלי, חיי אובייקט
- אני גם רוצה לספר לך כמה דברים מעניינים על חיי האובייקט. בג'אווה, קשה מאוד לאבד את האובייקט בטעות; אם יש לך הפניה לאובייקט, זה אומר שהאובייקט בוודאי חי. - בתוך הפניה לאובייקט מאחסנת מספר - כתובת של אובייקט זה בזיכרון. אתה לא יכול לשנות את המספר הזה, להגדיל או להקטין אותו. אינך יכול ליצור הפניה כאשר יש לך רק כתובת בזיכרון. אתה יכול ליצור רק אובייקט חדש ולהקצות את ההתייחסות שלו למשתנה. זו הדרך היחידה לקבל הפניה חדשה. - אני רואה. כלומר, אם אני מגדיר ל-null (מחק) את כל הפניות לאובייקט, לעולם לא אקבל את הפניות האובייקט ואיגש אליה? - כן. אבל לעתים קרובות ההפך הוא הנכון - יש יותר מדי חפצים חיים שאינם בשימוש. רוב התוכניות יוצרות עשרות אובייקטים ומאחסנות אותם ברשימות שונות בזמן ריצה, אך לעולם לא מנקות את הרשימות הללו. - לרוב, מתכנתים מתייגים אובייקטים לא רצויים כ"נמחקים", זה הכל. לאף אחד לא אכפת מהסרתם מהרשימות. אז תוכניות ג'אווה גדולות נוטות להתנפח - יותר ויותר אובייקטים שאינם בשימוש נשארים בחיים בזיכרון. - זה הכל. בעתיד תמיד אפנה את תשומת לבך לחפצים שאינם בשימוש ולסילוקם הנכון. - אוקיי, תודה. הבהרת כמה דברים לגבי ההפניות.5 דייגו, משימות לכל החיים של אובייקט
היי, אמיגו! הנה כמה משימות בשבילך:משימות | |
---|---|
1 | 1. שיטת finalize() של מחלקה Cat כתוב שיטה מוגנת void finalize() throwsable בכיתה Cat |
3 | 2. Classes Cat and Dog ושיטת finalize() לכל מחלקה בכל מחלקה Cat and Dog כתוב שיטה finalize() אשר מציגה למסך הודעה שהאובייקט מושמד. |
3 | 3. 50,000 אובייקטים ממחלקת חתול ו-50,000 אובייקטים מכיתה Dog צור בלולאה 50,000 אובייקטים ממחלקת חתול ו-50,000 אובייקטים מכיתה דוג. (המכונה הוירטואלית של Java תהרוס אובייקטים שאינם בשימוש, אז השיטה finalize() תיקרא לפחות פעם אחת). |
4 | 4. Cat counter ב-Cat constructor [public Cat()], הגדל את ה-cat counter (משתנה סטטי catCount מאותה מחלקה) ב-1. בשיטה finalize() הקטינו ב-1. |
6 אלי, שיעורים ושיטות סטטיות
- הנה נושא חדש ומעניין. אני רוצה לספר לכם על המשתנים והשיטות הסטטיות. - אה, כבר שמעתי על משתנים סטטיים. גם לגבי שיטות סטטיות, אני מניח. אבל אני רוצה לקבל יותר פרטים. - כאשר מכריזים על משתנים במחלקה, אנו מציינים אם המשתנים הללו נוצרים במופע משותף יחיד, או שיש צורך ליצור עותקים שלהם עבור כל אובייקט. כברירת מחדל, עותק חדש של משתנה מחלקה נוצר עבור כל אובייקט של מחלקה זו. כך זה נראה:



7 רישא, שיעורים ושיטות סטטיות
- בנוסף לשיטות סטטיות יש גם מחלקות סטטיות . נשקול את המקרה הזה מאוחר יותר, אני רק הולך להראות לך דוגמה שלו:
8 דייגו, משימות על שיטה סטטית
היי, אמיגו! הנה כמה משימות מעניינות על שיטות סטטיות:משימות | |
1 | 1. Class Cat ומשתנה סטטי catCount כתוב משתנה סטטי int catCount במחלקה Cat. צור בנאי [ public Cat() ], שבו יש להגדיל את המשתנה הנתון ב-1. |
2 | 2. שיטות סטטיות: int getCatCount() ו-setCatCount(int) הוסף שתי שיטות סטטיות למחלקה Cat: int getCatCount( ) ו- setCatCount(int) שבאמצעותן ניתן לקבל / לשנות את מספר החתולים (המשתנה catCount) |
3 | 3. Class Util יישם שיטה סטטית כפול getDistance(x1, y1, x2, y2) . זה צריך לחשב את המרחק בין נקודות. השתמשו בשיטה double Math.sqrt(double a) כדי לחשב את השורש הריבועי של הפרמטר שעבר |
4 | 4. Class ConsoleReader כתוב מחלקה ConsoleReader, שיהיו לו 4 שיטות סטטיות: - String readString() לקריאת מחרוזות מהמקלדת - int readInt() לקריאת מספרים מהמקלדת - double readDouble() לקריאת מספרים חלקים מהמקלדת - void readLn () כדי להמתין ללחיצה על Enter [השתמש ב-readString()] |
5 | 5. Class StringHelper כתוב מחלקה StringHelper, שתהיה לה 2 שיטות סטטיות: - String multiply(String s, int count) אמור להחזיר למחרוזת ספירה חוזרת של פעמים. - String multiply(String s) אמור להחזיר את המחרוזת s שחוזרת על עצמה 5 פעמים. דוגמה: Amigo → AmigoAmigoAmigoAmigoAmigo |
9 פרופסור, היקף ותקופת חיים סטטיים של אובייקט

10 חוליו
היי, אמיגו! עשית עבודה נהדרת היום. בגלל זה אני פשוט לא יכול לתת לך יותר. יאללה, שב, ההופעה מתחילה:11 קפטן סנאים
– שלום חייל! - בוקר טוב אדוני! - יש לי חדשות מדהימות בשבילך. הנה בדיקה מהירה כדי לחזק את הכישורים שלך. עשה זאת כל יום, ותשפר את כישוריך במהירות. משימות תוכננו במיוחד לביצוע ב-Intellij IDEA.משימות נוספות לעשות ב-Intellij Idea | |
---|---|
1 | Class Cat ומשתנה סטטי catCount כתוב משתנה סטטי public int catCount במחלקה Cat. צור בנאי [Public Cat()]. תן למשתנה הסטטי catCount להגדיל ב-1 בכל פעם שאתה יוצר חתול (אובייקט חדש Cat). צור 10 אובייקטים Cat והצג את הערך של המשתנה catCount . |
2 | 2. חתולים סטטיים
כדי ליצור משתנה של חתולים השתמש בשורת הקוד: public static ArrayList<Cat> cats = new ArrayList<Cat>(); |
3 | 3. הזז שינוי סטטי אחד הזז שינוי סטטי אחד כך שהקוד יתחבר. |
4 | 4. מספר מינימלי של מילות מפתח סטטיות הוסף את המספר המינימלי של מילות מפתח סטטיות כדי לגרום לקוד להדר ולהשלים את התוכנית בהצלחה. |
5 | 5. יש רעיונות חדשים? בוא נחשוב...
|
6 | 6. KissMyShinyMetalAss כתוב כיתה בשם KissMyShinyMetalAss. צור אובייקט של מחלקה זו, ואז הצג אותו למסך. |
7 | 7. שם שלושה משתנים סטטיים כתוב 3 משתנים סטטיים ציבוריים: String Solution.name , String Cat.name , String Dog.name |
GO TO FULL VERSION