The document discusses the traits of highly skilled "10x" programmers. It notes that programming is a creative profession requiring logic-based creativity. It argues that strong programmers derive strength from principles, values, behaviors and practices that are not always visible, like an iceberg with most of its mass underwater. These include qualities like purpose, autonomy, mastery, communication, simplicity, flexibility, testing principles, learning, knowledge sharing and enjoying the work. Clean code results from craftsmanship rather than following rules, and programmers should focus on producing value rather than just code.
2. There are
programmers….
And great programmers
You might not think the programmers are artists, but
programming is an extremely creative profession. Its logic based
creativity. John Romero
3. It’s about producing
value, not code
You might not think the programmers are artists, but
programming is an extremely creative profession. Its logic based
creativity.
John Romero
4. It’s about software
craftsmanship
Clean code is not written by following a set of rules. You don’t
become a software craftsman by learning a list of heuristics.
Professionalism and craftsmanship come from values that drive
disciplines. Robert C. Martin
5. Their strength comes from
something not easily visible
There is seven-eights of it under water for every part that shows.
Anything you know you can eliminate and it only strengthens
your iceberg. It is the part that doesn't show
Ernest Hemingway
Behaviors. Practices
6. Drivers. Values. Principles
There is seven-eights of it under water for every part that shows.
Anything you know you can eliminate and it only strengthens
your iceberg. It is the part that doesn't show
Ernest Hemingway
Behaviors. Practices
7. What’s driving your 10x programmers?
The monkeys solved the puzzle simply because they found it
gratifying to solve puzzles. They enjoyed it. The joy of the task was
its own reward. Daniel H. Pink
Purpose.
Autonomy.
Mastery
Drivers
9. Simplicity.
There are two ways of constructing a software design: One way is to make it so simple that
there are obviously no deficiencies, and the other way is to make it so complicated that
there are no obvious deficiencies. The first method is far more difficult.
C.A.R Hoare
Values
10. Flexibility.
Making workable decisions today and maintaining the flexibility to
change your mind in the future is a key to good software
development Kent Beck
Values
11. Test First. Always.
The best TDD can do, is assure that code does what the
programmer thinks it should do. That is pretty good BTW.
James Grenning
Principles
12. Little Design Up Front
In ten years the pendulum has swung from 'design everything' to 'design
nothing.' But the alternative to BDUF [Big Design Up Front] isn't no design
up front, it's a Little Design Up Front (LDUF) or Enough Design Up Front
(ENUF) Steve McConnel
Principles
13. Reuse
If I have the same logic in two places, I work with the design to
understand how I can have only one copy. Designs without
duplication tend to be easy to change. Kent Beck
Principles
14. Tool Mastery
An apprentice carpenter may want only a hammer and saw, but a master
craftsman employs many precision tools. Computer programming likewise
requires sophisticated tools to cope with the complexity of real applications, and
only practice with these tools will build skill in their use.
Robert L. Kruse
Behavior
16. Inspect and Adapt.
If you have a month to plan a project in detail, spend it on four one-week iterations
developing while you improve your estimates. If you have a week to plan a project, hold five
one-day iterations. Feedback cycles give you information and the experience to make
accurate estimates. Kent Beck
Behavior
17. Shares Knowledge
Given the choice between an extremely skilled loner and a
competent-but-social programmer, XP teams consistently choose
the more social candidate. Kent Beck
Behavior
19. Most good programmers do
programming not because they
expect to get paid or get adulation
by the public, but because it is fun to
program
Linus Torvalds
Thank You
@hrishikarekar
Hrishikesh Karekar
20. References
http://www.ybrikman.com/writing/2013/09/29/the-10x-developer-is-not-myth/
https://blog.iterate.no/2012/06/20/programming-like-kent-beck/
http://blog.projectconnections.com/geof_lory/2014/08/behavioral-traceability-values-to-principles-to-practices.html
https://blog.newrelic.com/2016/02/22/8-ways-become-a-better-coder/
http://www.articpost.com/best-programming-quotes-that-every-developer-should-know/
https://www.quora.com/How-can-I-improve-programming-skills
How To Find, Vet, & Hire 10x Programmers with Ross Buhrdorf, CTO of HomeAway
http://www.slideshare.net/LocalSearchAssociation/lsa16-google-10x-thinking-revolution-not-evolution
http://www.slideshare.net/AgilePractitionersIL/engineering-your-culture-how-to-keep-your-engineers-happy