Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The Programmer Life Cycle

4,493 views

Published on

Not unlike the software systems they construct, programmers follow a life cycle, one that predicts their productivity.

Published in: Business, Technology
  • There is a REAL system that is helping thousands of people, just like you, earn REAL money right from the comfort of their own homes. The entire system is made up with PROVEN ways for regular people just like you to get started making money online... the RIGHT way... the REAL way. ♣♣♣ http://ishbv.com/ezpayjobs/pdf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❶❶❶ http://bit.ly/2Q98JRS ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ❤❤❤ http://bit.ly/2Q98JRS ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to enjoy the Good Life: making money in the comfort of your own home with just your laptop, then this is for YOU... ◆◆◆ http://ishbv.com/goldops777/pdf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • The Scrambler Unlock Her Legs | 95% Off by Bobby Rio-Rob Judge? ➤➤ http://scamcb.com/unlockher/pdf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

The Programmer Life Cycle

  1. 1. The Programmer Life-Cycle <ul><li>from the book </li></ul><ul><li>Lord of the Files </li></ul><ul><li>Essays on the Social Aspects of Software Engineering </li></ul><ul><li>Russell Ovans </li></ul><ul><li>a talk given to the Social Informatics Cluster University of Edinburgh 18-11-2011 </li></ul>
  2. 2. This is a story... <ul><li>...about my experiences teaching software engineering at the University of Victoria </li></ul><ul><li>...while working as a senior software engineer in the Silicon Valley </li></ul><ul><li>...and how it led me to start my own successful company </li></ul><ul><li>...and write a book of essays on the social aspects of software engineering </li></ul>
  3. 3. University of Victoria: 2003-05
  4. 4. Teaching This: Software Life Cycle
  5. 5. While Working in Palo Alto: 2000-2005
  6. 6. Programmer Productivity <ul><li>Textbook I was teaching from estimated that for the average programmer: 500 LOC/month </li></ul><ul><ul><li>500/(40*4.33) = ~3 LOC/hour </li></ul></ul><ul><li>Why so absurdly low? </li></ul><ul><li>Why doesn't that get you fired? </li></ul><ul><li>What is the difference between the best and worst programmers? </li></ul>
  7. 7. Is Productivity Constant? <ul><li>Is it constant for the same programmer over time? </li></ul><ul><li>Observation: my own productivity followed a predictable series of stages </li></ul><ul><li>Do programmers have a life cycle? </li></ul><ul><li>Everything we do as software engineers falls under one of the stages of the SDLC, but how well we do it depends on where we are in the Programmer Life Cycle </li></ul>
  8. 8. Programmer Life Cycle <ul><li>1. Euphoric </li></ul><ul><li>2. Productive </li></ul><ul><li>3. Irreplaceable </li></ul><ul><li>4. Resentful </li></ul><ul><li>5. Bored </li></ul><ul><li>6. Unproductive </li></ul>
  9. 9. Stage 1: Euphoric <ul><li>Stimulated by new company or significantly new project </li></ul><ul><li>Escape from previous position that was boring or underutilizing programmer's talent </li></ul><ul><ul><li>programmers frequently change employers </li></ul></ul><ul><li>Short duration </li></ul><ul><ul><li>Acclimatized to new environment </li></ul></ul><ul><ul><li>Learn new tools </li></ul></ul>
  10. 10. Stage 2: Productive <ul><li>Programmer develops or takes ownership of mission-critical software system </li></ul><ul><li>Steadily rising value within the enterprise </li></ul><ul><li>Programmer is left alone </li></ul><ul><ul><li>No knowledge transfer, no meetings, no management of others, no expectations </li></ul></ul><ul><ul><li>Usually lasts for six months </li></ul></ul><ul><ul><li>Thousands of LOC/month </li></ul></ul>
  11. 11. Euphoric + Productive = Honeymoon Phase
  12. 12. Stage 3: Irreplaceable <ul><li>Programmer prestige and value to enterprise is at its peak </li></ul><ul><ul><li>intellectual property vests with programmer </li></ul></ul><ul><ul><li>golden handcuffs : compensation, benefits, stock </li></ul></ul><ul><li>Management becomes insecure due to loss of control </li></ul><ul><ul><li>shift in power dynamic from manager to programmer, which leads to... </li></ul></ul>
  13. 13. Stage 4: Resentful <ul><li>Management resents that a single individual is now responsible for success-failure of the venture </li></ul><ul><ul><li>Technical jealousy if manager used to do programmer's job </li></ul></ul><ul><ul><li>Asserts ownership of programmer's time and space </li></ul></ul><ul><li>Programmer resents the stress and demand of being at work 24/7 </li></ul><ul><ul><li>Crucial management mistake: programmer is rewarded with additional responsibility </li></ul></ul>
  14. 14. Irreplaceable + Resentful = Volatility Phase <ul><li>Two outcomes possible... </li></ul>
  15. 15. Outcome 1: Programmer Quits <ul><li>Programmer quits due to additional workload coupled with stress of being irreplaceable yet resented </li></ul>
  16. 16. Outcome 2: Uneasy Peace <ul><li>Stabilize into equilibrium of mutual need </li></ul>
  17. 17. Stage 5: Bored <ul><li>Primary activities no longer about programming </li></ul><ul><li>Knowledge transfer </li></ul><ul><li>Supervising other team members </li></ul><ul><li>Documentation </li></ul><ul><li>Maintenance </li></ul><ul><li>Meetings </li></ul><ul><li>Productivity < 500 LOC/month </li></ul>
  18. 18. Stage 6: Unproductive <ul><li>Management sees the programmer as coasting </li></ul><ul><li>Programmer only works hard enough not to get fired </li></ul><ul><li>Programmer updates his/her resume/CV </li></ul><ul><li>Result: </li></ul><ul><ul><li>New employer; or, </li></ul></ul><ul><ul><li>New project/challenge. </li></ul></ul>
  19. 19. Productivity as a Function of Stage
  20. 20. Student Feedback <ul><li>Students loved this lecture </li></ul><ul><ul><li>enjoyed it when I talked about programming as a career </li></ul></ul><ul><ul><li>my experience at web-based startups was in stark contrast to textbook </li></ul></ul><ul><li>Published as a paper in ACM Software Engineering Notes in 2004 </li></ul>
  21. 21. What Was This Really About? <ul><li>My own personal experience as senior software engineer at... </li></ul>
  22. 22. AbeBooks.Com (1998-2000) Rick and Me
  23. 23. Prophet.Net (2000-2005) Tim and Me
  24. 24. Backstage Technologies (2006-10) Me and Chris
  25. 26. Why I Wrote This Book <ul><li>Public perception of computer scientist as loner, loser, or geek is at odds with reality of software engineering as a social profession </li></ul><ul><ul><li>Reality is more like Office Space and less like Big Bang Theory </li></ul></ul><ul><ul><li>Students always struggled with working in groups </li></ul></ul>
  26. 28. Negative Stereotypes...?
  27. 29. Software Engineering is a Social Activity <ul><li>Software Engineering is: </li></ul><ul><li>not just programming </li></ul><ul><li>multi-person construction of multi-version software (Parnas, 1975) </li></ul><ul><li>Social means: </li></ul><ul><li>the interactions with others and the collective coexistence </li></ul><ul><ul><li>internal interactions: team members </li></ul></ul><ul><ul><li>external interactions: customers </li></ul></ul>
  28. 30. The Human Factors of Programmers <ul><li>software development is done by teams of people working towards a common goal </li></ul><ul><li>programmers are not interchangeable eunuchs </li></ul><ul><li>project success is effected by the team's ability to communicate and cooperate, and to be compassionate and supportive </li></ul>
  29. 31. We Are All Imperfect <ul><li>“ Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.” </li></ul><ul><ul><li>Fred Brooks, The Mythical Man Month </li></ul></ul><ul><li>“ Adjusting to the imperfections of others is, I think, the most difficult part of learning to be a software engineer.” </li></ul><ul><ul><li>Me, Lord of the Files </li></ul></ul>
  30. 32. Lord of the Files Thesis <ul><li>Technical and mathematical maturity is not enough </li></ul><ul><ul><li>Also need plain old maturity </li></ul></ul><ul><li>Overcome your insecurities and be nice to your co-workers </li></ul><ul><ul><li>Better software will result </li></ul></ul><ul><li>Software Engineer = Good Programmer + Good Person </li></ul><ul><li>More info: http://facebook.com/LOTFiles </li></ul>

×