Being an Excellent Software Developer

1,834 views

Published on

This was the keynote at Pittsburgh TechFest

There was a time when knowing one language provided you with a life-long career. There was a time when technical prowess alone determined your value to the company. An excellent developer was an expert in their language and tools, relegated to an enclosed room, cranking code to meet specifications. Today, possessing only these traits can leave you at risk. In another few years, possessing these traits alone will likely leave you jobless. What does it take to be an excellent developer in today's fast-pace collaborative work environment?

Published in: Technology, Business
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
1,834
On SlideShare
0
From Embeds
0
Number of Embeds
327
Actions
Shares
0
Downloads
36
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Does this resonate with you at all?\n\nCall it what you want; junior, senior, lead - the general concept is the same (we hope)\n
  • Shu - Hold, Ha - Break, RI - Leave\nShu - follow rules as told, focus on how over why, generally one teacher\nHa - learning principles and theory, integrates new teachers into practice\nRi - Student adapts and learns from own practice and innovation\n
  • Dreyfus Model of Skills Acquisition\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Innovator - very few, \n
  • Innovator - very few, \n
  • Innovator - very few, \n
  • Innovator - very few, \n
  • Innovator - very few, \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • There’s a challenge in our field. Where do you think most people spend their careers?\n
  • What are we really learning on our path to mastery? [TO LEARN]\n
  • \n
  • \n
  • Java :: Closure, Groovy, Scala, JRuby, Jython, Rhino, AspectJ\n.NET :: VB.NET, C#, F#, J#, Lua, Ruby.NET\n\nfunctional, relational, object oriented, aspect oriented\n
  • \n
  • Keep your commitments.\nCommunicate Early and often\nShare credit for accomplishments, ideas, and contributions.\nHelp other employees find their greatness. \n\nDon't ever play the blame game.\nNever blind side a coworker, boss, or reporting staff person.\nBring suggested solutions with the problems to the meeting table.\nYour verbal and nonverbal communication matters.\n\n
  • Keep your commitments.\nCommunicate Early and often\nShare credit for accomplishments, ideas, and contributions.\nHelp other employees find their greatness. \n\nDon't ever play the blame game.\nNever blind side a coworker, boss, or reporting staff person.\nBring suggested solutions with the problems to the meeting table.\nYour verbal and nonverbal communication matters.\n\n
  • Deep Understanding of their area of specialization and a broad understanding of other disciplines within their broader role.\n\nA generalizing specialist is someone with one or more technical specialties who actively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas. - Coding Horror (Jeff Atwood)\n\nGeneralizing Specialist: A Definition\nA generalizing specialist is someone who:\nHas one or more technical specialties (e.g. Java programming, Project Management, Database Administration, ...).\nHas at least a general knowledge of software development.\nHas at least a general knowledge of the business domain in which they work.\nActively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas.\nGeneralizing specialists are often referred to as craftspeople, multi-disciplinary developers, cross-functional developers, deep generalists, polymaths, versatilists, or even "renaissance developers". \n \n\n
  • Deep Understanding of their area of specialization and a broad understanding of other disciplines within their broader role.\n\nA generalizing specialist is someone with one or more technical specialties who actively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas. - Coding Horror (Jeff Atwood)\n\nGeneralizing Specialist: A Definition\nA generalizing specialist is someone who:\nHas one or more technical specialties (e.g. Java programming, Project Management, Database Administration, ...).\nHas at least a general knowledge of software development.\nHas at least a general knowledge of the business domain in which they work.\nActively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas.\nGeneralizing specialists are often referred to as craftspeople, multi-disciplinary developers, cross-functional developers, deep generalists, polymaths, versatilists, or even "renaissance developers". \n \n\n
  • Deep Understanding of their area of specialization and a broad understanding of other disciplines within their broader role.\n\nA generalizing specialist is someone with one or more technical specialties who actively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas. - Coding Horror (Jeff Atwood)\n\nGeneralizing Specialist: A Definition\nA generalizing specialist is someone who:\nHas one or more technical specialties (e.g. Java programming, Project Management, Database Administration, ...).\nHas at least a general knowledge of software development.\nHas at least a general knowledge of the business domain in which they work.\nActively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas.\nGeneralizing specialists are often referred to as craftspeople, multi-disciplinary developers, cross-functional developers, deep generalists, polymaths, versatilists, or even "renaissance developers". \n \n\n
  • Deep Understanding of their area of specialization and a broad understanding of other disciplines within their broader role.\n\nA generalizing specialist is someone with one or more technical specialties who actively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas. - Coding Horror (Jeff Atwood)\n\nGeneralizing Specialist: A Definition\nA generalizing specialist is someone who:\nHas one or more technical specialties (e.g. Java programming, Project Management, Database Administration, ...).\nHas at least a general knowledge of software development.\nHas at least a general knowledge of the business domain in which they work.\nActively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas.\nGeneralizing specialists are often referred to as craftspeople, multi-disciplinary developers, cross-functional developers, deep generalists, polymaths, versatilists, or even "renaissance developers". \n \n\n
  • \n
  • \n
  • \n
  • Being an Excellent Software Developer

    1. 1. Being An Excellent Software DeveloperMichael “Doc” Norton ◊ @DocOnDev ◊ doc@leandog.com
    2. 2. Being An Excellent Software DeveloperMichael “Doc” Norton ◊ @DocOnDev ◊ doc@leandog.com
    3. 3. Excellent: remarkable character worthy of praise
    4. 4. SoftwareDeveloper: research, design, develop, and test
    5. 5. Excellent Software Developer:Remarkable character worthy of praise in the research, design, development, and testing of software
    6. 6. Right. how?
    7. 7. Master y
    8. 8. Know
    9. 9. KnowYour
    10. 10. KnowYour hit S
    11. 11. Know Stuff Your
    12. 12. Know Craft Your
    13. 13. Know Craft Your
    14. 14. Know Craft Your
    15. 15. Apprenti Journeyman Master ce
    16. 16. Apprenti Journeyman Master ce Shu Ha Ri
    17. 17. Shu Ha Ri Innovator Proficient Expert Advance Compete d nt BeginnerNovice
    18. 18. ShuNovice
    19. 19. Shu • Little or no knowledge • Little or no experienceNovice • Need rules • Impatient for results Need a mentor and close monitoring
    20. 20. ShuAdvancedBeginner
    21. 21. ShuAdvance • Some experience • Can find informationd • Break free of some rulesBeginner • Can’t filter irrelevant information • Can’t determine importance Need experience in limited and controlled real-world situations
    22. 22. HaCompetent
    23. 23. HaCompete • Have a mental model • Associations formednt • Can handle the unknown • Methodical Need a variety of real-world situations to form connections between already held ideas and models
    24. 24. HaProficient
    25. 25. Ha • Interested in big picture • Impatient with over-simplifiedProficient information • Grasp and apply maxims • Internalization Need a lot of practice, hindered as little as possible by policies or guidelines
    26. 26. RiExpert
    27. 27. Ri • True Authority • Developed IntuitionExpert • Deep pool of knowledge • Can Interlink Skills • Tend to be inarticulate in how they arrive at conclusions Continue to practice. Learn by teaching.
    28. 28. RiInnovator
    29. 29. Ri • Very Rare • Develop new models andInnovator approaches Continue to practice.
    30. 30. Shu Ha Ri Innovator Proficient Expert Advance Compete d nt BeginnerNovice
    31. 31. Shu Ha Ri Innovator Proficient Expert Advance Compete d nt BeginnerNovice
    32. 32. Polyglo t
    33. 33. Polyglo thttp://memeagora.blogspot.com/2006/12/polyglot- programming.html
    34. 34. Polygl otComputer program or script written in a valid form of multiple programming languageshttp://memeagora.blogspot.com/2006/12/polyglot- programming.html
    35. 35. Collegi al
    36. 36. Collegi al
    37. 37. Collegi al United in a common purpose andrespecting each others abilities to work toward that purpose
    38. 38. T-Shape
    39. 39. T- ShapeIndividuals able to apply deep vertical skills but who have empathy with other skills in the team
    40. 40. empathy with other skills apply deep vertical skills
    41. 41. empathy with other skills apply deep vertical skills
    42. 42. Today’s Sessions
    43. 43. Top 15
    44. 44. Thanks

    ×