Live data from Hacker News

The economics of software teams: Why most engineering orgs are flying blind

viktorcessan.com

281–290 of 299 posts

Re: The economics of software teams: Why most engineering orgs are flying blind

#281
post #46

One interesting factor that I rarely see discussed is this: Let's say a DevOps person does some improvement to internal tooling and a task that devs had to oversee manually now is automated. Every dev spent about 2 hours per week doing this task and now they don't have to anymore. Now, have we saved 2 hours of salary per dev per week? Not sure. Because it totally depends on what they do instead. Are they utilizing tw…

You've freed up 2 hours per dev per week so they can work on something else that might generate profit. Even if they goof off for an hour, that's another hour doing something useful that they weren't doing before.

You've also possibly saved some money by automating a task that was previously manual, reducing or eliminating human errors that could have compounding costs.

And as someone else pointed out, you've made the work environment a little better by not wasting the devs' time on a silly manual task, which might reduce turnover.

Re: The economics of software teams: Why most engineering orgs are flying blind

#282

Earlier quoted context omitted.

Careful with that though. The guy whose entire job is to "take requirements from the customers and bring them to the engineers" really does get awful tetchy if the engineers start presuming to fill his role. Ask me how I know.

Please tell more. I have the same impression. But that is where it is going - roles merging and being able to do the full spectrum will be valuable.

Nothing much to tell. About 10 years ago on another job, I wanted more context in what I was building, so I suggested shadowing a user so I could see what they actually did, what value the software provided, and where the pain points were. A business analyst attached to my team became somewhat upset because she felt that impinged on her job. So there went that idea.

Re: The economics of software teams: Why most engineering orgs are flying blind

#283
post #265
post #263

Earlier quoted context omitted.

You missed the point. At some level even if you know basic moves those moves are wrong. Some things are hard to express in code even if you know exactly what you need to achieve and you know all the basic moves like loops and if statements. If you know that you have to do a check mate or get amount of points and you know how to do basic moves but you don’t know any openings you are going to loose in 3-5 moves. If you…

> Some things are hard to express in code even if you know exactly what you need to achieve and you know all the basic moves like loops and if statements. Like what? Are you, perhaps, confusing "hard" with "time consuming"? Some things take a long time to express in code (absent AI, at least). It's not hard, though. It's just rote copying down what you have already determined "what needs to be programmed". Getting to…

Well we don’t operate on the same definitions so I agree to disagree and move on.

Giving an example will take too much time from my perspective in regards to how much time I am willing to spend here arguing. Have a great day

Re: The economics of software teams: Why most engineering orgs are flying blind

#284
post #283
post #265

Earlier quoted context omitted.

> Some things are hard to express in code even if you know exactly what you need to achieve and you know all the basic moves like loops and if statements. Like what? Are you, perhaps, confusing "hard" with "time consuming"? Some things take a long time to express in code (absent AI, at least). It's not hard, though. It's just rote copying down what you have already determined "what needs to be programmed". Getting to…

Well we don’t operate on the same definitions so I agree to disagree and move on. Giving an example will take too much time from my perspective in regards to how much time I am willing to spend here arguing. Have a great day

So what you are saying is that writing is easy, but figuring out what to write is hard?

Re: The economics of software teams: Why most engineering orgs are flying blind

#286

Earlier quoted context omitted.

Why don't we instead focus our energies on the user . For some very important software applications the customer is not the user. Let the sales department focus on the customer.

The user is always a customer of the product in my mind. I don't use the term to mean a purely financial relationship.

The hospital information system Millenium from Oracle was bought by two regions in south of Sweden for around 400 million USD. It turned out to be unusable for Swedish healthcare and had to be shut down after just three days. Actual users of the software (doctors and nurses) were not involved in the procurement.

Re: The economics of software teams: Why most engineering orgs are flying blind

#287

Earlier quoted context omitted.

Meetings aren't even the worst resource wasters. Wrong initiatives, features, apps/platforms/services are. They capture future resources in form of maintenance and complexity with them.

Agreed, and this is where I think some more nuanced and conscious use of tech debt can be used when applicable. It might be OK to place some bets on an initiative or feature, but if we all understand we're placing a bet, this is an area to load up on debt and really minimize the investment. This also requires an org that is mature about cutting the feature if the bet doesn't materialize, and if the market signal is g…

Totally agreed! I think good orgs that run well have a good feedback process and ownership between the individual teams. In my experience, the closer they work together, the more visible the impact is on ROI. The less context everybody has, the higher the risk that an initiative goes sideways and doesn't fully match the intent.

And yeah, cutting features and offloading debt is important. I love that part when starting an engagement! It's a bit of work to check critical execution paths and how customers actually use a product, but it's a good excercise for everybody to see the relationship between revenue and code.

This all sounds easy and in reality it's not the hardest, but for some reason no one is doing it.

Re: The economics of software teams: Why most engineering orgs are flying blind

#288

Earlier quoted context omitted.

> Building a piece of software is or at least was orders of magnitudes more expensive than maintaining it This feels ludicrously backwards to me, and also contrary to what I've always seen as established wisdom - that most programming is maintenance. (Type `most programming is maintenance` into Google to find page after page of people advancing this thesis.) I suspect we have different ideas of what constitutes "main…

> that most programming is maintenance. What do you mean by maintenance? A strict definition would be "the software is shipping but customers have encountered a bug bad enough that we will fix it". Most work is not of this type. Most work is "the software is shipping but customers really want some new feature". Let us be clear though, even though it often is counted as maintenance, this is adding more features. If yo…

> If you had decided up front to not ship until all these features were in place it wouldn't change the work at all in most cases

In my experience (of primarily web dev), this is not true, and the reasons it is not true are not limited to software architecture conflicts like you describe (although they happen too). Instead the problems I usually encounter are that:

* once you have shipped something and users are relying on it, it limits the decisions you are allowed to make about what features the system should have. You may regret implementing feature X because it precludes more valuable features Y and Z, but now that X is there, the cost of ripping it out is very high due to the backlash it will cause.

* once you have shipped an application, most of the time when you add new features you are probably slightly changing at least some UI, and so you need to think about how that's going to confuse experienced users and how to address that in a way you wouldn't have to when implementing something de novo. For an internal LOB app, that might mean creating announcements and demos and internal trainings that wouldn't be necessary for greenfield work.

* the majority of professional web dev involves systems with databases, and adding features frequently involves database migrations, and sometimes figuring out how to implement those database migrations without losing data or causing downtime is difficult and complicated.

* as web applications grow their userbase, the scale of the business often introduces new problems with software performance, with viability of analysing business-relevant data from the system, or with moderation or customer support tasks associated with the system, and these problems often demand new features to keep the broader business surrounding the software afloat that weren't needed at launch.

* software that has actually launched and become embedded in existing business processes inherently tends to have many more stakeholders in the business that care about it than pre-launch software, and those stakeholders naturally want to get involved in decision-making about their tools, and that creates meeting and communication overhead - sometimes to such a degree that stakeholder management and negotiating buy-in ends up being an order of magnitude more work than actually implementing the damn feature being argued about.

To the extent that the amount of work involved in implementing a new feature is inflated by these kind of factors relative to what would have been involved in doing it de novo, I personally conceive of that as "maintenance" work; and in my experience my work on big teams at successful businesses has on average been inflated severalfold by those factors. (I also count work mandated by legal/compliance considerations that arise only after a successful launch as "maintenance". My rough conception of "software maintenance" is that the delta between "the work involved in building a product de novo with the same customer-pleasing features that ours has" and "the work we actually had to do to incrementally build the product in parallel to it being used" as "maintenance".)

Would most people agree with my broad notion of maintenance? I reckon they roughly would, but it's hard to say since people who talk about maintenance rarely attempt to define it with any precision. You give a precise but extremely narrow definition above. Wikipedia likewise gives a precise but extremely broad definition - that maintenance is "modification of software after delivery", under which definition surely over 99.999% of professional software development labour is expended on maintenance! I guess my definition puts me somewhere in the middle.

Re: The economics of software teams: Why most engineering orgs are flying blind

#289

Earlier quoted context omitted.

> which is that the actual programming is not the hard part. Figuring out what exactly needs programmed is the hard part. I’m growing tired of this aphorism because I’ve been in enough situations where it was not true. Some times the programming part really is very hard even when it’s easy to know what needs to be built. I’ve worked on some projects where the business proposition was conceptually simple but the whole…

> it was an extremely hard engineering problem But that is not programming then? Doing voice recognition in the 90s, missile guidance systems, you name it, those are hard things, but it's not the "programming" that's hard. It's the figuring out how to do it. The algorithms, the strategy, etc. I might be misunderstanding, but I cannot see how programming itself can be challenging in any way. It's not trivial per se or…

one example i come back to is multithreaded layouting/rendering browser engines. it was mentioned in the servo blog post back then when mozilla worked on it: "we tried it in c++ but it was simply too hard and complicated" (the argument was that they were able to do it in rust). still, as long as rust wasn't avaiable, the problem was considered "too hard" for the team that wrote firefox. in my opinion that's a solid argument for "programming problem that was too hard".

but as simon said, i too consider coming up with "the algorithms, the strategy" as part of programming. saying "it's easy to do if you know exactly how to do it" is somewhat tautological.

Re: The economics of software teams: Why most engineering orgs are flying blind

#290

Earlier quoted context omitted.

Imagine telling workers at a construction company that the hard problem was never building stuff but figuring out what needs to be built. The saying also ignores the fact that humans are not perfect programmers, and they all vary in skills and motives. Being a programmer often not about simply writing new code but modifying existing code, and that can be incredibly challenging when that code is hairbrained or overly…

I imagine the hard part isn't the literal building of the stuff. It's the months or years of politics, beauracracy, and bids needed to get to a point where you can build it. That's not to discount the intensity of the labor. Just that the labor is rarely the bottleneck in building stuff.

I see what you're saying, and our labor isn't the bottleneck from the perspective of engineers. However, I'm pretty sure that business leadership would beg to differ. They see engineering as a necessary evil to getting their products out the window, and it can never be done fast enough. The solution is the bottleneck in their eyes. Engineers have a better understanding of why they do what they do, hence they get that their work isn't inherently a bottleneck in spite of how challenging it can be.

But yes, in reality, you're correct that programming itself is not (or should not) be a bottleneck, but the process around developing a product definitely can be. The irony here is that this bottleneck usually gets worse the more corporate a business becomes and the more they try to treat programming as if it were a bottleneck. Not a day goes by that my job isn't made more difficult because the business wants greater agility and efficiency.

Post reply on HN