Yes, you can measure software developer productivity
Flow state - Why fragmented thinking is worse than any interruption
Both arts and athletics involve a lot of deft physical movement, and I could see why professionals in those fields would benefit from learning to resist overthinking so they can “just do it.”
Almost every profession involves some need for focus, however, so you can see why, over time, the idea of a flow state breached its original limits. Now, “flow state” has all sorts of associations—some scientific, some folk, and some a mix of both. For many, the term has just become a dressed-up version of focusing.
A 2023 study found, for example, that there is a huge range of barriers to flow—many of which aren’t just interruptions from coworkers. They categorized these as situational barriers, such as interruptions and distractions; personal barriers, such as the work being too challenging or not challenging enough; and interpersonal barriers, such as poor management and poor team dynamics.
A 2018 study found, in addition, that the most disruptive interruptions aren’t external—they’re internal. 81% of the participants predicted internal interruptions would be worse, but they were wrong. “Self-interruptions,” the researchers wrote, “make task switching and interruptions more disruptive by negatively impacting the length of the suspension period and the number of nested interruptions.”
But because no one literally interrupted your work, you might be unaware of the costs of that rote, mundane work. You might even castigate yourself over the day for not getting the work done: You fought for a distraction-free day, got it, and you have nothing to show for it. It can feel bad.
a seemingly individual problem, staying focused, is often downstream from an organizational problem.
What I learned getting acquired by Google
While there were undoubtedly people who came in for the food, worked 3 hours a day, and enjoyed their early retirements, all the people I met were earnest, hard-working, and wanted to do great work.
What beat them down were the gauntlet of reviews, the frequent re-orgs, the institutional scar tissue from past failures, and the complexity of doing even simple things on the world stage. Startups can afford to ignore many concerns, Googlers rarely can.
What also got in the way were the people themselves - all the smart people who could argue against anything but not for something, all the leaders who lacked the courage to speak the uncomfortable truth, and all the people that were hired without a clear project to work on, but must still be retained through promotion-worthy made-up work.
Another blocker to progress that I saw up close was the imbalance of a top heavy team. A team with multiple successful co-founders and 10-20 year Google veterans might sound like a recipe for great things, but it’s also a recipe for gridlock.
This structure might work if there are multiple areas to explore, clear goals, and strong autonomy to pursue those paths.
Good teams regularly pay down debt by cleaning things up on quieter days.
Just as real is process debt. A review added because of a launch gone wrong. A new legal check to guard against possible litigation. A section added to a document template. Layers accumulate over the years until you end up unable to release a new feature for months after it's ready because it's stuck between reviews, with an unclear path out.
Ask HN: I am overflowing with ideas but never finish anything | Hacker News
I've noticed that most devs, anyway, are either front-loaded or back-loaded."Front-loaded" means that the part of a project they really enjoy is the beginning part, design work, etc. Once those problems are largely worked out, the project becomes less interesting to them. A common refrain from this personality is "the rest is just implementation details"."Back-loaded" is the opposite of that. They hate the initial work of a project and prefer to do the implementation details, after the road is mapped out.Both sorts of devs are critical. Could it be that you're a front-loaded sort? If so, maybe the thing to do is to bring in someone who's back-loaded and work on the projects together?
Even if it's just a personal project, think about the time and money you'll need to invest, and the benefits and value it will provide. Think on why you should prioritize this over other tasks or existing projects. Most importantly, sleep on it. Get away from it and do something else. Spend at least a couple of days on and off planning it. Outline and prioritize features and tasks. Decide on the most important ones and define the MVP.
If, after this planning process, you still feel motivated to pursue the project, go ahead!
Quick win is to ask yourself: What have I learned from this project? And make that the result of the project.
Find a job/role/gig where you think of the solutions and let other people implement them. Just always remember that it is no longer your project. You might have thought of something, but without the efforts of others it will never amount to anything, ever. So as long as you can respect the work of others and your own limitations in doing what they do you will do fine.
Find more challenging problems. I usually do this by trying to expand something that spiked my interest to make it more generically applicable or asking myself if the problem is actually worth a solution ('faster horses') and if the underlying problem is not more interesting (mobility).
it helps to promise other people something: Present your findings, write a paper, make a POC by an agreed upon deadline. Now you have to be empatic enough to want to meet their deadline and thus create what you promised with all the works that comes with it. That is your result. You also have to be selfish enough to tell people that is where you end your involvement, because it no longer interests you, regardless of the plans they have pursuing this further
Productive Procrastination
I do a pretty good job of channeling my procrastination into adjacent creative tasks which, in the end, influence, shape, and improve the chunks of work I do complete. And that looks like productivity from the outside. But trust me, from the inside, it usually just feels like avoidance and procrastination. But I’ve learned to accept that’s the cost of doing the kind of work I feel good at, so I let it be what it is.
The particularly nice thing about coding is that it offers many little “wins”: I get a function working, I figure out a piece of design
“Can’t face work? Then cultivate some side projects — and channel your work-avoidance into fun opportunities to learn” and once you’re done, you’ll 1) have something productive to show for it, and 2) be much more fit, rested, and ready to tackle that project at work.
In other words: rather than fight your penchant for procrastination, work with it. It’s a judo move: don’t fight your enemy, use its momentum against it for your benefit.
You Will Never Be A Full Stack Developer | Seldo.com
Every software framework you've ever used is in the abstraction game: it takes a general-purpose tool, picks a specific set of common use-cases, and puts up scaffolding and guard rails that make it easier to build those specific use cases by giving you less to do and fewer choices to think about.
The lines between these three are blurry. Popular abstractions become standardizations.
Technical debt - Wikipedia
In software development, technical debt (also known as design debt[1] or code debt) is the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer.[2]
Analogous with monetary debt,[3] if technical debt is not repaid, it can accumulate "interest", making it harder to implement changes. Unaddressed technical debt increases software entropy and cost of further rework.
Common causes of technical debt include:
Ongoing development, long series of project enhancements over time renders old solutions sub-optimal.
When I think about Adobe's reliance on entrenched menu panels and new menus with new/inconsistent interfaces I think of this. They've lasted so long that new features are all stapled on as menus instead of integrated throughout the whole system. Some ideas require a rethink of the whole interface, something Adobe can't afford because they're moving too much and don't have the resources to dedicate to soemthing of that scale?
Parallel development on multiple branches accrues technical debt because of the work required to merge the changes into a single source base. The more changes done in isolation, the more debt.
Similarly, this reminds me of the Gmail redesign's "blue-gate" where designers on Twitter pointed out how many different tones of Blue were in different aspects of the redesign. It seemed apparent that each component of the interface had it's own dedicated team, and the inconsistencies in appearance/interface design came from non-thorough communication between the teams.
I Don’t Believe in Sprints
Sprints don’t help organize things, they’re not a useful organizing tool, and if we were all honest with each other then we’d admit they’re designed for managers who don’t trust their employees
Good teams don’t need sprints to get good work done. They don’t need to point tickets or file receipts away once something is complete. This always leads to an endless backlog of crap anyway which is also a waste of time since they too only serve managers who are scared to say “ah yes, we have listened to this complaint and we believe it’s not important.” That’s what a backlog is; a list of useless tasks that makes people feel better.
Noosphere, a protocol for thought
Build amazing real‑time collaborative products - Liveblocks
Linear – The issue tracking tool you'll enjoy using