Searching...
עברית
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
More Joel on Software

More Joel on Software

Further Thoughts on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and ... or Ill Luck, Work with Them in Some Capacity
by Joel Spolsky 2008 320 pages
4.05
546 ratings
Listen
Try Full Access for 7 Days
Unlock listening & more!
Continue

Key Takeaways

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

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

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

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

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

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

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

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

כלכלה 101 מתהפכת. ניהול באמצעות תמריצים כספיים בלבד (בונוסים על מדדים ספציפיים) הוא נגד פרודוקטיבי. הוא מחליף מוטיבציה פנימית במוטיבציה חיצונית חלשה יותר ומעודד אנשים "לשחק" במערכת כדי למקסם את המדד במקום את התוצאה הרצויה. גישה זו היא ויתור על אחריות הניהול לבנות מערכות אפקטיביות ולהכשיר אנשים.

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

3. בסיס טכני חזק, כולל מושגים "קשים", חיוני לתכנתים בעלי יכולת אמיתית.

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

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

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

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

4. פיתוח תוכנה הוא מלאכה נפרדת ממדעי המחשב, ודורש מיומנויות מעשיות ותקשורת ברורה.

היכולת לכתוב בבירור בנושאים טכניים היא ההבדל בין מתכנת פשוט לבין מנהיג.

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

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

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

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

5. עיצוב תוכנה מוצלח חורג משימושיות וכולל דינמיקות חברתיות וקשר רגשי.

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

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

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

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

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

6. פתרון בעיות קשות ו"מסובכות" הוא מקור הערך העסקי האמיתי והיתרון התחרותי.

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

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

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

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

7. תכנון ריאלי, מבוסס נתונים, חיוני לניהול היקף ולשחרור מוצרים מוצלחים.

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

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

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

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

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

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

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

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

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

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

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

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

Last updated:

Want to read the full book?

Review Summary

4.05 out of 5
Average of 546 ratings from Goodreads and Amazon.

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

Your rating:
4.47
29 ratings

About the Author

ג'ואל ספולסקי הוא מפתח תוכנה, סופר ויזם ידוע. הוא היה שותף להקמת חברות כמו Fog Creek Software ו-Stack Overflow, ומוכר בזכות הבלוג המשפיע שלו, "Joel on Software". סגנון הכתיבה של ספולסקי זוכה לשבח על בהירותו, חוש ההומור שבו, והיכולת שלו לפשט מושגים מורכבים בצורה נגישה. הוא שואב מניסיונו הרב בתעשיית התוכנה, כולל תקופתו במיקרוסופט, ומספק תובנות בנושאי תכנות, ניהול ואסטרטגיות עסקיות. ספריו, ביניהם "More Joel on Software", הם אוספים של פוסטים פופולריים מהבלוג שלו, ומציעים עצות מעשיות ורעיונות מעוררי מחשבה למפתחי תוכנה ויזמים כאחד. עבודתו השפיעה רבות על קהילת מפתחי התוכנה והפכה אותו לדמות מוערכת בתחום.

Listen
Now playing
More Joel on Software
0:00
-0:00
Now playing
More Joel on Software
0:00
-0:00
1x
Voice
Speed
Dan
Andrew
Michelle
Lauren
1.0×
+
200 words per minute
Queue
Home
Swipe
Library
Get App
Create a free account to unlock:
Recommendations: Personalized for you
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
200,000+ readers
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Aug 3,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
200,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Start a 7-Day Free Trial
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Loading...