6 ms·
>the McKinsey framework only measures effort or output, not outcomes and impact, which misses half of the software developer lifecycle. >“The McKinsey framewor
by strict9 3y ago
>the McKinsey framework only measures effort or output, not outcomes and impact, which misses half of the software developer lifecycle.
>“The McKinsey framework will most likely do far more harm than good to organizations – and to the engineering culture at companies. Such damage could take years to undo,” Orosz and Beck argue.
I would go further and say it will likely damage user experience too. Cranking out features to game productivity scores and ignoring outcomes is a good way to get bloat, bugs, cluttered and overly complex UI, and an overall degraded user experience.
- bane 3y agoThe incentives for software development are somewhat broken. In the "old" days, there was an infinite amount of basic software to write (Operating Systems, file editors, compilers, etc.) and very few developers working on extremely expensive equipment. They had to write software that would just work, features were added based on need, and the idea of a continuous, high-effort, software development activity for a piece of software wasn't the rule. Once the job was done, the developers simply got paid and moved on. Updating, patching, etc was hard to do. So the incentive was to deliver high-quality working software that did what it needed to do for decades without there being a continuous development effort to keep it "updated" because you only got paid by moving on to new jobs. Today, the theme is CI/CD, which translates into "figure out how to keep an overstaffed engineering department occupied long after they delivered the working system". This translates into shipping broken, buggy, incomplete, software with the intention to keep the department occupied over the long-term with bug fixes, patches, feature updates and releases, and probably the occasional all-up rewrite. The industry says that the ideal form of this is to not only push releases every so often but to do it continuously in a never ending unbroken stream of work. But what happens when the software really is "done"? The answer is that we see it all the time. Often in various forms of enshittification (i.e. rent-seeking). Feature reductions, refactoring parts of a perfectly working system stack, changing languages. The incentive is to vertically integrate rent-seeking, companies are incentivized to seek new monetization sources (I want to say as a way to grow their business, but often it's to keep paying a crushing labor pool), down to developers who aren't incentivized anymore to ship-and-move-on. We also see other bizarre symptoms like taxi companies writing scalable message passing services and geospatial systems, or social networking companies building state of the art AI systems. So here's an idea, what if the way it should work is thus? - Developers are payed by the job, they pre-negotiate the price and the payment cadence (monthly, milestone, etc.) - Groups of developers could form an Agency if they want to centralize the negotiating and business bits. - Companies hire developers or Agencies for the job. A certain level of bug fixes are included in the contract. (x-number of months, so many bugs, certain number of hours, etc.) - Feature updates are new jobs. - Terms to include: "so long as we continue to use the software on our systems, the developers will get payed residuals." Modeled on how other Agency-based industries like acting or music continues to pay-out for use of the systems. - Good developers can end up on a big passive income stream, and could either continue working in the industry, or perhaps start spending part of or all of their time working on open-source projects that could provide reuse across projects within their industry. - The Best developers could go into a company, negotiate a nice contract, and the job could mostly be to yank the code out of a repo, compile, configure and run -- then collect passive income for the next few years as the company gets value out of that simple exercise. It's not the effort of the developer that bring value to the company, it's the value of the solution, so why doesn't the industry incentivize that?
- deleted 3y ago[deleted]
- drewcoo 3y ago> CI/CD, which translates into "figure out how to keep an overstaffed engineering department occupied long after they delivered the working system". CI is only about what happens before software is delivered. And I don't see what CD has to do with staff size. I think you're pointing out valid problems and misattributing their causes.
- geodel 3y agoWell, looking into bookish definition of CI/CD will not help here. In real world I regularly CI/CD pipelines reflects to delivery/product managers how fast features are churned out by team to be presented to business. A 10K ft view of CI/CD is often used by group leads, executives to show whats being achieved even at company level.
- UK-AL 3y agoCI/CD is making sure your code is always in a production ready state and validating with tests and other tools automatically.
- geodel 3y agoOkay. So? JIRA is supposed to track work that is to be done. Now JIRA is used to generate work when none exist because if there are hundred JIRA ticket resolved this week there must have lot of work done.
- bane 3y agoMaking an example up that I don't know to be true, but please just go with it: Google likely has a dedicated team who do nothing but tweak the front page of www.google.com I bet there's a Kanban-like board somewhere within that team with tickets like "change the button for image search to new branding icon" and "move the "About" button to the left-most upper corner from the right-most upper corner." "Make the corners on the search box more round" or whatever. Looking at the page now, somebody definitely had to generate work, and some poor front-end developer definitely had to perform the work to put the "Our third decade of climate action: join us". Every couple of years the team will take on some kind of task like moving the front-page to a new internal framework, or connecting it to some new search/advertising API. Remember when google would show real-time search results as you typed? "Let's put a Pacman game as the logo!" Here's Google's front page from 10 years ago https://web.archive.org/web/20130101000532/http://www.google.com/ https://web.archive.org/web/20130101000532/http://www.google... Somebody is making those changes, they exist. The decision to CD that page keeps them around. However, there is effectively almost no perceptible difference in the program performance, features, capabilities, or really even the aesthetics of that page in that time period to the user. It should be on maintenance mode with checking in on it being a part-time job for a single person. I bet that there's more than a dozen people who's sole job it is to keep that page "fresh". That's how CD results in inflated team sizes -- it's the "C". CI/CD never makes it over the wall into CM (continuous maintenance) and as a result becomes it.
- haolez 3y agoI'm very much a hacker myself, but isn't this a little unfair? There is an entire column in the framework described as "Outcome focus" and the items seem to make sense on a first glance. I'm not saying that the framework is good, but this specific criticism to it seems wrong.