ifacethoughts

A Programmer, Not A Translator

I did some interviews for a company for hiring some programmer positions. The company wanted to hire Java experts, wherein I think lies a problem, but let us get back to it later. I interviewed a couple of people and was surprised to see that they knew Java very well, but not basic programming concepts itself. They knew about hashtables, but were unsure how they would implement one. It was same with a lot of other things and I remembered by post on identifying weak programmers.

It is disappointing to see people wanting to be more of translators than programmers. They want design given to them to the nth detail so that they can just translate it into a programming language. As a designer, I think if I design something to the nth level, I might as well code it. Every programmer has to take some responsibility of designing, otherwise software development will be inefficient.

I think it is wrong of even the companies to want for only language experts. They should hire programmers, who are languages experts, or who can work in multiple languages. I have seen the typical advertisements for language experts mislead beginners about what to work on.

One of way trying to build the programmer in yourself is to question every single principle, standard, paradigm or language feature with a why. The second – learn at least two programming languages. I think a necessary virtue of a programmer, whether he/she is learning or working, is to question before accepting or suggesting a solution. Be a programmer, not just a translator, or be ready to lose your job to a machine pretty soon.

Discussion [Participate or Link]

  1. Jayanth said:

    Pretty bang on target what you’ve written.
    I had written earlier that is the difference between programmers and coders, here in India we are more used to being coders, take the design and just translate them as you call it. I guess that is one of the main reasons, as you had written elsewhere the innovation happening is not at a large scale. My thoughts are http://rovingthoughts.wordpress.com/2007/04/09/coders-vs-programmers/

  2. Jayanth said:

    Thanks for the comment Abhijit,
    how do you propose to change things from the education level, pretty intresting that you thought it that way. Probably I would like to work on this aspect, would love to join you if you are interested on this.

  3. Paul Davis said:

    The thing with increasing detail and structure in design is, if it goes far enough, someone will write a compiler for it ;-)
    It would become the code

  4. Abhishek said:

    I disagree that the change is required at the education level. A few years back I used to think why my college teaches me so many algorithms instead of teaching C# or J2ee. But, now after these years in the industry I can proudly say that those sessions were really of great importance to me. Programming language doesn’t matter as much as does the programming concept. Here in India, we have a great education system and so is elsewhere too (regarding academic courses).
    The pain is that people can’t differentiate between coding and programming. The lacking factor indeed is passion and dedication towards the work. Also many times achieving a milestone in the given time dampens the willingness of innovation. Very tight deadlines and desire to strictly stick with getting work done SOMEWAY facilitates the SOMEHOW concept and people code in a straight path.

  5. Tarun Chandel said:

    I think its a very valid thing to say that this change should happen at the school level. People should not be trained as coders but as programmers. I will come back to it..

    The problem I think lies in the economics, the demand for people who can churn out code as soon as they join the project is too high and that is taking a toll on the quality of people who code. If you can just code (in most cases copy paste a code from similar module and change few things) you can get a job.

    The solution also lies in economics the demand for programmers is not that high and that is why the supply is low as well. Imagine if you are a very good programmer and you are given a job to cut paste a code that you don’t even deem worth crap will you stick to the job??

    Coming back to starting early at school, I think there is serious lack of good people when it comes to teaching programming, not many teachers I know are good at OO principals. This leads to a huge gap between people capable of coding and people capable of thinking of a solution. When these guys land up in industry they don’t even have a clue for 2 years what is going on??? Where is the application of all that they were taught??? They learn from their seniors, if they are lucky to meet a good guy they hit the right path and otherwise (which is case with most) they start aping them in blatantly copy pasting day in day out.

    Where is the learning, where is the culture of learning??? The onus lies on each individual to learn on his/her own and if someone has the will to learn there are enough places/resources/people available.

    Tarun
    I Think I move this to my blog as a post :)

  6. codist said:

    I wrote on this last year: The Absolute Need To Understand. Programming is always about understanding, whether the problem at hand, the language, the frameworks, the OS, whatever. Programming is not paint by number, although there are people who would like it to be so.

  7. Abhijit Nadgouda said:

    Jayanth, yes I truly think that schools should start teaching more of the concepts than the language. Let us talk offline about what we can do about it. I am glad you are interested.

    Abhishek, I am truly glad for you if your academics were more about algorithms than the programming language syntax. The reason I said the change should happen at education level is because at that stage itself the programming concepts should be stressed on more than the programming language itself, which gets missed a lot of times. So we actually agree on the basics that concepts should be given more importance :-)

    Tarun, I think you are absolutely right about the economics aspect. But I think the demand is low of programmers because even the companies think more from a short-term per-project perspective instead of a long term one.

    codist, I am subscriber to your blog and I am sure your post lingered somewhere in the back of my mind when I wrote this. I wish I could have specifically remembered about it. Thanks for linking, that link increases value of this discussion a lot.

  8. Nikhil said:

    I have a theory that one of the essential hallmarks of a good programmer is the ability to understand and express a problem in a logical and consistent manner – I wrote about this here. When I interview prospects this is one of the things that I look for…

  9. raveman said:

    i dont like people like you asking weird questions, why the hell would you implement hashtable on your own? yes, no reason for that, beside hashtable is almost deprecated(but you would know that if you really learn java). how would you build your own hibernate? ok, build it and use it in your project, good luck with that.

  10. Abhijit Nadgouda said:

    raveman, I like people like you who ask why :-)

    The purpose behind asking the question is to gauge the programmer’s understanding of a hashtable. I will not say it is deprecated, it is very much useful even today and very much relevant from a data-structures perspective, whether Java or not. I do not expect code to answer the question, I want to know the thought process.

    I think it is good question if you ask would you build your own Hibernate? I think the answer will depend on the requirements and if any of the design decision of Hibernate would cause problems. It is quite possible that you will have to write your own or persistence layer or maybe customize Hibernate for your purpose. Either way, a deep understanding of Hibernate would be required, which is what would come out of answering your question.

  11. Coders vs Programers - Redux « Ramblings said:

    [...] but where is it happening when we are producing coders and not programers. Abhijit talks about it here very acurately. So what can we do? Change the education system? Or change our poilicies of [...]

  12. system develpment said:

    hi… there are so many kind of programmers. they have different fields in every skills they have. programmers do have their specialization in doing this thing. maybe others are good in other side but not in all ways. we also consider some things that others are not as good as others. maybe others know how to make a design at the same time knows how to program it. there are also others that are just good in one skill. so, lets be considerate in some ways. but it is very good to a programmer if he/she knows multiple languages. have a great day!!

  13. When Agile Might Fail | iface thoughts said:

    [...] them. In such cases, usually few do the design, write the pseudo code and the rest work mostly as translators. However, I have seen that flatter team structures, where every individual has the skill and the [...]

Say your thought!

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.

freshthoughts

contactme

Abhijit Nadgouda
iface Consulting
India
+91 9819820312
My bookmarks

badgesand...

This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.