Value of trans-legacy Development Skills in the Enterprise

I would love to start a discussion of the current state of software development to coincide with the release of this great book. In particular, I would like to discuss the impact of outsourcing software development. I am seeing more and more the complete loss of all software development skills in the enterprise. Software development skills have been absent from the enterprise for so long that nobody in the enterprise even knows how to write software. If nobody knows how to write software, how can you even know if that vendor you hired knows what they are doing?

In my last two engagements nobody had even heard of “code-first approach” because there was no one left who’s job it was to keep abreast of modern web frameworks. They are still pursuing a database-first approach because it seems they hang on to their database resources long after they kick out their developers.

When I think of the problem of getting these shops to embrace functional programming with Elixir and Phoenix, I am first faced with the huge task of getting them to embrace software development again. The Pragmatic Programmer started a cultural shift in our industry that led to an explosion of creativity. I really hope this new edition can propel us along the path again.

1 Like

Outsourcing may be part of the problem but I wonder if this is also playing into it:

Advice from an Old Programmer:

I wonder whether the more recent surge in popularity in Python coincides with an increase of people who are domain experts first and developers second - i.e. being a developer takes a backseat, while their primary value is in their domain expertise.

Software development is a means to an end and good development skills are pointless if they can’t be applied to a domain. So those skills better be paired with good/deep domain knowledge or at least excellent communication skills with domain experts combined with the ability to acquire domain knowledge relatively quickly.

I wouldn’t be surprised if knowledgeable subject matter experts with passable development skills regularly beat out more competent developers who may not show that much interest in the domain.

9 Likes

I’ll focus on just this point here.

There is nothing inherently wrong with this approach per se. I knew amazing DBAs that could make your tables and views quack, jump, dance and generate reports at 85% - 95% of the full CPU / RAM / disk load saturation while doing it. And that was 10 to 15 years ago. I knew several PL/SQL magicians. It’s an awful language alright but with a huge list of rules (think NASA level of stringent standards) it can take you quite far.

Additionally, if people aren’t so afraid of databases, you can make a very solid CRUD-like REST API with Postgres. Technically, saying that Elixir – or any other language – “does it better”, is subjective. It’s also a fact that most businesses never arrive at the point when they might need the extra functionality beyond a basic DB + CRUD REST API for their apps.

So in terms of “DBs vs. full-blown programming languages” this is not as clear and cut as many make it out to be.

I dislike writing PL/SQL (or the other dialects with JS / Python / etc.) but I am realistic that’s just a preference and is not based on technical merits only.

1 Like

From my small experience, it feels that is not the software engineers that dont know how to write software, it’s a combination of pressure and opression, even for outsourcing, they give the idea that you are there to delivery what they want when they want because they think you need them, even if you know there is a better approach, they dismiss it, basically they do your job so they can pay you less I dare to say. Of course you can just quit, but what about the social position to say “I work for company X” and the comfort to have a job in what you supposed to like? So you just neglect and right stuff that happens to do stuff. And that goes for outsourcing and enterprises. It’s the whole enterprise hierarchical culture that doesn’t work any more.

Or even full GraphQL servers on top of your database

I bet it does, for every area that there was a proprietary software that did their modeling and whatever, there is a python package that does it better and more flexible