Live data from Hacker News

Maximizing Developer Effectiveness

martinfowler.com

131–140 of 168 posts

Re: Maximizing Developer Effectiveness

#131
So CI, automated tests, SCM, small patches, API docs, stand ups and the ability to take breaks.

This is not a “highly effective environment”, it’s the bare minimum to have a functional environment. Might have been good advice in the late 90s though.

Re: Maximizing Developer Effectiveness

#132
post #92

Earlier quoted context omitted.

And how do you resolve this contradiction? Teach your employees that if you don’t want to be interrupted you better write good documentation. And have one dedicated team member each day responsible for supporting other teams. I think both of those are mentioned in the article, but it was a little a while since I read it.

"Teach your employees that if you don’t want to be interrupted you better write good documentation." And reward them for doing it. If your company do "360 degree" evaluations where your peers praise you for your quick answers to their questions, you are effectively incentivised to NOT document and instead be interrupted...

One does not preclude the other. Your quick answers can come in form of sending them links to the relevant parts of the documentation you wrote earlier.

And if their question is not something that can be answered that way, you can improve your documentation so that next time the question is asked, you do not have that problem.

Re: Maximizing Developer Effectiveness

#133
post #96

Earlier quoted context omitted.

I'm presuming in this ideal land, the stories are already ordered in the most optimal way. So no scheduling conflict. Resource and release conflicts don't appear if you have the right infrastructure.

Are you serious? The "right" infrastructure? Are you limiting your view to a single service, running on a big cluster? Because even then there are permanent conflicts in the persistence layer and resource conflicts express themselves in huge infrastructure bills. But things get really messy when your software is distributed in heterogeneous environments. Say you ship a database yourselves. Or a multi-platform app, or…

Give me some concrete examples.

Higher infrastructure bills for spinning up new hardware is often cheaper than fixing resource conflicts

Re: Maximizing Developer Effectiveness

#134

Earlier quoted context omitted.

The article specifically suggests there's a dedicated support developer, which means you're sacrficing one member of your squad (per week) for the productivity of the rest of them. We can debate whether the idea is good or bad, but it's not pretending that its magic. On the wider article, I think the litrature is a poor subsitutde for reality. And honestly I question whether a lot of these agile consultancies actuall…

I'm torn about this article, I love the part about feedback loops and optimizing the parts of your day where you are in a tight loop for a long time; but for most of the article it seems he is _almost_ saying something profound, but there is too much clutter and buzzwords around it. I know these abstract consultancies have a use, but they seem to target what managers and executives _want_ to hear instead of the truth…

To be fair, they’re selling to those executives. It’s unlikely that devs on the ground have the authority to sign off a large consultancy bill.

Re: Maximizing Developer Effectiveness

#135

Earlier quoted context omitted.

> I want environments to just work. I want code to just compile. I want containers to just run. Without me having to start digging through documentation, looking at thirteen Stack Overflow threads, and cobbling a solution that will inevitably break 3 months from now. Sometimes I conjure up the inspiration to actually implement an idea that's been on my mind. Then I spend half a day trying to setup an environment that…

Do you work with C++? Because that’s how it feels to me every time I decide to go with the language

Are you thinking of the build system specifically?

Re: Maximizing Developer Effectiveness

#136

Earlier quoted context omitted.

I'm torn about this article, I love the part about feedback loops and optimizing the parts of your day where you are in a tight loop for a long time; but for most of the article it seems he is _almost_ saying something profound, but there is too much clutter and buzzwords around it. I know these abstract consultancies have a use, but they seem to target what managers and executives _want_ to hear instead of the truth…

Indeed. The lack of hard advice is great for them because they're essentially never wrong but you'll also never fix the problem with the advice alone. Keeps the gravy train going; if they solved our problems with hard facts in blogs, we wouldn't need them. That said, the advice itself is still pretty good if you have the chops to follow through, but I honestly don't think you can build the chops by hiring in the cons…

Asking for advice from a contractor is not bad.

Asking for leadership from a contractor is bad:

1. They don’t understand what you need or how to get it to you, but they sound like they do, and they look professional.

2. There are no great contracting options for something you can’t do yourself and that there aren’t requirements for.

Fixed contacts may start off looking good but they swap resources out and you end up incomplete or halfassed, overtime and maybe over-budget.

A renewable contract may blow really pretty smoke too and look like a high speed train, but that’s not what was needed, they never finish, or when it’s forced to completion, it’s incomplete or halfassed, overtime and over-budget.

If you don’t take care of your health on your own, you can’t expect a doctor to do that for you. Similarly, don’t expect a contractor to solve all of your team’s development problems, though some can give good advice or assistance.

Steps towards making yourself healthy may include exercise, eating better, adequate sleep, regular checkups, etc., while steps towards fixing your development team’s problems may include raising those to your leadership, own problems, foster trust, facilitate, and change your job if problems are not resolved.

Re: Maximizing Developer Effectiveness

#137
post #118

Earlier quoted context omitted.

The article specifically suggests there's a dedicated support developer, which means you're sacrficing one member of your squad (per week) for the productivity of the rest of them. We can debate whether the idea is good or bad, but it's not pretending that its magic. On the wider article, I think the litrature is a poor subsitutde for reality. And honestly I question whether a lot of these agile consultancies actuall…

In my current team (and my previous one from another company) we have what we call "goalie" duties. Each week one engineer from the team is responsible for answering inquiries, not necessarily they have to know the answer but they are the ones to be interrupted and handle accordingly. It works pretty well, our devs are capable of assessing urgency to either bring it up on Slack, wait for the next stand-up or call to…

Isn't the typical responsibility of the manager or the team lead?

Inquire often is followed with more requests, if each developer serves as the weekly-speaker-of-the-team, will the external partner eventually figure out "John will do anything for us and Steve is mean"?

Re: Maximizing Developer Effectiveness

#138
I don't think I agree with his feedback loop chart.

He claims 5-15 seconds to validate that a local code change works is highly effective.

But in practice, that amount of time makes for one of the most unfriendly environments to be in.

For example having to wait 5-7 seconds for an AWS SAM (Serverless) Lambda function to be built and locally invoked is so much worse than making a code change in a Flask, Rails, Django, Laravel, Node, Phoenix, etc. app and seeing the change as fast as it takes you to focus your browser and reload, or running something in a REPL.

When you do such a thing 100 times in a few hours those 5+ second pauses are deadly for motivation and productivity. It's a constant reminder at how crappy the development experience is and it's also not long enough to do something else while it completes so you're stuck wasting your life away on a tool.

Is anyone really happy when they need to wait 10 seconds to see a change when developing a web app?

I think the web context is important because you can relate to it from past experiences. In 2001 there was a near instant feedback loop with making a change to a PHP page and reloading the browser. Anything less than that 20 years later seems like a direct downgrade, especially considering computers are probably 1,000x faster today.

Re: Maximizing Developer Effectiveness

#139

Earlier quoted context omitted.

Indeed. The lack of hard advice is great for them because they're essentially never wrong but you'll also never fix the problem with the advice alone. Keeps the gravy train going; if they solved our problems with hard facts in blogs, we wouldn't need them. That said, the advice itself is still pretty good if you have the chops to follow through, but I honestly don't think you can build the chops by hiring in the cons…

Asking for advice from a contractor is not bad. Asking for leadership from a contractor is bad: 1. They don’t understand what you need or how to get it to you, but they sound like they do, and they look professional. 2. There are no great contracting options for something you can’t do yourself and that there aren’t requirements for. Fixed contacts may start off looking good but they swap resources out and you end up…

Maybe.

Funnily enough I was a contractor providing leadership and helping orgs for the last 5 years. I did my best to varying degrees of success because the leadership themselves would either let you run with it or not. My 1 man band is very different from thoughtworks though.

Now I am leadership and it's way easier to just make decisions.

Re: Maximizing Developer Effectiveness

#140
post #114
post #51

Here I am, a productive developer eager to deliver maximum value to my customers and apply my innovation to company goals. Open up JIRA and pick up a unit of work to produce today -- gotta stay faithful to those story points! Somehow, a magic team of spherical devops in a vacuum created an environment where things are just green, predictable, and are never broken. Another theoretical team of angels from a parallel un…

I think there is this duality in SW development that some people tend to believe in, that there are two types of work, one highly creative, like product or architecture design, and then the mundane one, like coding and testing. (I actually realized this reading a recent HN post: https://news.ycombinator.com/item?id=25775872 ) I don't subscribe to this, I think the work is ultimately very similar in creativity (just d…

I think that complex organizations tend to develop caste systems. The caste hierarchy could be arbitrary, or based on imaginary metrics such as being "closer to revenue." It could have some basis in fact, for instance doctor hours are more valuable than nurse hours, which are more valuable than patient hours.

The upper castes have to be responsible for the work environment, otherwise it degenerates: The best people in the lower castes switch jobs to join a higher caste or a company with a better caste system. Or they unionize, either formally (like nurses) or informally by forming silos. Thus the castes become self fulfilling.

As an aside, one thing that HN has taught me, reinforced by this thread, is that I would not have survived in a high throughput coding environment, and am glad I didn't steer my career in that direction, though I love programming. I don't have the self discipline, and I'd have burned out quickly.

Post reply on HN