The obstacles of developer productivity talks about the application programmer's productivity from 4 different aspects:
1. Premature optimization
2. Software complexity
3. Uncertainty
4. Culture issues
Video https://www.youtube.com/watch?v=ucZsaQ2Evtw&list=PLEhSHDVBMPO39WMeZPiUBQSNFQ_3x7hba&index=18
3. Definition of productivity
● Productivity = results / time
● What is the result of the corporate?
○ revenue
○ image
○ customer satisfaction
○ market share
○ time to market
○ etc.
5. How to escape from premature
optimization?
● Don’t ask yourself
○ Should I use XXX? (XXX is a solution: complex type,
complex Arch, etc.)
● Ask yourself:
○ As to achieve OOO, what possible solutions can I take?
(OOO is certain property that you want in your software.)
○ Is OOO really needed? Do I need it now?
6. Paul Graham is wrong about the
language productivty
● Beating the averages
○ Line number is the most important factor in programming
language productivity.
○ macro: code which write code.
○ Lisp is great because of macro.
7. Mutable States vs Clojure
● Clojure is designed to handle
states well.
● Mutable states and control structures
>> line numbers
● The developer productivty
comparison
○ Clojure: Java ~= 5: 1
11. How to cope with mutable states?
● Functional programming
○ A good programming langauge
○ Using immutable collection by leveraging library support
● reboot your process
12. The way we work
● Managers ask developers to estimate software
development time, and then chases the deadline.
● Manage people, but seldom manage the uncertainty.
13. The management of uncertainty
● Are there any rabbit holes?
● Is the work properly shaped up?
● When to give up?
● How to present the progress?
● Take a look at ShapeUp
14. Culture issues
● Academic elitism - reward competition in
classroom.
● Whiteboard - reward solving puzzles, not
problems.
● Optimization of resume - reward chasing
solutions, not results.
15. Feedback system
● Do we have the feedback system rewarding
developer productivity?
● A bad system will beat a good person every
time. - Edward Deming
16. Culture Change and Change
Management
● Culture is the set of beliefs which governs
behavior.
● Change the belief by
○ Removing “cognitive dissonance” --- saying one thing and
doing another
○ Example and avatar
○ Getting help from an outsider (For example, a consultant)
17. In conclusions
● Developer productivity depends on
environment.
● There are 4 obvious productivity obstacles.
○ Premature optimization
○ Mutable states
○ No management of uncertainty
○ Wrong feedback system in our culture
● My solutions are in blue colors.
18. Final words
● To developer: Focus on your problem instead
of chasing solutions.
● To manager: Manage results, not tasks nor
inputs.
19. Reference
● Managing for results - Peter Drucker
● Radical Simplicity in Technology
(https://www.radicalsimpli.city/) - Stephan Schmidt
● Beating the averages - Paul Graham
● Out of the Tar Pit
(http://curtclifton.net/papers/MoseleyMarks06a.pdf) -
Ben Moseley, Peter Marks
● Shape Up (https://basecamp.com/shapeup/webbook) -
Ryan Singer
● Process Consulting - Alan Weiss