June 27th, 2024

A dev's thoughts on developer productivity (2022)

The article delves into developer productivity, emphasizing understanding code creation, "developer hertz" for iteration frequency, flow state impact, team dynamics, and scaling challenges. It advocates for nuanced productivity approaches valuing creativity.

Read original articleLink Icon
A dev's thoughts on developer productivity (2022)

The article discusses the concept of developer productivity and the importance of considering developers' perspectives in discussions about it. It highlights the inner and outer loops of software development, emphasizing the significance of the inner loop where code is understood and created. The author introduces the idea of "developer hertz" as a unit of developer productivity, focusing on iteration frequency rather than code quantity. The article also explores the concept of flow state and how interruptions can hinder productivity. It delves into team dynamics, individual and team velocity, and the challenges of scaling productivity in software teams. The author advocates for a more nuanced understanding of developer productivity that values creativity and innovation in software development. The piece concludes by emphasizing the need for mental models that accurately reflect the reality of developers' work to enhance productivity and creativity in the industry.

Related

Laziness is the source of Innovation and Creativity

Laziness is the source of Innovation and Creativity

Laziness can spur innovation in programming by encouraging efficiency and problem-solving. Embracing laziness responsibly can lead to creative and efficient solutions, promoting a balance between productivity and creativity.

The 10x developer makes their whole team better

The 10x developer makes their whole team better

The article challenges the idea of the "10x developer" and promotes community learning and collaboration in teams. It emphasizes creating a culture of continuous learning and sharing knowledge for project success.

The software world is destroying itself (2018)

The software world is destroying itself (2018)

The software development industry faces sustainability challenges like application size growth and performance issues. Emphasizing efficient coding, it urges reevaluation of practices for quality improvement and environmental impact reduction.

Software Engineering Practices (2022)

Software Engineering Practices (2022)

Gergely Orosz sparked a Twitter discussion on software engineering practices. Simon Willison elaborated on key practices in a blog post, emphasizing documentation, test data creation, database migrations, templates, code formatting, environment setup automation, and preview environments. Willison highlights the productivity and quality benefits of investing in these practices and recommends tools like Docker, Gitpod, and Codespaces for implementation.

No Matter What They Tell You, It's a People Problem (2008)

No Matter What They Tell You, It's a People Problem (2008)

The article emphasizes the crucial role of people in software development, citing teamwork, communication, and problem-solving skills as key factors for project success. It highlights the importance of job satisfaction and team cohesion, underlining the significance of positive personal relationships within development teams.

Link Icon 12 comments
By @mym1990 - 5 months
My couple of thoughts, just based on my own experiences, are that: there is typically at least one architect above me(currently two, don't ask me why) that is responsible in doing the higher level solutioning. While I am free to give feedback on things, and that feedback is taken seriously, it is a far cry from developing my own architecture. On a big enough project, there simply isn't enough time to gather requirements, architect the solution, and then build it out(for one person). By the time I am assigned the feature ticket, it is a morsel of the overall thing.

I feel like I have reached a happy point of productivity where I am doing the work expected of me, and at times even exceeding, but not breaking my metaphorical back. The truth is that most companies won't pay for the extra productivity that you create for yourself, but they will happily take it for free.

By @golly_ned - 5 months
This from Beyang Liu, Sourcegraph CTO, who plays up his stint as a Google intern to represent himself as a "former google engineer", and wrote this blog referencing Google 55x in a short article to associate sourcegraph with Google-quality tooling: https://sourcegraph.com/blog/ex-googler-guide-dev-tools
By @jauntywundrkind - 5 months
Devs I think are somewhat withdrawn, as a result of being under the yoke of ticket delivery. Being given the trust respect & capacity to roam & improve as we wander about systems is rare; we're judged on how quickly the task at hand is done. This is such Luddite, chained-to-the-machine endpoint that we are at.

And it skips past so much of the raw joy & auto-enrichment loops that happens when there's time allotted to discovering and improving the system as you go. DIYers have such amazing enrichment loops, making systems work better for themselves all the time. Not just the much vaunted fast delivery now, but the ability to keep iterating & expanding & delivering without your constructs starting to clash & thrash.

I love love Fogus's 100:10:1, on having many tangible places outlined where one might do something. Still dedicating yourself to something, but also giving yourself permission to hop around. Follow what feels good. https://blog.fogus.me/2015/11/04/the-100101-method-my-approa...

[Ed: s/yolk/yoke/, thanks for the fix folks!]

By @badgersnake - 5 months
As a staff engineer with team lead responsibilities I would love to be able to attain that kind of flow. Unfortunately, a lot of my job is liaising with product managers and making sure the team is focused on the right things or writing and reviewing documents.

This work needs to be done but it doesn’t leave me much time to get into coding things and thus I would score very low on that productivity measure because I’m hardly ever in the inner loop.

By @dijksterhuis - 5 months
This really resonates and tracks with my experience. Really like the vector sum concept, as most metrics for productivity tend to be pretty naff (not good).

Some of the issue, in my own admittedly limited experience, is that some "important" folks often want the flashy ideas; they want someone to tell them there's a quick fix or a framework to solve the problem in 3x workshops over two weeks. It's unfortunately human nature to want the easiest solution. edit -- plus i think a lot comes down to fear (no control), which is also a thing.

Managers also like metrics. It makes their end of month presentations look good. Which is important otherwise the team gets looked down on compared to all the other managers with amazing metrics.

But, I could totally see something like this working well at smaller companies where stuff like that isn't a thing.

By @m0llusk - 5 months
That is great, but can you make the BUY button bigger?
By @dang - 5 months
Discussed at the time:

A dev's thoughts on developer productivity - https://news.ycombinator.com/item?id=31414681 - May 2022 (88 comments)

By @itsdrewmiller - 5 months
Did McKinsey just lift the inner/outer loop concept here with no attribution? Does it also predate this article? https://www.mckinsey.com/industries/technology-media-and-tel...
By @agentultra - 5 months
The only thing that works well for me is: thinking hard (ie: writing some definitions, asking questions, editing, repeat) and then writing some code. Then repeat.

When working on a team, splitting up work across modules/contexts/domains works well. I’ll give you an API you tell me what works well, what you still need from it, what errors there are; I’ll address them.

Nothing works better than trust and autonomy. I don’t tell you how to do your job, you don’t tell me how to do mine. You want me on the team because of my expertise and some of my values overlap with everyone else’s.

When working alongside non-technical folks, communication and trust is key.

Trying to quantify developer productivity and sell a system is what the snake-oil hucksters have been selling since the 90s. Management consultants, process engineers, whatever you want to call them. They’re selling something.

We’re knowledge workers. We’re not manufacturing cars or widgets. We learn. We design. We think. Our output is knowledge, not widgets.

By @from-nibly - 5 months
Developer productivity is about leveraging developer context into more stuff while making the developer do fewer things.

Automate and shift left.

By @matt3210 - 5 months
Hand written stuff (written or made to look written) needs to be in a more readable font.