Coding, is? Fun!

Tuesday, February 13, 2007

Thinkers and Designers

I was chatting with a potential recruit to my company. He was thought to show promise by HR; he was confident, expressed himself clearly. Around 5 years of experience.
I asked him what his role was in his company. He said he was a designer. (Ofcourse, he meant software design). I asked him if I could ask him coding questions.
He gave me a condescending look and said he had not coded for the last 9 months. He purely "designed".
I asked him how he "designed" without reference to technology; he dismissed that question. He just decided how things should work. It was upto lesser "programmers" to implement his design.
He also informed me that his company had a special design team; that people were promoted to it for "outstanding" performance. They apparently stopped the lowly job of coding on reaching that team; they just designed.
I asked him specific questions on a couple of simple technologies and he had no clue. He had no knowledge about design methodologies; software development processes or any knowledge of design as a discipline.
I have always been surprised by this - how can technical people, in the beginning of their career, reject coding as menial labor and style themselves as designers? Isn't that career suicide? I would never hire a person to a technical position if they did not know hands-on coding. It is my belief that you can never really design a good software system without knowing the technologies used to some degree. Technology-agnostic design does not exist.
Does this mean a .NET architect can never design a good Java based enterprise system? It does not mean that. But it is essential to have a good grasp of atleast one suite of application technology.
As an example, let us say you are asked to create a data warehouse that aggregates data from different systems. It does help to know the concepts of Extraction, Tranformation and Loading; it helps to know multi dimensional querying; it helps to know dimensions and measures and aggregate queries. If you did not take into account specific technologies; if you have not even tried your hand at MDX; I would claim you cannot come up with a useful design.
All that you can do is draw a few blocks and say this little box talks to that big box and sound knowledgeable. CTOs can do that - not system designers. Design is more than that. It is actually creating an integrated system taking into account functional and non-functional requirements. If someone says "I sit and design a web application without being skilled in any programming language", then that person is a worthless hire.
I had the same experience with a guy in my neighborhood. He was 3 years out of college and he said his job was to "think". I am serious - he said his company pays him to think. I pictured him sitting in his cubicle contemplating the monitor. He thinks and he thinks and then he said he comes up with a solution. He then kindly shares it with the dumb programmers and they go and just do the simple job of coding. He said he did not do coding. I was surprised by this and he explained to me that he does code - sometimes - because he takes it upon himself to do a module. He was careful to clarify that nobody actually makes him code the module; he does it out of the goodness of his heart.
Actually that is what this attitude comes down to - these guys are ashamed to say they code because then that means they take orders from someone. They bow to no one. And they want to be tech leads.
That is the other aspect of interviewing - I have noticed that some people love to be questioned on "concepts". To them, a set of coding questions is insulting - one guy I interviewed in Philadelphia said it was like a quiz. I think this is just a sham attitude. If you did hands-on coding, it is the duty of the interviewer to find out. I can keep on asking vague questions about your last project, your attitude to team work, your strengths and weaknesses and crap like that - it does not help in judging your value as a technical person. A technical perosn must know coding and must answer specific coding questions, period.


  • I totally agree. Look at how interviews are diluted! Technical people - doesn't matter if they are leads or not, find it difficult to even rethink sorting programs and fibinocci series; forget recursive algorithms.

    The new drag and drop tools are to be blamed. Our teacher at Pune University used to say IBM f****** programming by promoting COBOL. A few decades later, Microsoft did it with VB. We come across so many technical people who can't think in terms of algorithms, functions, construct simple loop structures etc.

    Our colleges failed miserably in teaching CS. They produce executives who are happy to wear a tie, work for a CMMx company and live a miserable life. In the process they get to call themselves designers and thinkers!

    By Blogger Sridhar, at 6:21 PM  

  • I agree completely but we need to understand why these guys behave this way.

    The ecosystem is also to be blamed. As Steve Lohr popularly wrote in his really simple book , "Go To" on the evolution of programming languages and OS- There are only about 6 PL's and 3 OS in the world and most of it are evolved from one after the another. A lot of people dont even realize that and they fight on being one tech stack or the other one. I dont know whether that matters for a technologist per se.

    Our ecosystem has really set the capitalistic mindset on people that makes them think that they need to go to San Franciso on third year of their engineering degree rather than understanding algorithms et al. In other words there is no concept of "desire what you deserve".

    In my mind, programmers need to visualize and implement all the time. But the Indian Industry have not created a hierarchy for people to remain as programmers!! In the US there are programmers who have been coding in a single company for 16 years! But we dont have that concept because Indian companies have given a perception to programmers that they can move up the ladder only by not coding!! That is super prevalent and that is why we see people who come to an interview with photon and get surprised by us asking coding questions!

    This can change only by a conscious attempt at all levels. Technologists need to take pride in their skills and they deserve to be. Companies should treat technologists well rather than promoting them to be in pre-sales after 10 years!

    By Blogger Prakash Gurumoorthy, at 9:23 PM  

  • I either read somewhere or heard someone say "Doctors' offices are created around the doctors. The clerks, receptionist, lab folks, patients, etc. work around the doctor's priorities. If software were done that way developers (including designers and architects) should be the center of the dev shop universe and the managers, finance, hr and admin and all other activities and policies would revolve around them."

    But then if the dev were as skilled and as invaluable to the work of the organization as the doc, would we need management of software projects at team, group, project, program, account and business levels?

    By Anonymous Surya, at 1:21 AM  

  • I accidentally published the previous comment before finishing it. Sorry.

    Since there is lot of management and people who get there usually are senior, well respected, and don't code, probably programmers think that that is the upward route. Prakash's lament about our ecosystem forcing great programmers into becoming mediocre team leads since that is the only career growth path might be the culprit here.

    As a middle of road solution, we can probably consider those "designers" if we think they have a lot to offer and can be bent to program a bit by imbibing the culture at Photon, for which the senior guys must program at Photon, for which we probably need to make developers the center of our universe ...

    By Anonymous surya, at 1:28 AM  

  • Hi Ram,

    You are 100% right..

    People are forgetting coding due to the high spread use of editors and code generators.

    The education is also to blame.Its so crappy in India and never gives people an oppurtunity to "Think and Code "

    And even the high demand for so called "Experienced Talent " is a big factor. I have met people from who work in some top notch company and have about 5+ years of experience but they dont know the difference between ASP and ASP.Net although they have been working on a MS project for this duration.

    In the Open source world i feel the problem is different. They dont respect the other part of world.

    The current trend in the Industry is that we need professionals who are techology agnostic and I m afraid that the number is pretty low.

    By Anonymous varun, at 8:50 PM  

  • That was an interesting post. My 2 cents - I feel that the company also needs to put in effort in grooming the interests of a programmer.

    I have known cases where good programmers are asked to do project management and this sometimes hits on them bad and they start losing interest.

    By Anonymous Mukundhan (an old timer at Photon), at 11:44 PM  

Post a Comment

<< Home