Developer Productivity¶
Commoditization¶
"The big change has been in the hardware/software cost ratio. The buyer of a $2 million machine in 1960 felt that he could afford $250,000 more ofr a customized payroll program, one that slipped easily and nondisruptively into the computer-hostile social environment. Buyers of %50,000 office machines today cannot conceivably afford customized payroll programs; so they adapt their paryoll procedures to the packages available." - 2 F. Brooks - No Silver Bullet
Where should productivity be sought¶
If you're looking to increase productivity, it would be best to answer some fundamental questions first.
- What should we be productive in?
- What is productivity?
- How do you measure productivity?
The first step is to determine, what you should be productive in. If you're building software for example, it is in finding out what to build.
"The hardest single part of building a software system is deciding precisely what to build." - F. Brooks 2
That is actually already one step to far, as you would need a reason to build a software system. So the first step for any individual or organization (start up, or otherwise) is to find out what people want that you can offer.
"The fundamental activity of a startup is to turn ideas into products, measure how customers respond, and then learn whether to pivot or persevere. All successful startup processes should be geared to accelerate that feedback loop." - The Lean Startup 3
How do you measure productivity¶
Grow v.s. Build¶
The Balancing act between centralized and decentralized¶
On Multitasking¶
- Deep Work
- Attention Residue > Why is it so hard to do my work
Learning from Lean/Toyota¶
Open Space Floor Plans¶
http://rstb.royalsocietypublishing.org/content/373/1753/20170239
Conway's Law¶
"organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations." - M. Conway 1
Undifferentiated Heavy Lifting¶
"Work that needs to get done, but having it done doesn't bring our customers any direct benefit." - Dave Hahn
Agile¶
- https://www.infoq.com/articles/agile-agile-blah-blah/
- https://www.infoq.com/articles/death-agile-beyond
Hermetic Builds¶
Build system. All code in Google's repository builds with a customized version of the Bazel build system,5 requiring that builds be hermetic; that is, all inputs must be explicitly declared and stored in source control so the builds are easily distributed and parallelized. - Lessons From Building Static Code Analysis Tools At Google
How To Get Developers To Adopt Something¶
Clear The Bucket Before Fixing The Leak¶
Concurrent with FindBugs experimentation, the C++ workflow at Google was improving with the addition of new checks to the Clang compiler. The Clang team implemented new compiler checks, along with suggested fixes, then used ClangMR38 to run the updated compiler in a distributed way over the entire Google codebase, refine checks, and programmatically fix all existing instances of a problem in the codebase. Once the codebase was cleansed of an issue, the Clang team enabled the new diagnostic as a compiler error (not a warning, which the Clang team found Google developers ignored) to break the build, a report difficult to disregard. The Clang team was very successful improving the codebase through this strategy. - Lessons From Building Static Code Analysis Tools At Google
Make It Part Of Their Daily Work¶
Most developers will not go out of their way to use static analysis tools. Following in the footsteps of many commercial tools, Google's initial implementation of FindBugs relied on engineers choosing to visit a central dashboard to see the issues found in their projects, though few of them actually made such a visit. Finding bugs in checked-in code (that may already be deployed and running without user-visible problems) is too late. To ensure that most or all engineers see static-analysis warnings, analysis tools must be integrated into the workflow and enabled by default for everyone. Instead of providing bug dashboards, projects like Error Prone extend the compiler with additional checks, and surface analysis results in code review. - Lessons From Building Static Code Analysis Tools At Google
Make It Usefull For Them¶
Developer happiness is key. In our experience and in the literature, many attempts to integrate static analysis into a software-development organization fail. At Google, there is typically no mandate from management that engineers use static analysis tools. Engineers working on static analysis must demonstrate impact through hard data. For a static analysis project to succeed, developers must feel they benefit from and enjoy using it. - Lessons From Building Static Code Analysis Tools At Google
Further reading¶
Others¶
- https://www.youtube.com/watch?v=UTKIT6STSVM
- https://en.wikipedia.org/wiki/Complex_adaptive_system
- https://jobs.netflix.com/culture
- http://blackswanfarming.com/cost-of-delay/
- https://www.rundeck.com/blog/tickets_make_operations_unnecessarily_miserable
- https://www.digitalocean.com/community/tutorials/what-is-immutable-infrastructure
- https://hbr.org/2015/12/what-the-research-tells-us-about-team-creativity-and-innovation
- https://www.thoughtworks.com/insights/blog/continuous-improvement-safe-environment
- https://qualitysafety.bmj.com/content/13/suppl_2/ii22
- https://www.plutora.com/wp-content/uploads/dlm_uploads/2018/03/StateOfDevOpsTools_v14.pdf
- https://medium.com/@ATavgen/never-fail-twice-608147cb49b
- https://blogs.dropbox.com/dropbox/2018/07/study-high-performing-teams/?_tk=social&oqa=183tl01liov&linkId=100000003064606
- http://psycnet.apa.org/record/1979-28632-001
- https://pdfs.semanticscholar.org/a85d/432f44e43d61753bb8a121c246127b562a39.pdf
- https://medium.com/@dr_eprice/laziness-does-not-exist-3af27e312d01
- https://en.wikipedia.org/wiki/Mindset#Fixed_and_growth
- http://www.reinventingorganizationswiki.com/Teal_Organizations
- https://www.mckinsey.com/business-functions/organization/our-insights/the-irrational-side-of-change-management
- https://www.barrypopik.com/index.php/new_york_city/entry/how_do_you_eat_an_elephant
- https://kadavy.net/blog/posts/mind-management-intro/
- https://en.wikipedia.org/wiki/Planning_fallacy
- https://stories.lemonade.com/lemonade-proves-trust-pays-off-big-time-fdcf587af5a1
- https://www.venturi-group.com/developer-to-cto/
- https://dzone.com/articles/an-introduction-to-devops-principles
- https://www.thoughtworks.com/insights/blog/evolving-thoughtworks-internal-it-solve-broader-cross-cutting-problems
- https://www.thoughtworks.com/insights/blog/platform-tech-strategy-three-layers
- https://www.thoughtworks.com/insights/blog/why-it-departments-must-reinvent-themselves-part-1
- https://en.wikipedia.org/wiki/Peter_principle
- https://hackernoon.com/why-all-engineers-must-understand-management-the-view-from-both-ladders-cc749ae14905
- https://medium.freecodecamp.org/cognitive-bias-and-why-performance-management-is-so-hard-8852a1b874cd
- https://en.wikipedia.org/wiki/Horn_effect
- https://en.wikipedia.org/wiki/Halo_effect
- http://serendipstudio.org/bb/neuro/neuro02/web2/hhochman.html
- https://betterhumans.coach.me/how-to-be-a-better-manager-by-understanding-the-difference-between-market-norms-and-social-norms-3082d97d440f
- https://skillsmatter.com/skillscasts/10466-deep-dive-on-kubernetes-networking
- https://purplegriffon.com/blog/is-itil-agile-enough
- https://launchdarkly.com/blog/progressive-delivery-a-history-condensed/
- http://www.collaborativefund.com/blog/real-world-vs-book-knowledge/
- https://blog.codeship.com/using-jx-create-gitops-managed-jenkins-x-installation-cloudbees-codeship-terraform-google-kubernetes-engine/
- https://martinfowler.com/articles/serverless.html
- https://www.quora.com/Some-people-including-the-creator-of-C-claim-that-there-is-a-huge-decline-of-quality-among-software-developers-What-seems-to-be-the-main-cause
- https://medium.com/netflix-techblog/full-cycle-developers-at-netflix-a08c31f83249
- https://queue.acm.org/detail.cfm?id=3182626
- http://www.safetydifferently.com/why-do-things-go-right/
- https://www.quora.com/What-is-better-to-become-an-specialist-or-a-generalist-in-software-development-Does-the-full-stack-term-still-makes-sense
- https://cengizhan.com/3-pillars-of-observability-8e6cb5434206
- https://www.thoughtworks.com/perspectives/edition1-agile-article
- https://blog.mexia.com.au/a-pace-layered-integration-architecture
Presentations¶
- https://speakerdeck.com/tylertreat/the-future-of-ops
- https://www.slideshare.net/rheinwein/the-container-shame-spiral
Articles¶
- https://dzone.com/articles/a-praise-for-self-service-in-it-value-streams
- http://blog.christianposta.com/microservices/application-safety-and-correctness-cannot-be-offloaded-to-istio-or-any-service-mesh/
- https://www.gatesnotes.com/Books/Capitalism-Without-Capital?WT.mc_id=08_16_2018_06_CapitalismWithoutCapital_BG-LI_&WT.tsrc=BGLI&linkId=55623312
- https://uxdesign.cc/stop-delivering-software-with-agile-it-doesn-t-work-edccea3ab5d3
- Concept of Shared Services and beyond
- Introduction to Observability by Weave Net
- Article on the state of Systems Languages
- Article on SILO's
- Blog on Twitter's Engineering Efficiency
- Why Companies should have a Heroku platform for their developers
- Multitasking is bad for your health
- Microsoft research on Developer's perception of productivity
- Developer Productivity Struggles
- You cannot measure productivity
- The Productivity Paradox
- There is no Productivity Paradox: it lags behind investments
- Economist: solving the paradox
- The Myth Of Developer Productivity
- Effectiveness vs. Efficiency
- Lean Manufactoring
- Theory of Constraints
- Thoughtworks: demystifying Conway's Law
- John Allspaw: a mature role for automation
- Research from DORA
- Mik Kersten - Cambrian Explosion of DevOps Tools
- Mik Kersten - End of Manufacturing Line Analogy
- Mik Kersten - Mining the ground thruth of Enterprise Toolchains
- Framework for putting Mental Models to practice
- Lessons from Building Static Analysis Tools at Google
- GitHub - Shifting Security Left
Books¶
- The Goal
- The Phoenix Project
- Continuous Delivery
- The Lean Startup
- The Lean Enterprise
- DevOps Handbook
- Thinking Fast and Slow
- Sapiens
- Project to Product
- Debugging Teams
- The Trusted Advisor
- Crossing the Chasm
Papers¶
- https://www.researchgate.net/publication/200085969_Using_task_context_to_improve_programmer_productivity/link/540dce6b0cf2df04e75676d0/download
- https://storage.googleapis.com/pub-tools-public-publication-data/pdf/3d102e42ad79a345ebd6464047ac9a6cd10670f4.pdf