Lately, I had an opportunity to have a discussion with young people who are interested in a career as a computer programmer. The common questions that they had for me were:
Where I should start?
Which programming language should I start with?
Of course, whatever you learn is a personal benefit. But if you want to be efficient and to narrow your time and energy in getting relevant knowledge and skills for your specific needs, I would recommend the approach that includes the following steps:
- Ask yourself what you really want?
- Choose a programming language, based on your answer from the previous step.
- Select sources of learning materials.
Ask yourself what you really want?
Before you jump into the learning process of a programming language, take some time and go to your favorite place without noise, and think a bit about what you really want in your life and what you really want from computer programming. (What are the goals that you want to achieve?)
I believe that everything we do, we do for a reason. With that said, be honest to yourself and answer the following question:
What’s the reason you want to jump into a super interesting world of computer programming?
Did you manage to answer the question already? If yes, then jump into the next step and choose a programming language and the appropriate ecosystem.
Choose a programming language
I tried to list potential answers to the previously mentioned question. Try to find the answer that matches yours.
- I’m interested in mobile applications
- I love video games and I want to be a game developer
- I like the web and websites
- I’m impressed by Robotics and IoT (Internet of Things)
- I like to provide enterprise solutions for the public sector
- I want to build next Photoshop, Visual Studio or MS Excel
- I want to be a Freelancer and to earn some money
- I’m still not sure, but I want to start with computer programming
I’m interested in mobile applications
At the moment of writing this article (March 2020), the most popular mobile platforms are iOS and Android. So, my recommendations are in line with that fact.
If you are interested in developing native apps for Apple’s devices/platforms the logical choice would be: Swift or Objective C (more preferable Swift because It’s a relatively new programming language and has some advantages over Objective C)
If you are more interested in Android devices, then Java or Kotlin would be the way to go. Java is the official programming language for Android app development.
In this context, I would like to mention the tandem C# and Xamarin which can give similar results. You can write a mobile app in C#, and Xamarin cross-platform development tool can help you deploy the mobile app on iOS and Android platforms as well.
In the same context, it can’t be avoided to mention DART and Flutter. A new development platform developed by Google and stabilized in December 2018. This software development kit can help you develop solutions not only for mobile devices but also for web-based solutions and desktop apps as well.
I love video games and I want to be a game developer
Developing video games by my opinion is one of the most complex disciplines in computer programming, but definitely one of the most interesting segments.
As always, it depends on what type of games you want to develop, you can choose among a bunch of programming languages. But, for the purpose of this article and the context of what I should start as a newbie in computer programming, I would recommend you think of C# or Java. (Especially C# if you use it together with Unity)
If you are ready for a really outstanding experience in computer programming that will require an additional effort, then C++ language is the way to go.
I like the web and websites
This was my passion for a long time. Before 20 years I was fascinated by the fact of how easy can be distributed and used computer programs (read web-based apps) by millions of users. Today, that fascination is a common thing for the new generation. Even more, web technologies were developing and they still do rapidly and especially in the segment of the user interface.
NOTE: Please don’t forget that in either case, in the story about web programming HTML and CSS are a must.
I’m impressed by Robotics and IoT (Internet of Things)
C or/and C++. That’s a choice about which many experienced guys in this topic will agree on. Robotics usually includes software, electronic and mechanic elements. Many of the libraries for programming the hardware are written for the mentioned languages.
Except for C and C++, Python is another programming language that is pretty much popular in Robotics as well. If I was a newbie in the computer programming world, interested in Robotics, I would go with Python.
There are Robot kits that include electronic and mechanic parts, which can be found on the market. Having some of those kits can be a really good kick-off in getting some essential and not only essential knowledge in the robotics segment. Some of the popular hardware that you can get is
- Some of the Raspberry Pi kits
- Arduino or
- LEGO Mindstorm EV3
One solid kit to jump into robotics with C++ can be DFRobotShop Rover V2.
But, if Python sounds sexier to you than probably a Raspberry Pi based kit such as SunFounder Smart Video Car, can be a good starter kit.
I like to provide enterprise solutions for the public sector
Enterprise solutions require a certain level of complexity. The ecosystem for the development and maintenance of these types of solutions can help in dealing with the complexity of enterprise solutions.
I would recommend you think about C#, Java, and C++ as one of the programming languages.
I want to build next Photoshop, Visual Studio or MS Excel
A good choice for a core programming language for this scenario can be C, C++ or Objective-C.
I want to be a Freelancer and to earn some money
Many calls (demand for a service/solution) on the most popular freelancing platforms are related to web and mobile or to be precise most of them are related to Websites, Content Management Systems (CMS), eCommerce and mobile apps, especially for Android platform.
I’m still not sure, but I want to start with computer programming
For this scenario, one possible approach is to follow the trends.
When it comes to popular programming/script languages, I made a quick analysis in March 2020 to identify the top 12 programming languages for this period.
I based the analysis on needs and requests that the companies, organizations, and individuals have posted on the 8 popular job offer services and employment-related search engines. The result is a worldwide trend (not geolocation specific).
So, let’s see the top list among the selected 12 programming/scripting languages.
- Java (22.3%)
- Python (18.8%)
- C# (10.1%)
- C++ (9.8%)
- PHP (5.7%)
- Objective-C (3.2%)
- Ruby (3.1%)
- Perl (3.0%)
- Swift (2.0%)
- Groovy (1.5%)
- Assembler (1.2%)
IMPORTANT: The list with the most popular programming languages based on the demands for a programming service will give you an opportunity to have a solid pool of jobs that you can achieve. But at the same time be aware that because of the same reason, there are a bunch of programmers who are taking the same approach and learn popular programming languages. With that said, you have to be aware that the pool with your competitors is also big.
Selection of learning resources
Of course, the relevant university is something that can give you a very good basis for your development in the software development industry as an expert. Is it a must if you want to be a good programmer? I don’t think so. But what is a must is for you to gain your knowledge and skills in several disciplines. Some of the crucial are:
- Basic mathematical skills
- A passion for problem-solving
- Logic, computational and abstract thinking
- Good communication skills
- Good writing skills
- Confidence around a computer
- An inquisitive mind and spirit
Learning resources and forms
- You can visit a training or education center
This traditional learning approach it’s always good. It’s not flexible. for instance, you can’t get a lesson from a teacher in the middle of the night, but if a course applies the following teaching/learning forms will be valuable.
Forms: teaching by presentation, guided exploratory learning, open learning, individual teaching, learning in projects
Usually, those can be not so chip, comparing the other forms
- Books, articles, magazines
Humans use books for centuries. This format of the source of information is still suitable for many scenarios.
- Video tutorials and courses
You can find many of them for free or for a low price (10$-20$) that can valuable, especially if you are a beginner.
Recommended learning sources
There are many learning sources. I’ll just list 4 of them thus you will not focus and spend your precious time choosing the platform/library than investing your time in learning.
So, here we go:
edX (edX Free Online Courses) is an online platform for education and learning founded by Harvard and MIT. If you are ready for a systematical approach, this source can be a very good landing point. It can offer programs and degrees. Check if some of the links below include the topic you want to learn. If not, you can check all edX Free Online Courses.
Udem is an online learning platform aimed at professional adults and students. You can find great video courses that combine written materials, exercises, and quizzes to verify your knowledge. You can get some really good courses at a discount (10$-15$) and you will have those forever. You can use the purchased courses whenever you want. Also, they have a great mobile app which gives you the possibility to go over a lesson anyplace.
Amazon (as you might know) is a great source if you plan to use books. What I want to point out here are their Kindle ebooks. They have really outstanding library with digital copies of books that you can order instantly and you don’t need even to have a Kindle device. You can install their free app on all modern mobile devices (I use it on my Android phone). After you create an account and save the details about your credit card to the account, you can purchase the books with one click.
In case, you decide to check some of the Kindle models (great reading tool), you can see the following links to various models that Amazon offers.
Syncfusion company offers free ebooks as part of their resources that they offer for free. They publish books about modern and specific topics.
Ask yourself what you really want in your life, and put that in the context of computer programming.
Choose the right tool (programming language). I covered some scenarios based on potential answers to the mentioned question.
Find the appropriate learning materials. I shared a few of them.
What’s the most important in whole this story is to have discipline, learn every day or every second day, and practice a lot. Run the source-code editor (IDE) and practice.
Well written, Vasko.
One comment – while choosing the very first programming language for a beginner I would recommend languages that give the beginner solid understanding of programming principles.
After that you may start looking for a working tool.
Python is probably the shortest and easiest way to start being productive. An additional plus is simplicity of the environment, which is an important factor since we are talking about beginners.
If you want to go into the development of websites and mobile apps Ruby seems to be the easiest way to start.
A real starter for the young and old could be Blocky that is visual and easy to understand.