Computer programming is a valuableskill, but it is one that has started to die out, at least when it comes to true programming. There are a huge number of people out there who are scripters, or designers or who can do basic configuration, editing and logic, but real programmers are few and far between.
The OS Does it For You
One issue is that these days there are a lot of scenarios where ‘the machine will do it for you’. Before the days of Windows and Mac Os, when computer operating systems were text based and anyone that wanted to have a user-interface that was friendlier had to write it themselves, programmers needed to be more skilled. If they wanted to ‘talk to memory’ they had to do it themselves. If they wanted to write files to the hard drive, they had to do a lot of the work to handle opening the file, writing to it, and closing it, themselves. If they wanted to communicate with hardware they had to have an understanding of how that hardware worked.
Threading, resource management, input and output were all things that required careful consideration and coding. There was no room to be lazy, and you had to do the work. Today, a huge amount of that work is done by the operating system, leaving not much for the coder to do.
Libraries Breed Laziness
There is a school of thought that says “why reinvent the wheel” and to an extent that is true. Why would you focus on writing a deep and complex set of functions or procedures to do things that other people have already done better?
While that’s true for some things – you would probably want to make sure that your secure communication is secure, by having someone else’s library, that is extensively tested, integrated with your code – it’s not true for everything. Yes, it’s nice to have a graphics library that talks to hundreds of different types of graphics card, so that you know your software will always work well. If you’re writing a web app, then having UI frameworks will save you time. All of that is true if you just want to get something up and running.
The challenge, though, is that “getting something up and running” isn’t the same as being good at doing things for yourself. Many coders today are doing the equivalent of assembling IKEA furniture. Yes, it produces something useful at the end – and it can even require some thought and concentration. Assembling IKEA furniture does not make you a carpenter, however, and putting together a few frameworks and adding a good looking front-end does not make you a coder.
Visual Basic is a language that allows people to achieve a lot with drag and drop. JQuery frameworks make web applications look quite impressive. GTK takes a lot of the work out of open source development – but at what point does all of that become too much?
Breaking Down the Logic
At some point, it becomes important to be able to work at a detailed level, with logic. In the old days, that was assembly language. These days, the most low-level that people tend to get to is FPGAs and their associated descriptive languages. They use a different paradigm to a lot of the languages that are taught in schools and because of that a lot of people struggle to make the leap to that kind of development.
There is a place in the market – a huge place – for people who know the difference between a bubble sort algorithm and a heap sort algorithm. There is even greater demand for those who have the logical mindset required to come up with algorithms of their own.
Programming Means More Than Just Knowing Syntax
You will often hear people asking, “what programming languages do you know”. This is a shortsighted way of thinking. A truly skilled programmer does not “Learn C#” and then wake up in five years thinking “That language is obsolete now; all of my skills are worthless”. They would not learn how to program Altera cards and then feel like they wasted their career because Spartan cards became more popular. The actual syntax is something that can be re-learned quickly, and it does not take long to make the mental shift between two languages. It’s the logical mindset that matters – the ability to break things down into small chunks, to set variables that make sense, to write comments that describe the code well, and to structure the program in a logical fashion so that the QA team can write appropriate tests.
If you can do all of those things, then you will be in a much better position to keep pace with the ever-changing jobs market, and to pick up new technologies when they are released.
Today, everyone is a user or a consumer, but few people really understand where the technologies they use come from such as www.directics.com. This is something that has happened in other fields on numerous occasions – who really can sew, or do joinery, or brickwork, or make an even moderately complex electrical circuit? Today, we are content in the knowledge that other people can do those things for us, and while that is not always a bad thing – society benefits from shared expertise – it means that those who do take the time to learn and specialize will be in a much better position to seek high paid employment.
If you’re studying to be a computer programmer today, then look for a course that teaches the concepts of computer science. Any language you learn at college or university could well be on its way out by the time you graduate, but the skills that you pick up will stand you in good stead and will translate to any language, whether for the web, desktop, or integrated systems. Programming means committing to lifelong learning so that your skills stay relevant.
Jul 11, 2017 0
Jul 01, 2017 0
Jul 28, 2018 0