Software development is a profession that requires constant learning. One question we face is whether we should learn as much as we can about one topic or whether we should learn about a broad range of things. In this session we will examine the pros and cons of each and try to find the right balance between them.
37. Dreyfus model of skill acquisition
Expert
Proficient
Competent
Advanced Beginner
Novice
38. Dreyfus model of skill acquisition
Expert
Proficient
Competent
Advanced Beginner
Novice
39. Dreyfus model of skill acquisition
Expert
Proficient
Competent
Advanced Beginner
Novice
40. Dreyfus model of skill acquisition
Expert
Proficient
Competent
Advanced Beginner
Novice
41. Dreyfus model of skill acquisition
Expert
Proficient
Competent
Advanced Beginner
Novice
42. Dreyfus model of skill acquisition
Expert
Proficient
Competent
Advanced Beginner
Novice
43.
44.
45. Eric Potter
• @pottereric
• www.humbletoolsmith.com
• http://blog.apterainc.com/custom-software/should-
custom-software-developers-be-generalists-or-a-
specialists
Notas del editor
Should you try to be more of a specialist or a generalist? That was the most debated point in the discussion. At Aptera, a group of us are reading Chad Fowler's fantastic book The Passionate Programmer and were discussing the first section.
Should you learn a little about a lot of different technologies?
Should you learn one technology very deeply.
We work in a profession that requires constant learning, so this is an important question.
I need to evaluate myself to see where I am.
I am a web developer, so my examples are web centric. But they are broadly applicable.
Framework, Runtime, editor, package manager
No technology stands in isolation
This is what it takes to be a full stack developer.
Programming Skills
No technology stands in isolation
Tools
Your IDE / editor.
VIM
Diagnostics Window in VS
Process
Scrum, Kanban, whatever
Big A agile vs Little A agile
Teamwork
Do you play nicely with others
Soft Skills
Can you write? Can you present?
"It's less about text files and more about people."
DevOps
Server Management
Cloud Providers
How well do I understand my operating system?
Hardware
Server, Network, Mobile devices
Framework, Runtime, editor, package manager
No technology stands in isolation
T Shaped skills
It is like a topology, like a mountain range
You have a core competency.
Can solve problems in different ways.
Can solve a wide range of problems.
" The key is to be able to solve the problems that may arise. "
"What are those problems? That’s right: you don’t know. Neither do I.
"Jack of all trades, master of none, though oftentimes better than master of one."
GP as a specialty
In the medical field, family practice was reclassified as a specialty
Chinese Proverb: "All trades known, all trades dull"
Big data and cloud weren’t specialties 10 years ago.
Incredibly valuable
Not broadly useful
http://www.topgear.com/car-news/geneva-motor-show/lamborghini-veneno
Lamborgini Veneno vs Dodge Caravan – funny story about dash gong out
Don’t put all your eggs in one basket.
New Technology leads to new specialties
2 years ago, no one was looking for augmented reality specialists.
Big data and cloud weren’t specialties 10 years ago.
Overspecialization
"Too many of us seem to believe that specializing in something simply means you don’t know about other things.“ - Fowler
Can only solve the problem one way.
Can’t solve non coding problems.
There might be a business process that could help solve a technical problem.
This makes you dependent on others
BE BOTH.
Be a generalist and be a specialist.
Have T shaped skills, but think of it as a topology.
"Ideas are fundamentally networks of other ideas. We take the tools, concepts, and scientific understanding of our time and then remix them into something new. But if you don't have the right building blocks, you can't make the break through, however brilliant you might be.“
The invention of photography require knowledge of optics and chemistry.
Know thyself?
What do you need to know deeper?
What else do you need to know?
What non technical skills do you need to learn.
Your specialty is probably tied to your first job?
Imagine what you could learn if we switch platforms?
Is my specialty becoming obsolete.
Weaknesses
Adjacent Skills
Entity Framework -> SQL
Can you write better EF queries if you can read and understand a query execution plan?
Often
Parallel Skills
Applicable per skill
skill != years of experience
Shu Ha Ri
- Imitate, Assimilate, Innovate
Can follow basic instructions. Can’t handle deviations.
It’s like me cooking.
Most Common Phase
Starting to understand context, but they don’t see the big picture.
Like me with electronics
Scrum where you think you must have a daily standup.
Dunning – Krugar effect: People mistakenly asses their skill as much higher than it is.
Able to solve problems
See the big picture.
Scrum where you realize you don’t necessarily have to do a daily standup if it doesn’t provide value.
Can self correct.
Know what you don’t know.
Experts:
transcends reliance on rules, guidelines, and maxims
has "vision of what is possible"
Me vs Reed Cospy in F#
You can break the rules once you know them.
Look at your skills topology.
Decide where you need to improve.
Be intentional about your learning.