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?
21. Shu
Advance
• Some experience
• Can find information
d • Break free of some rules
Beginner • Can’t filter irrelevant
information
• Can’t determine importance
Need experience in limited and
controlled real-world situations
23. Ha
Compete
• Have a mental model
• Associations formed
nt • Can handle the unknown
• Methodical
Need a variety of real-world
situations to form connections
between already held ideas and
models
25. Ha • Interested in big picture
• Impatient with over-simplified
Proficient
information
• Grasp and apply maxims
• Internalization
Need a lot of practice, hindered
as little as possible by policies or
guidelines
27. Ri • True Authority
• Developed Intuition
Expert
• Deep pool of knowledge
• Can Interlink Skills
• Tend to be inarticulate in how
they arrive at conclusions
Continue to practice. Learn by
teaching.
33. Polyglo
t
http://memeagora.blogspot.com/2006/12/polyglot-
programming.html
34. Polygl
ot
Computer program or script written
in a valid form of multiple
programming languages
http://memeagora.blogspot.com/2006/12/polyglot-
programming.html
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
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