#CodeNewbies' guide to choosing a learning path.
Before we start
I will like to share a story with you.
There lived a man in a small town with a very special gift. His gift, he could identify the next death to occur.
One day, the King invited this man to his palace with a plan to assassinate him. On the man’s arrival at the palace, the King confronted him “since you claim to know the time and order of everybody’s death, tell me when you will die.”
While the King signals for the assassins.
The man slowly replied that he wasn’t sure when but two days after his death a King will die.
I’ve recently received quite some mentor-ship request from folks learning to code.
These folks give me so much joy and I respect the fact they reached out to me. 😀
Below are a few frequent questions I have come across on Twitter, Facebook Group and even on a personal chat. I will answer these questions to the best of my ability.
It is recommended that you do not limit yourself to these lists, references, and recommendations given in the answers below.
Q1: How do I start learning to code and where do I get resources?
The art of learning depends on the individual. Some prefer a school system with a specific time schedule. Some prefer a one on one tutor, some prefer a group or peer learning while some are flexible in adapting to skills.
Whichever works for you, it is important you understand that about yourself first. This way you don’t waste time and money.
With a little research, you will find a tutor or a service that will march your need. Here is a list of some sites that have helped me or some of my colleagues in their coding journey.
Some of the listed sites above charge a reasonable amount of money which is worth the skills you will learn. It’s favorable to start with the free courses which bring me back to wasting time and money.
The free courses could help you tailor your direction towards what to learn and how to learn. It’s important to mention that these free courses are sometimes enough to give you a head start.
There are so many free courses out there, some sponsored by the big tech company such as Facebook, Google, and Microsoft.
There are some individuals on YouTube with great contents for beginners. Below is a list of some popular YouTubers:
- The Net Ninja
- Traversy Media
- LevelUp Tuts
Q2: Do I need a degree in Computer Science to become a software developer?
A degree in computer science is NOT a prerequisite for a software developer. If you have the opportunity to get one go for it.
It’s good practice to build on anything that makes you stand out. when you start applying for jobs, the majority of the openings state degree in computer science is a plus.
Q3: Which programming language would you recommend I start with?
Recommending a programming language to start with depends on so many criteria.
Will like to point out that every programming language is powerful, okay to start with, and can solve any problem. Answers below should serve as a guide.
Some of the suggestions below may vary according to your locations. I recommend you do a google search inline with your region but in general, this is okay.
So here we go 😊
If your interest is to learn to code or to start understanding the concept of programming.
Recommended Languages : Python or PHP.
Reasons: easy to learn, a large community of users, among the most used languages in production, among the most in-demand programming skills in the industry and large available resources for learning.
If your interest is to build for a specific target like Mobile or Desktop. This depends again on the platform of your target:
- For Android:
Recommended Languages: Java or Kotlin, but I recommend Java.
Reasons : a large community of users, among the most used languages in production, among the most in-demand programming skills in the industry and large available resources for learning.
The Android community as of this write up is replacing Java with Kotlin. Kotlin and Java have some similarities including syntax. but should you want to keep with technology? I would recommend you learn Kotlin, even though the community and the resources may not be as large as Java, with a little research you should be up and going.
- For iOS:
Recommended Languages: Objective-C or Swift but I recommend Swift.
Reasons: Swift was introduced by the team at Apple in 2014 with the target to simplify the understanding of basic programming on iOS, easy to learn, easy to understand, the modern language for the iOS application.
It’s also important to note that Objective-C has been the core backbone of iOS and the Apple family as a whole, choosing to learn Objective-C may give you a stronger foundation on iOS.
- For Windows:
Recommended Languages: C# or C++ but I recommend C#.
Reasons: C# was developed by a team at Microsoft with desktop and web as the primary target, easy to learn, easy to understand but for dept knowledge in software engineering C++ is a better option as it exposes you to more complex problem-solving techniques.
- For Game Development:
Recommended Languages: Python, Java, C# or C++ but I recommend C++.
Reasons: Some of the most popular game engines are built on C++ (Unreal Engine and Unity Engine).
- For Web Development:
NOTE: Other programming languages worth mentioning include: Ruby, Rust, Haskel, Go and lots more.
Q4: What are the tools I can use as a software developer?
I know you know this but first, you need a computer 😂.
Now that the white elephant is out of the room. 😉
It doesn’t matter the type of computer or the system configuration you have. Start with any, these days even a mobile phone can code but let’s stick with the PCs if available.
There are some applications built to help you with your coding journey. While most PCs have these applications preinstalled. Some individuals, organizations, and communities have built similar applications with few added feature to give you (the developer) flexibility and power over your projects.
The applications or tools you may need include:
- Text Editor: A software used in writing plain text files, any programming language you choose to learn will work with a simple text editor.
Common Text Editors are NotePad for Windows PC and TextEdit for Mac PC. Some alternative to a Text Editor: VSCode, Bracket, Atom, Sublime Text, and others.
- Most languages use supporting tools such as a compiler, a terminal, and others. Some software was built with these supporting features bundled into one application. These software applications are known as an IDE ( Integrated Development Environment ). Most popular IDEs are Android Studio — for Android developers, Visual Studio — for Windows developers, X-Code — for Mac developers, and others.
- For web development any of the above mentioned Text Editor and a Web Browser are all you need, common Web Browsers are Internet Explorer/Edge — for Windows PC and Safari — for Mac PC, some alternative to these are Firefox, Chrome, and Opera. I recommend Chrome because it comes packed with a very friendly environment that makes your code debugging easy.
- GIT: 🤔 Yeah don’t swear on me but you need GIT. GIT is a software that helps you track your code process, it makes it simple for others to collaborate on your project. GIT is very simple to learn but I suggest you give it a full tutorial schedule.
Q5: When is it okay to start applying for jobs?
Right after reading this article 😉. Yes, the fact that you have an interest in becoming a software developer is a start. Some companies are ready to work with individuals who have little or no experience.
Job interview itself is a process that needs practice and training. The best practice is always training on the job. Attending job interviews could produce one of these two results: You get the Job or you get to know where and what you need to improve in your skills.
Learning software development is exciting but knowing to code alone may not be enough: you need to learn how to learn and unlearn 🙃. Learn to understand not to memorize.
Be ready to learn on the Job and always know your worth and your limit, just like the story of the Man and the King.
I hope this has been helpful if you feel any of the above is not well explained feel free to reach out on Twitter @iNidAName or comment below.
This is a fantastic guide, Hassan Sani. It will be instrumental to a lot of code newbies.