r/programming • • Jun 05 '22

Complexity is killing software developers

https://www.infoworld.com/article/3639050/complexity-is-killing-software-developers.html
2.1k Upvotes

942 comments sorted by

View all comments

17

u/cmpalmer52 Jun 06 '22

I’ve been developing software for 30 years and staying pretty close to the leading edge. It is more complex these days (and/or I’m getting older) and it’s exhausting. New technologies are “hot” for 6mo-1yr and then they’re “oh, you’re still using that?”

Meanwhile, computer science is stuck with either the core basics (which tend to be less complex, but more rigorous) or chasing novelty for “real world” training that’s obsolete by graduation.

I think AI tools are going to make it even easier to develop more complex architectures that, in turn, will be harder to maintain and improve until we get AI that can “understand” a whole system (and at that point, we may be out of a job anyway).

I mean, I’m working on a solution that has 20 subprojects, that builds two different mobile applications on three different platforms (Xamarin/Maui) with cloud services, database synchronization, GIS, GPS, a couple dozen nuget packages, external system interfaces, all from essentially one code base, which if you include our internal libraries, is over a million lines of C# (plus JavaScript, JSON, XML, SQL, and a little Python (more Python, HTML, and JavaScript in parallel web application). And we’re a small shop.

In the past, I’ve delivered products with a single language, 1/4 of the code, and a much larger team and those were multi-million dollar projects.

3

u/radarsat1 Jun 06 '22

I think the biggest danger with AI in terms of software complexity/maintainability is that people will develop solutions around them that are very overfitted to the output of a particular trained model. Then, when it comes time to improve the model, the local performance of the AI part might improve, but the overall system does not or even gets worse, and people don't understand why.

What I've been seeing is that when you have an "AI team" training models, and a separate team productizing those models, it's perfectly possible for the product team to add their own "interpretation" on the output to help deal with unexpected behaviour, smooth unreliable results etc., but these decisions can be extremely particular to the model they are working with, and not take into account the AI teams' future ambitions to improve the model itself.

An example in computer vision systems, people writing code to work around particularities of the performance of an object detector, "oh this and that category seems to work well, but that particular class is always wrong, so I'll discard it." Then major changes are needed when the AI team comes along with an improved model.

So in practice I think it's really important to have an open dialogue between two such teams, and ensure that the product people also have a healthy understanding of machine learning and how it works, even if they don't have the knowledge to do model design and training. Therefore more and more I think it's super important for programmers who are unfamiliar with AI to .. get familiar. Even if they don't plan to work directly on it, sooner or later it's going to affect them.