Do you know “Java”?

Do you know “Python”?

Do you know “insert language here“?

Many times someone may ask the above straightforward question to find out if the other party has the expected technical capabilities. This seems to be the obvious question to ask, given that software development is all about writing codes using the given programming language.

This straightforwardness even gets extended further. Sometimes, during candidates interview when I asked about his/her career planning, some candidates (esp. those that are applying for a junior position) will provide some programming languages that he/she would like to learn. It seems like mastering a new programming language is an additional step forward in their career path.

Of course, by now you probably realized that I think that by just looking if someone knows a programming language is a very naive way to justify the competence of a person. A programming language is just a tool. In fact, people of different competency level leads to vastly different outcome, even when using the same programming language.

In my opinion, what is more important in software development is actually the “thinking process”. Sometimes this is hard to be seen at first glance. Many times it can only be validated down the road, when real life projects put the person into test. And this is why someone may appears better that he/she actually is during interviews. A beautiful piece of “copy and paste” is all it takes to hide everything ugly under the carpet.

You may ask: What is the importance of programming language in software development? If I am a new learner, what approach should I take? Here’s my two cents:

  • If you are new to the programming world, choose your first language wisely. Choose a language that is general purposed, widely used and relatively modern. Java seems to be quite a good choice.
  • Focus on learning structures, concepts and algorithms. The syntax of the programming language is not so important. A good programming language will have sufficient documentation to lookup for the details when needed. Modern IDE (Integrated Development Environment) provides very good syntax hinting, highlighting and auto correction.
  • Software development is always about problem solving. As computers always faithfully follows human’s instruction, the problem must be first solved by humans before computer solves it. There are many techniques and skills in this field, for example “divide and conquer”, “abstracting”, “data flow tracing”, “domain analysis”, and etc; just to name a few. Train yourself on solving problems, quiz, teasers.
  • Mathematics is your friend. Example: algebra, trigonometry, probability, statistics and etc. It will come very handy.
  • If you are learning programming languages that are young (as in new kid in the block), focus on the new concepts that the language introduced and why it is designed so. Consider real application of these concepts and what problems they are designed to solve.

Hopefully this post maybe helpful for someone to have a simple understanding on what software development is actually about. Programming language is the beginning. All journeys start here. And I wish you a pleasant journey.