What’re the basic qualities to a software engineer? Hard skills such as coding, testing, business knowledge and algorithm, and soft skills as communication, passion, attitude, resposibility and so on. Posted an article talked about the over estimation of algrithm, I would like to raise a similar point, coding skill is overestimated as well.
In the first place I want to confirm we’re on the same page that the coding skill is one of the fundamental engineering skills, which I’m not interested in refuting. Coding is an important testing tool to know if the candidate would like to dive deep to solve issue in an interview, since we all hate to work with the “boasting” people. Now recall the senarios in Hollywood movies, software engineers seems are all hackers and they do the coding easily and quickly, they don’t like using mouse by the way. Of course it’s cool. However, we still need to come back to the reality, unfortunately mostly we don’t spend too much time coding, see what takes the biggest part in your working time? Searching in documents? Waiting for compling? Or even testing?
Coding is definitely an overestimated part in an engineer’s life. The mission as an engineer is to resolve softare issues, while coding is merely one common tool. In some companies such as Thought Works engineers make “projects” but they don’t make “products”, in other words, I mean they usually deliver a project and go away. These engineers pay more attention on coding skill than others, and as a result many of them are extreamely good at object oriented design and test driven development. I insisted engineers should have to take all the responsibilities in the whole product life cycle, especially maintainance, so that they can understand all the pain points. If only solid design/coding basis you have, no more than a “programmer” you can be, rather than an “engineer” (see my article dividing the projects by enginerring independence).