Skip to content

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

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

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

Presentations

Articles

Books

Papers

On Writing

References


Last update: 2020-09-03 20:27:29