Are considering learning to code? Would you like to become a developer but aren’t sure where to start? Do you have questions such as:
- Do I need a degree to become a developer?
- How can I learn to code?
- What language should I learn?
This article will answer these questions and provide tips about what to learn, and how to go about it.
What do I Want to build?
That’s the first question you have to answer. Do you want to build games? Websites? Mobile apps? Something else?
The world of software development is huge, and there’s a considerable number of languages and technologies you could learn. Programming languages were designed for and are used for different things. When you know what sort of thing you’d like to build, it makes it easier to understand the most appropriate languages and technologies to look into.
The following list provides basic information about some of the potential developer roles out there currently. Consider it a loose guide as to some of the languages and technologies commonly used, so you can see the similarities and differences.
Front-end Developer
The front-end of a website or piece of software is the part the user can see. Front end developers ensure sure the website/software they’re working on looks exactly as designed on all platforms (e.g. web/mobile/tablet). Relevant skills include HTML, CSS and JavaScript.
Back-end Developer
The back-end of a website or piece of software is the part that the user doesn’t see, but which makes it work. The front-end of a search engine may look very simple, with the company logo, a few buttons and a text input box. However, the back-end is very complicated. It must find appropriate results when users enter search terms, but before it can do that it must crawl the web index sites. Relevant skills include Java, C, C++, Ruby, Perl, Python, Scala, Go,
Full-stack Developer
Does both front-end and back-end work. They and can create fully functional web applications and require the skills of both front-end and back-end developers.
Web Developer: If you want to build websites some of the most basic skills you’ll want to learn to get started include: HTML, CSS, JavaScript.
Mobile Developer: Popular languages for mobile apps, for smartphones and tablets, include Java, Swift, and Objective-C. React Native (A JavaScript framework) is also popular for building Android/iOS cross-compatible apps.
Game Developer: Popular languages include C, C++ and Java. Frameworks used by game developers include DirectX, OpenGL, Unity 3D, WebGL.
Data Scientist: For those interested in analyzing data sets, statistical analysis, machine learning, data visualization, and predictive modelling. Popular languages include SQL, R, and Python.
Big Data Developer: Writes software programs to store and retrieve large amounts of data in systems like data warehouses. They are often familiar with frameworks and systems for distributed storage and processing of vast amounts of data such as MapReduce, Hadoop, and Spark. Popular languages include SQL, Java, Python, and R.
Software Development Engineer in Test (SDET): Writes code to validate the quality of software systems. They create automated tests, tools and systems to make sure that products and processes run as expected. Popular languages include Python and Ruby.
Embedded Developer: Works with hardware not usually classified as computers. E.g. consumer devices, iOT devices, hardware drivers and more. Typical languages include C, C++, Assembly, Java or proprietary technologies.
Hopefully, this helps you begin to figure out what type of developer you want to be. If you’re still not sure why not take a look at CoderHood’s article “19 Types of Developers Explained” . It discusses some roles not covered here and contains more detail for those wanting a slightly deeper dive.
I recommend taking some time to think carefully about what sort of developer you want to be, but definitely put a limit on it. You don’t want to find yourself six months from now in the exact same position you’re in now. Not when you could have spent a good 5-6 months learning to code. Give yourself no more than a month to consider it and make a decision. If you still can’t make a decision - just choose a language to get started with and stick to it.
What language should I learn?
Knowing what sort of developer is helpful in guiding your choice about what languages and technologies to learn first. If you’ve taken the first step above you may be starting to get an idea about what languages you should consider. For example, if you want to develop websites, start learning HTML, then go on to CSS, then JavaScript. From there you might start learning a framework like Vue or React.
Knowing, or not knowing what path you want to take doesn’t have to be a deal-breaker. Once you’ve learned the fundamentals of programming in one language it’s much easier and quicker to pick up other languages. Ruby and Python are great languages that are widely considered easy for beginner programmers to learn.
How do I learn to code?
These days there are multiple paths to becoming a developer:
- University
- College
- Bootcamp
- Teach yourself
It is not the purpose of this article to discuss the benefits and drawbacks of each option. The important thing to note is that you don’t have to earn a degree to become a developer. What you can do is much more important than the certificates you hold.
Universities, Colleges and Bootcamps provide a certain degree of direction and structure. If you’re teaching yourself, you have to work all the details out for yourself.
Create a plan
You can give yourself the best chance of success by creating a plan, and sticking to it. Some of the things you’ll want to consider include:
- On which days will I study?
- How many hours will I study for?
- What topics should I study?
- What learning resources will I use?
- What projects will I build?
In order to make consistent progress, and retain your knowledge you need to study regularly. If possible, committing to at least 2hrs a day of focussed study is a good place to start. Maybe you need to get up a little earlier or stay up a little later to fit coding in. Maybe you need to give something else up to fit studying in.
There will be days where you think about skipping your studies or giving up entirely. Think about why learning to code is important to you. Jot it down on a piece of paper and put it somewhere you’ll see it often. Learning to code isn’t easy. You will get frustrated at times and wonder why you thought you could do this. Even professional developers with years of experience get frustrated sometimes and that’s okay. You want your little note to inspire you and remind you why you’ve taken this journey into coding in the first place on those tough days.
To start with, focus on the syntax of your chosen language and fundamental concepts such as variables, conditionals, operators, loops, etc. The principle of these basic concepts is transferable to all languages. Once you know what loops and conditionals are and when to use them, you can easily apply it to new languages - you just have to learn the syntax, which may be a little different.
Resources you can use
Resources have never been easier to come by, many of them are free and of great quality. Apps, books, online courses, YouTube videos and podcasts all have a place in the learning process. However, to truly learn to code you have to write your own code. Sometimes it won’t run and you’ll spend ages trying to figure out why only to discover you missed a closing bracket or a semi-colon somewhere. It’s going to be frustrating sometimes but learning to fix bugs as important as learning syntax and theory.
When it comes time to looking for a job, potential employers need to know you can do what you say you can. Build projects. Start with small things and then build bigger, more complex things are your skills and confidence grows. You’ll be able to showcase your projects in a portfolio website to demonstrate what you can do.
Hopefully, you have a better idea now about what you’re going to do and how you’re going to approach it. I’d love to hear about what you plan to learn this year in the comments.