Bilingual programmers wanted from schools
The classified ad read, “Cobol programmer wanted,” yet earlier in the year the professor had distinctly and repeatedly sullied that language’s name, calling it the most useless on the face of the earth.
Instead, the student was told that one should learn a pure language, well-structured, with elegant constructs and an easy syntax … something along the lines of Pascal. Now if only the job market would realize this too, and offer jobs where Pascal is the language of choice.
This situation arises far too often today, especially at the university level where the languages taught often have little bearing upon the industry’s immediate needs.
It can be frustrating for a recent graduate to have to learn a programming language over again in order to contribute in a work environment.
Granted, it is not overly difficult to learn the syntax and structure of a new language, especially when one is already familiar with programming concepts and algorithms.
However, it does beg the question is the teaching out of touch with the real world?
Muddled thinking
There are many reasons why post-secondary institutions, especially universities, may teach little-used languages. First and foremost, it is not so important to teach the constructs of Pascal rather than Fortran, as it is to teach the elements of structured thinking.
Initial training in the right language is of little help if muddled thinking reduces the programmer’s efficiency.
It is far more important to teach how recurison works than the exact syntax in Pascal as opposed to C.
It is also desirable to simplify learning for beginners through the use of teaching languages, where the syntax lends itself to a painless introduction of basic concepts.
It is not necessary to needlessly complicate the demonstration of loops, for example, by using an arcane language which can confuse learners.
This is somewhat similar to learning a second language, where one learns the different words of the new language that convey a similar meaning as in the original language. Indeed, one of the values of Pascal, and more recently, Turing, are their suitability as good teaching languages.
Then there is the value of advanced research.
Some languages taught in post-secondary institutions may not have a commercial use today, but serve to lay the foundation for the next generation of languages or programming techniques.
It is ludicrous to expect all teaching to be about current languages because that would effectively cut off research and development.
Massive libraries
That, however, does not solve the needs of businesses. There is little cost-benefit in rewriting massive libraries of custom programs, especially when they are time-tested and work well. Indeed, it is often more beneficial to maintain and expand those programs, and this of course entails hiring programmers versed in the original language.
The end result is that schools should continue teaching advanced techniques, but hand-in-hand with established languages, and programmers should learn whatever language is needed in the marketplace in addition to what they are taught. In other words, they should become bilingual.
Patrick Abtan is in charge of the computer program at Agincourt Collegiate Institute in Agincourt, Ont. A former computer consultant, his current projects include the development of software for the medical and business fields.
Cobol was really one of those languages that you never forget, in my opinion. As we know, all computer languages have to die, but you’d be surprised at how many enthusiasts are left out there. It’s really kind of shocking to see the geek power on display!
Actually, developers have to become poly-lingual (all around web-dev already need to learn HTML, CSS, JS, and at least one server-side technology, yeah… it can be JS nowdays, you still have to learn node.js and related frameworks anyway for that). As you point out, it is not that much important to learn a specific language, but rather learn and understand the concept (recursion, control structure, OOP, functional, event-driven, etc.) and after that, it is usually not that hard, unless the language is completely different (e.g., jumping from procedural to OOP to functional might yield more challenges at first).
If someone feel completely lost when he learns a new language, even if he specialize, that would scare me.
If a company want someone to do a quick job in short term (1 week – 1 month let’s say), then you might want someone who can be productive technically from day 1. Still you don’t eliminate the non-coding task like analysis, learning the business domain, etc. and even further, you often have a learning curve of how they used the language(s) in their architecture (coding style, framework, philosophie, etc.). In other words, only knowing the technologies underneath is far from guarantying someone to be productive from day 1 when diving in codes.
It might be reassuring for a lot of people if the ressource know the techno, but if you are looking for a long-term team member to bring the team to the Stanley Cup (I’m Canadian, eh!), I would suggest to take the best developers instead of only the ones who know the technologies upfront. Easier said than done to evaluate, but you can evaluate what you search for without necessary focus on the technology you *currently* use. I may be and/or sound judgmental, and I do know some people on the market who still struggle with this, but for example, if your future developer can’t solve a simple recursion problem, in the syntax he wants, then it smells bad. There is other factors than skills or potential skills that might make someone fail those kind of tests of course.
All in all, I strongly believe that a good developer, with reasonable time for it, will learn the technologies and in the long run should make your team way more productive than an average one. So my suggestion would be that if you got a very interesting resource that don’t know your techno, find a way to evaluate his high-level/abstract/problem-solving/etc. skills, and take a decision based on this rather than the techno he had the chance to touch in his past.
Lot of people also suggest to learn/experiment-with a new language regularly (e.g., one per year), as you can see different ways of doing and become a better programmer in your language of choice. Similarly to playing a lot of sports will often make you better in your favorite one as you will develop other skills that you may use creatively in your chosen one(s).
Wow. Whopper comment, man! Nice work, and great points, all.