Why Programming Language Doesn't Matter - Lessons From My First Year as a Software Developer
One question I seem to get a lot is 'what programming language should I learn'. Somehow, this question seems to be preventing the majority of the people from taking up programming in general. However, the question is fundamentally flawed. Having recently completed my first year working as a software developer for a multi-billion dollar company, I have learned a lot of reasons why programming language should be the least of your concerns.
Lesson 1:
No matter how many programming languages you learn in school, or on your own, none of them will be as useful as your communication skills when it comes to the work place. The ability to understand your boss and co-workers is infinitely more useful than being able to print out the Fibonacci sequence using a purely functional language like Haskell. Without proper communication you will likely end up working for days on code that will never be useful in terms of the final product. I would recommend spending more time working on personal skills, like written and oral communication, than memorizing every C++ library you can get your hands on. This mentality can also be useful to any of you who are still in school studying in the computer science field. If you are able to speak confidently with your instructors, both by email and in person, the assignment questions that have been baffling you all semester, will all of a sudden become easy, simply by spending a bit of time talking about it. (Pro Tip: Professors often make some simple questions overly cryptic on paper, but will give you very clear instructions if you take the time to go talk to them in person) .
Lesson 2:
Google is a lifestyle...Embrace it. The ability to quickly obtain answers to almost any programming question you may have is within the grasp of anyone with an internet connection. Learning how to efficiently use google is one of the most basic, yet essential, skills you will need if you are looking to get involved in software development. You can spend years of your life taking in depth courses on programming paradigms, but the likelihood that you will end up using that knowledge is relatively slim. Being able to narrow searches using the appropriate keywords will substantially increase your productivity as a programmer. There is a never ending supply of new technologies available, and if you do not work for yourself, the chances that you will be tasked with using your favorites is low. Learn how to use Google to learn quickly and adapt to changing requirements over time.
Lesson 3:
Spot similarities. As I mentioned above, there is a ton of new programming languages and technologies coming out every day. If you are not already a seasoned software developer, do not spend much time learning about things that are unique to a specific platform. Try to take a step back and look for similarities between things you have seen. Once you start spotting these patterns, you will be able to learn new languages exponentially faster.
Picking a language:
Once you have taken the time to get better at the above three skills, pick a language, ANY LANGUAGE! You will have no real advantage based on which one you choose. If you are extremely indecisive, spend a few hours on YouTube watching how to print "Hello World" in several different languages, then choose whichever language made the most sense to you.
Core Ideas:
Now that you have spent some time watching and coding along with a YouTube playlist based on your language of choice, take some time to reflect. There is nothing less useful than a programmer who is constantly typing without taking some time to think about what they just did. If you are not happy with your understanding, try the same approach with another language...after a few you will start to notice a lot of the similarities I mentioned earlier.
If you feel overwhelmed after trying to figure all of this out, don't be discouraged. It is complete gibberish to everyone getting started, but learning will come quick. Personally, I only started learning programming 3 years ago...Up until then, it was a miracle i was able to get a computer to turn on.
Once you are comfortable with what you have learned, take another step back and think about the purpose of most software in the world today. In most cases software applications are based on data. The collection, storage, maintenance and visualization of data. This may not seem like an epiphany at first...but learn to appreciate this, and become skilled in those four areas, you will always be in demand as a software developer.
I hope this article helped anyone looking to get into the software development field.
Don't forget to follow @kavemantech on Facebook and Instagram!
Visit our website at www.kavemantech.com
Cheers!
-Kevin Manton
The third point is funny because I was learning Python and I think Javascript at the same time and at some point I crashed and stop learning both.
After 3 months I got back on the train and started to learn C++ and noticed how easy it is to learn C++ .... well because JS and Py already taught me a lot about programing in general line loops, vars, arrays and much more so C++ felt easy.
My Tip start html then a little bit of CSS (<10%) and then either Javascript or Python though I HIGHLY ADVISE JS due to its trueness to programing.
In Python you use for i in range(x): and that sounds way too english then actual programing.
Thanks for this post, I just started with basics for C#, not knowing what I'm getting myself into, but your advice, I think its the best I have received so far! Usually everyone I ask has their own opinion on every language out there, making it real hard to decide on a proper language.
I will definitely give your approach a shot!
Thank you :D
Great post! I have just graduated from middle school of computer sciences and the true dillema throught my schooling was "How do actual software developers program? Do they use google? Do they know every single command?".
Glad I could help :) Memorization will help to improve your speed if you plan on sticking to a specific language. But, in my job, about every couple months I will be tasked with learning something new in languages I have never heard of. The key as a software dev is to be able to sit down on google for a few hours, learn the basics, then figure out how to implement whatever it is the customer wants
Some IDE give a huge leg up with intelisense and the like. Currently I work in Visual Studio in C# with a developer tool called ReSharper. I have a good in-depth knowledge of the language so I do not touch google much, sometimes but not often. The tools I use help you in the right direction as you typeas long as you know roughly what you want.
That said I have written code for 30+ years. The more you do the more you know.
Kavemantech is right, learn to adapt and accept new knowledge. When you find new techniques stash them in your knowledge tool box. The more tools you have the better your chances of having the right one for the job :)
Excellent post, and as a seasoned programming I can agree with fact communication skills are not only an essential tool, but one lacking considerably in this field as a whole.
What I sill don't understand is debugging.
What is that ?
I would be more than happy to try and shed some light on debugging for you. Potentially a whole article in the near future. But basically debugging allows you to step through your code line by line to figure out exactly what is happening (kind of like having a print statement after every line of code). The debugger will allow you to examine the current state of all the variables within you code and will not execute any more code until you tell it to. I hope that helps! :)
My aim in life is to be a software engineer. Currently, I am in 10th Grade. So will you please guide me on what I should do? I followed you. We can talk privately if you want.
It's great to hear from up and coming programmers! If you have any specific questions, feel free to contact me through email or social media. My information can be found at kavemantech.com Good Luck!
You hit the nail on the head concerning communications skills. Determine what your customer wants (internal or external) by asking questions upfront and if the answers lead to more questions don't be afraid to ask more questions.
Great post and good insight. You are right on language choice although it can matter in one way. If you start off Imperative or Functional as they are different in mindset.
All languages in either camp have similar cores. The strongest similarities are in the C style languages. If you know any of these you can pick up the others real quick: C, C++, Java, C# or even swift.
What you will never be prepared for is real world code :)
The sort of code that is 10 years old and has had 10+ people through it each with different thoughts on the correct way to write things. All those quick and dirty bug fixes to make a problem go away :)
If you need a quality business software or application but don't understand anything about development, a long-term cooperation with Binary Studio is a great solution. Learn more here https://binary-studio.com/hybrid-application-development about their services and capabilities, including business application development of different complexity.