For professions to be viable, there has to be a large dip between people starting out and people who had mastered it already. Otherwise there is no real incentive for people to start out in the first place; noone will pay a lot of money and invest years of their time if anyone with a few weeks of education can do essentially 99% of what they can.
This brings me to the point of software development. Software development is aweful as a choice of a profession if you work for someone else, and not for yourself, due to constantly increasing competition (every kid needs to learn how to code). Most work doesn't need a real understanding of the subject matter (algorithms, protocols) and can be performed using frameworks and libraries that "encapsulate" those concepts. I foresee something alike the split of nurses and nurseaides happening to software developers. There'll be a few software developers capable of understanding computing from A to Z who will write the libraries and the tools, and everybody else will be a consumer of these tools writing apps for the end users.
The only real rewarding part of software development is being able to design your own product and bring it to life, and reap whatever rewards the market allows you.
I beg to differ. I don't see constantly increasing competition, partly because the demand for (good) programmers is also increasing, and partly because (in my opinion) most programming work actually does need real understanding.
Besides, programming is a very rewarding activity in itself, due to the creative nature of it [1].
The great thing about software is that each new piece of software that is written opens up more opportunities for writing new software than it closes off.
And the great thing about software writers is that each new writer creates more work opportunities for experienced code maintainers and rehabilitators than they could possibly create for themselves.
Combine those two great things, and you realize that as long as the software industry can grow wider faster than it can grow deeper, it must. The tide of crap software with huge technical debt that will eventually have to be fixed by someone with real experience will only abate when everyone with the aptitude for writing software has already been doing it for a while.
At that time, people will be able to distinguish between a software writer that can maintain an existing CRUD app and one that can write new business-infrastructure software that scales across the entire enterprise.
That last category will be able to demand high compensation well into the foreseeable future, simply because the type of personality that has competitive advantage there is relatively rare in the general population.
> There'll be a few software developers capable of understanding computing from A to Z who will write the libraries and the tools, and everybody else will be a consumer of these tools writing apps for the end users.
The problem is that all the money is in the end-user facing applications. If you publish a research paper in some CS journal explaining a brilliant new algorithm, that is not worth very much (if anything). When somebody packages that up into a product that they can sell to users, or charge for the use of, then they've captured most of the value.
In my experience, all the money is in writing the hardened, scalable infrastructure. But then my experience is in the database, microsoft, oracle, amazon, facebook worlds.
> I foresee something alike the split of nurses and nurseaides happening to software developers. There'll be a few software developers capable of understanding computing from A to Z who will write the libraries and the tools, and everybody else will be a consumer of these tools writing apps for the end users.
I think that's already happened to some extent, as the proliferation of coding boot camps demonstrates.
On the other hand, a lot of the tools currently in use require a great deal of programming knowledge from users, e.g. Hadoop.
You are pretty wrong about software development. The only problem there is too much bugging from recruiters all the time. I can switch jobs without any trouble. The only problem is the amount of work is so great, the opportunities too huge, its hard to make a decision. If one job has too much work, or has bad culture, then switch jobs. I got my degree from a southern school, I didn't go to MIT or anything, and I have endless opportunities. And I'm old, almost 50.
I think your points make sense but you are forgetting that the demand for a certain skill isn't constant. So, while it's true that there are many people who can code entering the workforce, it doesn't imply software development being a poor choice of a profession if the demand for them is also going up.
And from what everyone seems to be saying, the increase in supply has still not yet hit the demand.
This brings me to the point of software development. Software development is aweful as a choice of a profession if you work for someone else, and not for yourself, due to constantly increasing competition (every kid needs to learn how to code). Most work doesn't need a real understanding of the subject matter (algorithms, protocols) and can be performed using frameworks and libraries that "encapsulate" those concepts. I foresee something alike the split of nurses and nurseaides happening to software developers. There'll be a few software developers capable of understanding computing from A to Z who will write the libraries and the tools, and everybody else will be a consumer of these tools writing apps for the end users.
The only real rewarding part of software development is being able to design your own product and bring it to life, and reap whatever rewards the market allows you.