I wanted to share a question I answered on Quora.com today. It was interesting and I thought I ended up giving a decent answer. Here is the question:
That kind of baffled me when I first read it, but I started thinking about it and answered. Here is the link to my response: My Answer. You can also read the response in this post below. Let me know what you think. (I was a little rushed, so I apologize if it seems spastic or isn’t clear.)
The Answer
Think of other hobbies or careers that involve tools. Take carpentry for example: A good carpenter has several tools he must use to build things. His skill with his tools allow him to create a superior product. The tools he uses may enable him to create a better product or possibly create the product more efficiently. Sometimes a particular tool is worthless for a task. A hammer is no good when you need a screwdriver.
Now compare this to programming. Languages are the tools the programmer used to ‘build’ their code. The more skilled you are with various languages and how they apply to what you are building, the better product you can build and the quicker you can do so. Lastly, all languages are different and no one language is the best at everything.
To use this analogy to address your question more directly, learning languages (tools) is essential to learning how to program. I would go a step further though and say that knowledge of program structure is also very important. A carpenter has to be aware of how to build things out of various types of materials, when to use which tools, steps necessary to build a product, and have a mental or literal blueprint of what he is building. Programming is no different. Learning about general forms such as variables, loops, arrays, classes, etc. are universal to most languages. Knowing the steps to building basic applications or forms is also essential to efficiently writing quality code. Finally, and perhaps most importantly, being able to create and/or interpret a mental or literal blueprint for your program is an important part of learning to program.
If you want to do something other than learn a programming language right now I have the following advice:
1. Consider why you don’t want to learn a language. This is an absolute requirement of programming. No tools = no progress. If you don’t like it, you won’t make it.
2. Study something related to programming such as mathematics, data structures, algorithms, etc. This will help when learning languages and applying what you know to actual projects.
3. Spend time writing code, rather than just reading about how to do it. Some of my best learning comes from just sitting down and working on something. See how far what you know will take you. Then, when you see something you don’t know that is holding you back, go learn it! That will give you the motivation to learn more of a language.
I hope this helps answer your questions. Programming is all about communicating with a machine via their languages. To learn to program is to learn to speak the language. Terms, syntax, context, etc. and how to use all of these to communicate more effectively.
Conclusion
This question challenged me to really think about what programming is and how multidisciplinary it can be. Languages are required and proficiency with them greatly increases your coding abilities. However, there are other things you have to know. Logic, math, data structures, etc. They all play their part. In the end, languages are the ultimate tools. As a result, they are where we should focus. Luckily, when you really practice your coding while learning a language, you tend to pick up the other disciplines along the way.
Bryon
Recent Comments