6 ms·
I have bewilderingly tried to discern why software development continues to grow more and more complex. It wasn’t always like this. There was a time when we ta
by travisgriggs 4y ago
I have bewilderingly tried to discern why software development continues to grow more and more complex.
It wasn’t always like this. There was a time when we talked about languages and OSes and libraries as if they made a difference on how much you could get done with as little people and cognitive load as possible (the claims were very much overrated, but the point was we acted like it mattered).
And then it started ballooning. It seems to me that much of that coincides with a lot of new money being dumped into the economy, and software moving past the necessary-evil-so-how-do-I-drive-down-my-costs and on to the gold rush of you must have a web app for your service that rivals a video game in complexity and visual finesse. It seems to me that as long as their is so much free money sloshing around venture capital funding, that it was inevitable that the process of making software would complexify to soak up the extra cash. After all, you can only add so many levels and varieties of managers to add value. After that comes the variegation in roles of software development.
That’s my working theory anyway.
- user3939382 4y agoMy theory is a variation on that, which is that the money has placed so many more people in the space you inevitably end up with more people working in different directions, the JS ecosystem especially comes to mind here.
- debacle 4y agoBecause you have, in 90 (99?) percent of instances a smart person (probably IQ 120+) doing a stupid menial job that requires a level of competence that only someone smart can provide. So to prevent themselves from ending it all, they invent things to do to keep themselves sane while they churn out CRUD apps all day long for decades. Sometimes you get truly amazing software, but most of the times it's just reinventing the wheel, but worse. Even worse, some of them become infatuated with doing things "Like Google," and errant CTOs enable them, leading to a 6 person team supporting a piece of software that could be replaced with WordPress, to the betterment of the primary stakeholder. I've been consulting for over a decade now. The number of times a potential client has told me they've spent into the six figures (or eight) for something that free software does out of the box but better is depressing. The worst part? I usually can't convince that person they've been absolutely swindled, and so I have to let them keep on their merry way.
- hotpotamus 4y ago> So to prevent themselves from ending it all, they invent things to do to keep themselves sane while they churn out CRUD apps all day long for decades Or they spend the spare time bullshitting on web forums.
- _fat_santa 4y ago> I have bewilderingly tried to discern why software development continues to grow more and more complex. It's because of growth, software development today is both simpler and way more complex than before and that's entirely due to growth in the sector. In many ways it's simpler than it ever was, I'm writing an API using Lambda/API Gateway in AWS and it blows me away how quickly I am able to get services stood up and configure my API. But in another way it's so much more complicated, for this same API I spent 2-3 weeks experimenting and researching IAM roles and how all my AWS resources would interact with one another. I would say the floor of software development has become way simpler, deploying a site to Netlify is way easier than dealing with webservers of the past. But while the floor is lower than ever before, the ceiling is in the stratosphere, with extremely complex systems that you can string together in the "Public Cloud".
- insane_dreamer 4y ago> writing an API using Lambda/API Gateway in AWS and it blows me away how quickly I am able to get services stood up and configure my API > for this same API I spent 2-3 weeks experimenting and researching IAM roles and how all my AWS resources would interact with one another. same experience here, and trying to understand/test un/poorly documented AWS behavior with public/private APIs and EC2 resources has been a huge time sink :(
- dilyevsky 4y agoSaaS model requires software to be always online (strict sla) and you need to be able to update it without downtime or very little downtime. That’s the reason. For example, telecom software that always had these requirements was always complex
- jesuscript 4y agoYour guess is as good as anyones at this point. There’s just many over corrections that resemble strong levels of grandstanding. React is complex? Okay, let’s ditch JavaScript and just do basic server rendered pages. It’s a laughable over reaction (pun unavoidable). These are manic states the dev community enters, and all pragmatism is lost in our discourse on the solution. Cooler heads are not prevailing. There is certainly a solution in the middle. Devops is bullshit is also an over correction. It’s worth saying that making infra more accessible is a democratization of that entire sub-field. How do we preserve the good part of that?
- bsenftner 4y agoMy theory is we need to add "software history" to computer science education programs. How many developers whose careers began after 2000 have ever hand written or know the power of a Makefile? I've worked at research labs and major animation studios that back in the 90's the entire infrastructure was fully automated thru Makefiles, and it purred like a well fed cat. There are hundreds of thousands of forgotten perfectly fine software tools, ignored simply because our industry has absolutely no respect for it's own history or lessons painfully learned beyond pulling up disparaging stories for new marketing angles.
- ogogmad 4y agoVery interesting comment. What older software should devs know about? My problem with Make and similar tools is I don't want to learn more ad-hoc syntax to accomplish something nearly trivial. But I don't know if there's any alternative.
- bsenftner 4y agoOriginal Make was butt simple: any lines that begin without tabs are a filename followed by list of other file dependencies, files whose modified date must be older than the filename at the start of the list. Than any lines of text immediately beneath that first line starting with a tab character are the shell commands to be executed in order that brings the first file up to date against it's dependencies. That was it, that is the entire original Makefile syntax. Then software vendors started adding extensions...
- bsenftner 4y agoI guess as far as other, older software: I'd need to know your interests or field. How I write software has completely changed at least 5 times, and now I'm deep diving on my 6th (docker/k8s) to deliver the same things I was delivering back in the 80's with software development process one. Actually, add 3 more complete re-wiring of how I write code - I forgot working on game consoles: every new console is a complete start from zero how to write, debug, package and ship software, software that is not that much different than was delivered with the last platform and dev process.
- nathanaldensr 4y agoI completely agree that 20+ years of cheap money have absolutely caused much of the complexity we see today. That's because people aren't working on problems that matter; instead, they're just trying to make VCs rich--effectively passing the buck on to the greater fool. I think this era is coming to an end, and we should see a drastic reduction in software development costs with the end of cheap debt.
- ogogmad 4y agoI hope I'm not being pedantic here, so please forgive me. Didn't interest rates go to zero after 2008? So that's 14 years. I guess 8 years before that there was also Dot Com. Are you talking about interest rates? Thanks. Even if you're wrong, it's an interesting theory.
- hotpotamus 4y agohttps://www.readmargins.com/p/zirp-explains-the-world https://www.readmargins.com/p/zirp-explains-the-world Is probably one of the better explainers.
- bsenftner 4y agoWe may see a strange hang over from this period: over the last 20 years we've created tech billionaires and tech trillionaire corporations - both entities that are not used to being told "no" and will spend their own money to extend this party that is their reality. Case in point: FB/Meta and their doomed Metaverse.
- Jorchime 4y agoI think it is because of what is described through Conway's law: https://en.wikipedia.org/wiki/Conway%27s_law https://en.wikipedia.org/wiki/Conway%27s_law Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.[2][3] — Melvin E. Conway The problem isn't necessarily software itself, but how we organize people (more than 2 or 3), how we communicate, how we mirror operations, expectations, etc. in software. Scaling sustainable software feels like an "unsolved" Problem, because the society hasn't figured out how to organize better.
- ArjenM 4y agoSmall teams have honestly always been successful to the flaw that they outgrow themselves constantly in my experiences.
- Cthulhu_ 4y agoSmall teams can be super productive, but unless the people in it are there for the full run of a product, you'll end up with a problem; taking over the work for one developer will take more than one developer. I'm sure - but haven't witnessed this myself yet, so take it with a grain of salt - that if one productive developer builds an application in a year, it needs a team of 5-10 to continue development at a similar level, and even then it may not make it. Companies need to focus on keeping software as simple as possible, well documented, and transferable. Unfortunately this also means curbing people's enthousiasm.
- ldjkfkdsjnv 4y agoThe complexity of what we are building keeps expanding. Theres no large conspiracy. We have a lot of tooling to build things that were near impossible to build in the past.
- kuramitropolis 4y ago>Theres no large conspiracy Yes, there is a network of small to medium sized ones. > things that were near impossible to build in the past. Were they necessary in the past?
- ldjkfkdsjnv 4y agoThis is like asking whether innovation is necessary. Capitalism pushes us towards it. New forms of efficiency and value are unlocked by moving further out on the software complexity curve. Not everything thats complex works well, but some of it does solve the problem
- kuramitropolis 4y agoWhat's "capitalism" in this context, and what's its actual connection to software development practices? What are "forms of efficiency" and "forms of value", and how does complexity "unlock" them?
- acedTrex 4y agoCapitalism is a company that is attempting to solve X problem or do Y thing etc. Forms of efficiency are "how fast can they solve that problem". And complexity doesn't unlock anything. It's just inherent in the problem space a company takes on.
- kuramitropolis 4y ago>Capitalism is a company that is attempting to solve X problem or do Y thing etc So basically any organized human activity is now "capitalism"? >Forms of efficiency are "how fast can they solve that problem" From which follows that "new forms of efficiency" means that previously it didn't matter how fast they can solve that problem, but now, due to "moving further out on the software complexity curve", it has begun to matter? >And complexity doesn't unlock anything. Then what is meant by "moving further out on the software complexity curve unlocks new forms of efficiency"?
- jahewson 4y agoI semi-agree but my take is that money can buy you people, it can buy you lines of code, more moving parts, more stuff. But it can’t buy elegance, efficiency and good design - those have to be nurtured. Most engineers nowadays haven’t ever seen a codebase that isn’t a hot mess (no offence folks). The demand for talented and experienced engineers eclipses the available supply. The industry is growing too fast for that. The engineers that really are good are needed in leadership, or become founders.
- boppo1 4y agoAny open source codebases that meet your approval?
- imetatroll 4y agoI tried out cloudflare for the first time yesterday using a personal website. Previously I was just using a domain registrar and setting DNS to digital ocean. cloudflare is a very different/complex beast, but I can imagine that the pretty interface alone brings in customers. I don't like this hyper-expansion either, but when you have an army of monkeys on typewriters, well, a lot gets "produced".
- selfmodruntime 4y agoTo be fair, cloudflare is among the services I will defend forever. Their ddos protection is by far the best on the market.
- yamtaddle 4y agoI sometimes marvel at how few people worked on various pieces of commercial software in the 90s. You'd have 4x the headcount and still take twice as long, today. And it'd probably be webshit instead of native because "productivity matters more than performance".
- confidantlake 4y agoIt has blown me away too. There was a time where it seemed like the default "devops" strategy for startups was to use Heroku. Developers could spend all their time working on code. Worked at a startup a few years ago. We had 2 devs, and one devops guy building out Kubernetes, Docker, running on Aws. Had to constantly spend me time with him troubleshooting why this or that thing wasn't working rather than writing application code. We had like a 100 concurrent users. Now I am working at a large org for an internal application. There is an ops team I push code to github and Jenkins runs the CI and deploys it to a dev environment. I push a button in Jenkins to deploy to production. In two years there has been one ops related issue where I had to bump up the memory limit from 2GB to 4GB. There is a single server and a database. Setup works fine for a few thousand concurrent users. My skills are in development and understanding business reqs, not mucking about in config files. There are people that are good at that and enjoy doing that, let them handle it.
- jeremyjh 4y ago> We had 2 devs, and one devops guy building out Kubernetes, Docker, running on Aws. Had to constantly spend me time with him troubleshooting why this or that thing wasn't working rather than writing application code. We had like a 100 concurrent users. I'm glad you said this. 2-dev shop here and we've used Heroku the last five years. We spend all our time developing and supporting our application and almost never worry about infrastructure. I keep getting tempted to move to K8s; Heroku is expensive for what we get and seems to have suffered some serious brain-drain. I've dabbled with K8s in side-projects and I can geek out on all the terraform and yaml stuff for days. But its probably not a great idea to inflict it on a 2-dev shop.
- rglover 4y agoI like the Uncle Bob explanation: the number of developers has a doubling rate of ~5 years due to the constant entry of new developers [1]. Over time, the number of inexperienced developers far outweighs the experienced ones. Inexperienced developers naturally gravitate toward complexity because they don't know any better. Couple that with a social drift toward hyper-specialization. That sort of hierarchy naturally creates minds that don't think at the systems level. This is the general theme of Buckminster Fuller's Operating Manual For Spaceship Earth: the shift toward hyper-specialization (or narrow focus) has long-term disastrous consequences. When you couple inexperience with narrow focus, you get messes. Part of this is to blame on the industry-standard thinking that because someone works for Company X, they're a competent, logical engineer (and should be granted authority/responsibility over essential products/projects). This is the downfall of "code tests" and "whiteboard coding." They don't evaluate for systems level thinking and so a developer with poor creativity and logic skills slips through the cracks because they're great at eeking performance out of a function which impresses the lollipop guild. [1] https://blog.cleancoder.com/uncle-bob/2014/06/20/MyLawn.html https://blog.cleancoder.com/uncle-bob/2014/06/20/MyLawn.html
- agumonkey 4y agosociety also changed, tech is trendy, ecobronerds have the wheeldrive
- jiggawatts 4y agoIt's even worse than the Uncle Bob explanation. There are thresholds of effort for certain things at largely constant levels. E.g.: designing a new language, build tool, web application framework, or database all have some minimum effort that needs to be invested. In the past, there just weren't enough developers in the entire world to "overdo" these things, so there was a relatively small pool of languages, tools, and frameworks to choose from. Now, individual corporations have armies of junior developers spitting out frameworks and query languages like a machine gun. There's so many now that you or I haven't even heard of 99% of them! As the number of available developers grows exponentially, so does their capacity to "reinvent wheels". Their ignorance of existing wheels to they could be reusing grows exponentially also. The result is an exponentially exploding set of ad-hoc, incompatible systems. In my recent semi-DevOps, semi-Cloud-Engineer role I've come across an absolutely bewildering array of tools even when I've generally restricted things to one cloud and one language's ecosystem. Heaven help you if your project has multiple languages!
- sensanaty 4y agoThis just reads like a "Damn kids, get off my lawn!" type comment to my admittedly young mind. Same with a lot of similar comments I see floating around HN, especially ones that have anything to do with web development.
- boppo1 4y ago> money being dumped into the economy This is my theory too, and as someone learning to program (hopefully as a career), I'm very worried what a new paradigm of tightening will do to the field. I feel like LOTS of people who think their stack is secure are going to get dropped because at the end of the day, lots of the B2B SaaS doesn't actually deliver anything to the world of material needs.
- woeirua 4y agoThere is this moronic obsession with "scaling" in this industry, and it just blows my mind. You can have a wildly successful and profitable company while serving just a few hundred customers that requires nothing more than a basic LAMP stack. Meanwhile people are now spending millions of dollars and years of person-hours building MVPs in the cloud that won't ever go anywhere because the business model sucks. Focus on delivering value to your customer first. How you get there is quite literally irrelevant to your customer.
- trog 4y ago> There is this moronic obsession with "scaling" in this industry, and it just blows my mind. You can have a wildly successful and profitable company while serving just a few hundred customers that requires nothing more than a basic LAMP stack. This is us. We have a couple thousand customers in a B2B space with large revenue per customer. Growing rapidly and our node.js stack is running on a tiny EC2 instance and RDS server. I spent a lot of time in the last couple years trying to fight back against attempts to overcomplicate this by using new services & new tooling. I just see it all as stuff that's going to slow down the single most important thing to us from a business perspective - which is writing new features to optimise our internal workflows - and give us more headaches from an operational perspective. Even the stack we're using feels ridiculously over the top and complicated compared to a basic LAMP application. Everything in node.js feels like a huge pain in the ass. If there's not a node module you can install to immediately solve your problem (which of course just adds a different set of problems) even writing basic things feels exceptionally arcane and time consuming compared to a basic PHP implementation of the same thing. Maybe it's just a side effect of our dev team size (currently very small, only five full time devs) but the overhead of it all just feels like it's not worth it.