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.
With the growing amount of computing resources (growing speed and memory) the first type of programmer should of died out but hasn't for three reasons. The first and most obvious is that these programmers maintain the base code for which libraries are written on and if they stopped doing it the second type of developer wouldn't exist. Secondly they are needed for raw speed, we've all seen that now common "spinning wheel" and love it don't we? Imagine if that happened when you went to start your car? Love gaming in JavaScript? Didn't think so. The third reason is to support the "library" developers when they get too deep and stuck. When this happens it's a simple case of finding out what's going on and how to fix it. Armed with tools like wireshark and a DASM "raw" programmers can come to the rescue.
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?
My own personal experience with this issue came in the form of the language JavaScript, it's the programming language used by web browsers. I started out with the opinion I should write all my own code because that's what a competent programmer should do. Almost as soon as I started Microsoft entered the game and started messing with things. In the old days I dealt with this by making different versions of web sites depending on the supposedly standardised technology being used. After a while things like jQuery came along which provides a common library to mitigate the differences and I found myself being outperformed by programmers using jQuery. I learned the advantages of jQuery and came to love and embrace it.
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?
No comments:
Post a Comment