Which Programming Language Should I Start With?

Discover how to choose the best programming language for your career goals and skills.

There are approximately 348 programming languages listed on wikipedia. That's the mountain of choices facing a newcomer to tech. Deciding where to start can seem like an overwhelmingly complex and frustrating task.

Choosing where to start your programming journey is an exciting step. You have already committed to learning this new skill and you are eager to get started. While researching different programming languages, you may have noticed uncertainty and overwhelm start to creep in.

You might be asking yourself, "there are too many to choices", "Which one is right for me?", "Will I waste time choosing the wrong one?", "How important is this decision?", "Will I be able to move pivot if I get stuck?".

I understand this predicament, when I was starting out I was in the same position.

This post aims to clear through the noise, and help you identify important factors to guide this decision making process. Once you have more clarity, you can make your choice with confidence and then move onto the fun stuff.

Let's dive in...

There are many languages to choose from

There are hundreds of programming languages in existence, each with it's own unique strength's and weaknesses. Each language has a group of loyal fans, firmly believing that their beloved language is superior to others. The major key here is finding the one that will get you the results you are looking for.

While there are countless options to consider, as a beginner you only need to focus on a select few. Many programming languages are relics from the past or derivatives of more popular ones. Others are so niche, they're impractical for beginners. By focusing on the most relevant languages you can simplify the decision you need to make.

Even after narrowing down your options, settling on a final decision still requires some thought. As a beginner you might feel unsure about which language on the short list is best for you. To further refine this list, there are some additional criteria you can apply to guide your final decision.

What are your specific goals?

The fundamental question to ask yourself is: "what are my specific goals?". You've got to begin with the end in mind and work your way back from there.

Are you learning how to code to start a career in tech? If so, choose a language that is in high demand by companies you would love to work for. If you are driven by career goals you can benefit from more research.

  • Look at the different developer roles in your typical technical team and learn more about what each role performs.

  • Tap into your network and ask people in those roles what it is like working in that role, where they started and if they have any specific advice for you.

Maybe you are learning to write code to create something of your own, to bring an inspired idea to life. If this you, choosing a language that is multi-purpose and has general applications would be a wise choose. Pick one with vast online learning resources, backed by strong community. You will be grateful for any help you can get along the way.

  • Identify software products that inspire you, do some research into their tech stack. Most big tech companies have engineering blogs; peek into what technologies that power their applications.

  • This can help you understand what startups are using, but keep in mind that mature companies might have moved away from their original technologies.

Or are you simply the curious type? You decided to learn this skill because you find it interesting. If this is the case, a language that is more accessible to beginners and has a gentler learning curve may be a good fit for you.

  • Your focus should be on optimising the learning experience.

Whatever your long term goals, decide with the end in mind. Create a list of important criteria that matters for your end goal, then filter the programming languages that meet your criteria.

Do you have any existing experience?

Have you learned any form of programming in the past? This could be something as simple as using to VBScript in excel, or tinkering with JavaScript for a website. Reflect on these experiences. What did you like or dislike? Use these insights to narrow down your choices.

Consider your current skills that are related to programming. Have you studied or worked in an engineering role? This background provides a strong foundation for problem-solving skills that are sought after in software development. This opens your choices up to more complex languages.

Or perhaps you have a strong background in design, especially in the creative fields. This could make frontend development a great option for you. Your visual thinking skills can provide a solid base for building out rich, dynamic user interfaces for mobile or web applications.

Do you have any experience in very data-driven fields. Finance, data analysis or quantitative type roles often require working with large data sets. If so, data engineering or data science could be a great fit.

Evaluating your past experiences and finding transferrable skills can help you leverage the work and effort that you have already put in.

What is your learning style?

Everyone approaches learning differently. There is no one-size-fits-all approach to skills acquisition. Awareness of your personal preferences can help you choose the most suitable programming language. Aligning your learning style with available resources enhances your learning experience.

Do you thrive on visual learning? Observing how things are done by skilled practitioners, watching closely while they demonstrate the in's and out's. If this is your style, then video based tutorials and code-along courses are ideal for you.

Do you find it easier to learn by reading? If you prefer to work through instructions methodically, moving at your preferred pace, e-books, guides and online documentation will be valuable resources for you.

Or, do you learn best by doing? You need to get "hands-on" and take a practical approach to learning. One-on-one mentoring, bootcamps or in-person training are perfect for you.

Understanding your best learning style will help you move closer to finding the right programming language. Select a language that has quality learning resources in a format that matches for your ideal learning modality.

What level of challenge can you tolerate?

How much challenge are you able to embrace and sustain? Would you prefer a steeper or gentler learning curve? Some programming languages are harder to learn than others, and this will have a significant impact on your overall learning experience and motivation.

The learning curve will be the most important phase of your journey. Make choices that set you up for success.

Taking on languages that are more challenging for beginners will test your patience and perseverance. If you know that you perform well with this kind of pressure, then great. If not, tackling a learning curve that is too steep curve will cause unnecessary frustration and may lead to quitting altogether.

Opt for a level of challenge that matches your temperament. Even if you do start on an easier path, once you have built up confidence and competency you can incrementally level up to more challenging tasks.

Which parts of the “stack“ resonate with you?

As a novice, knowing which part of tech projects you could see yourself working on, can be challenging because you are not familiar with the nuances of the software development world.

In real world applications, software systems are built using a combination of different technologies. Certain technologies are often used together, and overtime have become popular choices. These groups of technologies are referred to as a "tech-stack".

A tech stack consists of different layers of tools and frameworks that work together to create fully functioning software applications.

Large software applications can be generally divided into two main parts, the frontend and backend.

  • Frontend: the parts of software users interact with. It involves creating user interfaces and interactions that present data and controls to users. The frontend fetches data from servers and presents it in a human relatable way.

  • Backend: this is the server side code and databases that process, store and retrieve data in the cloud or on servers. The backend is responsible for the underlying functionality of the application.

Understanding this concept can help you choose languages that are used for different parts of the tech stack. You can lean towards working on the frontend or the backend, or else you can focus on both, which is called "full-stack" (the ability to work on both frontend and backend).

Community and support

Some languages have a strong vibrant community around them. This means there are many passionate developers contributing to the community and helping solve problems together. There will be plenty of learning material from varying styles of teaching available to be consumed.

Strong community resources translate to better support when you have questions to ask, or are in need of assistance when encountering obstacles.

If you are a person who benefits from on this kind of community, choosing a language that is known to have one would be a wise choice.

On the other hand if you are very comfortable with figuring out things on your own, with limited resources, this will not be an important factor for you.

Potential in the job market

If you are going to invest your time and effort into learning this skill, choose something that can open up career opportunities for you, even if your initial intention is not career driven.

Take a look at different companies you might enjoy working for. Investigate the careers section of their website and identify the skills they are seeking. This will provide clues as to what the market finds valuable.

Study the developer survey sites and find out what the most in-demand languages are at present. Insights are made available every year by companies like stack overflow, who poll large audiences in all sectors of the tech industry. Leverage this information when making your decision.

Common choices for beginners

With all the above mentioned considerations, you can filter the available options and be better equipped to make your decision.

I have put together a potential list of programming languages that I think are good options to consider when starting out:

  1. JavaScript:

    1. Uses: Frontend, backend, full-stack development.

    2. Overview: Versatile and widely used in web development, JavaScript opens up many options for developers.

  2. Python:

    1. Uses: Backend/server-side development, data science, scripting.

    2. Overview: A great multi-purpose language with a wide range of applications, Python is known for its readability and simplicity.

  3. Java:

    1. Uses: Backend engineering, enterprise applications.

    2. Overview: Java is a robust, object-oriented language commonly used in large-scale enterprise environments.

  4. Ruby:

    1. Uses: Backend development, startups, rapid prototyping.

    2. Overview: Known for its simplicity and productivity, Ruby is a popular choice for web development and startups.

  5. C#:

    1. Uses: General programming, web development, game development.

    2. Overview: Supported heavily by Microsoft, C# is versatile within the Microsoft ecosystem and used for a variety of applications.

  6. Go (Golang):

    1. Uses: Concurrent programming, backend development.

    2. Overview: Developed by Google, Go is known for its simplicity, efficiency, and excellent performance in concurrent programming.

  7. PHP:

    1. Uses: Web development, e-commerce platforms.

    2. Overview: Despite being older, PHP remains a popular choice for many web applications, with great documentation and strong community support.

Happy Coding, let me know if you have any questions!