Me too ;) However I think both kinds of programmers can probably form great teams together. Being able to rapidly build full-featured applications very quickly has become very important. But as the applications evolve, this can come at the cost of scalability and maintainability. Improving that point very often requires knowledge of the low levels of the systems. Same is true for a large class of weird bugs that occur.
Although I'm not sure whether most companies see this the same way. When I went 2 years ago through a number of phone calls with recruiters I realized they were really eager to find young people. Being an advantage for me at same point, this will obviously turn different when I get older. And probably at some point there will be a new kind of developers with a completely different way of thinking and working, while we are still stuck on Github, Stackoverflow and HN.... I wonder how many people are still stuck on Sourcefource, C++ forums and slashdot.org ;)
If so - may I know your area / pitch? Just want to hear how others do it
1. Everyone starts somewhere. There's no reason to place an "us vs. them" lens on things as if a "CRUD-type developer" can never learn, improve or grow the scope of their interest.
2. How many domains (workflows, businesses, entire industries) could be improved via a simple CRUD layer on top of a database, and have yet to have said CRUD app made? IMO many. As software continues to "eat the world", there will be a need for more people to make the latest CRUD applications.
And what happens when a CRUD application needs more advanced features? Either the "CRUD-type developer" will rise to the occasion and learn some new skills, or a more experienced (e.g. the author of the blog post) individual will be hired/tasked with the job.
Even if I want to agree with the concept of the article, overall I find it to be a bit petty and underwhelming in its exploration of the topic. Particularly the "advantages/disadvantages" section.
I am personally bored to tears delving into algorithms, but I'm perfectly capable of writing them. Though I'm no expert I have dabbled in simple things like sorts and search algorithms. I simply don't enjoy it. I like solving other types of problems.
I have great appreciation for people who are improving the tools that I use. People who write virtual machines and compilers and parsers impress me. I am glad they are interested in the work down in the lower layers, though I have no desire to join them. I think it's unfair to lump everybody together, there is a lot of gray area. People like myself learn skills as necessary for our work as well as personal interest. Not because of mental deficiency.
I'm never going to write a compiler and don't especially want to. However I hope my attention to detail for user-facing features and my ability to solve real-world problems keeps improving and I think we need more of that type of programmer than we do the computer-sciencey type.
It's true that the new breed doesn't understand the lower levels as well as the old, but that is simply because 30 years ago there wasn't anything except the lower levels to understand. Getting anything done with programming back then was much harder, but on the other hand, the choices were more straightforward. Whereas there was a higher bar of raw intelligence and tenacity just to dip your feet in programming, today there is a higher bar to what true masters can do (the Obama campaign machine comes to mind).
The essence of software development does not change though. Just because you don't understand all the layers today as readily as a 1980 programmers would, doesn't absolve you of the responsibility of being ready and able to dive through the (increasing numbers of) layers to find bugs and leaky abstractions. Equally importantly, you need to develop a sense of where your time is best spent, both in terms of immediate productivity and in terms of long-term ability. This was as true 10, 20, 30 years ago as it is today.
It's intellectually dishonest to pretend that knowledge acquired by programmers of yesteryear was innately better and more detail oriented. Of course there are more mediocre programmers now because there are orders of magnitude more programming jobs, but there are more great programmers too, and it would very foolish to write off someone's talents simply because they do not share the same arcane but relatively useless knowledge that an old-timer posesses.