Being an Excellent Software Developer
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Being an Excellent Software Developer

on

  • 1,484 views

This was the keynote at Pittsburgh TechFest...

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?

Statistics

Views

Total Views
1,484
Views on SlideShare
1,186
Embed Views
298

Actions

Likes
2
Downloads
10
Comments
1

6 Embeds 298

http://leandog.com 134
http://www.leandog.com 92
http://lanyrd.com 43
http://localhost 24
https://www.linkedin.com 4
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • no
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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 Presentation Transcript

  • 1. Being An Excellent Software DeveloperMichael “Doc” Norton ◊ @DocOnDev ◊ doc@leandog.com
  • 2. Being An Excellent Software DeveloperMichael “Doc” Norton ◊ @DocOnDev ◊ doc@leandog.com
  • 3. Excellent: remarkable character worthy of praise
  • 4. SoftwareDeveloper: research, design, develop, and test
  • 5. Excellent Software Developer:Remarkable character worthy of praise in the research, design, development, and testing of software
  • 6. Right. how?
  • 7. Master y
  • 8. Know
  • 9. KnowYour
  • 10. KnowYour hit S
  • 11. Know Stuff Your
  • 12. Know Craft Your
  • 13. Know Craft Your
  • 14. Know Craft Your
  • 15. Apprenti Journeyman Master ce
  • 16. Apprenti Journeyman Master ce Shu Ha Ri
  • 17. Shu Ha Ri Innovator Proficient Expert Advance Compete d nt BeginnerNovice
  • 18. ShuNovice
  • 19. Shu • Little or no knowledge • Little or no experienceNovice • Need rules • Impatient for results Need a mentor and close monitoring
  • 20. ShuAdvancedBeginner
  • 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. HaCompetent
  • 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. HaProficient
  • 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. RiExpert
  • 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. RiInnovator
  • 29. Ri • Very Rare • Develop new models andInnovator approaches Continue to practice.
  • 30. Shu Ha Ri Innovator Proficient Expert Advance Compete d nt BeginnerNovice
  • 31. Shu Ha Ri Innovator Proficient Expert Advance Compete d nt BeginnerNovice
  • 32. Polyglo t
  • 33. Polyglo thttp://memeagora.blogspot.com/2006/12/polyglot- programming.html
  • 34. Polygl otComputer program or script written in a valid form of multiple programming languageshttp://memeagora.blogspot.com/2006/12/polyglot- programming.html
  • 35. Collegi al
  • 36. Collegi al
  • 37. Collegi al United in a common purpose andrespecting each others abilities to work toward that purpose
  • 38. T-Shape
  • 39. T- ShapeIndividuals able to apply deep vertical skills but who have empathy with other skills in the team
  • 40. empathy with other skills apply deep vertical skills
  • 41. empathy with other skills apply deep vertical skills
  • 42. Today’s Sessions
  • 43. Top 15
  • 44. Thanks