Over the course of time I've seen this ever growing division between two types of computer programmers.
Firstly there is the traditional "raw" programmer. This type like to own their code and nearly always program in C, sometimes Perl or Python but nearly always C. They understand how their program will compile and are okay with the fact that their code will compile a whole lot of evil "goto" statements.
The second type is the "library" developer. This type understand that writing code that has already been written is inefficient and use layers of other code to get code written quickly and beautifully. They will adhere to concepts like DRY and closures so their code is short and readable.
The "library" developer is in high demand as they can solve problems quickly by standing on the shoulders of giants. They understand their code must be easily readable because of the next person who may work on it. Constantly learning about new programming strategies and libraries is of the utmost importance to keep their programming skills relevant and efficient. Regular progress and multiple projects are the norm for this developer. Writing code that uses a library and is used by a library will keep them in a job like the "raw" programmers.
Another aspect is these two types of programmers don't tend to get along, even though they need to. What I've seen is this divide growing. Will it get to the point where the "library" developers don't even know what a computer is doing? Will "raw" programmers be regarded as too inefficient and relegated to only writing computer games and operating systems or has this already happened?
It's obvious now that there's an entire industry to connect these two types of developers. People that maintain tools and libraries that run in between these two types are common, Atlassian make a lot of money from doing just that. Where will it progress from here?