In this part 2, I dive into some of the different programming disciplines and roles, with a view to exposing you to different programming languages.
If you want to skip the waffle and just get links to stuff, skip straight to part 3: Resources.
Different programming disciplines
There are many different roles/job titles within programming here are a few along with the general thing they do.
There isn't an exhaustive list, just some of the roles that came to my head.
Is a Software Engineer the same thing as a Developer? Yes, anyone that says otherwise is chattin' shit.
Building websites/apps
In this section I'll discuss some different disciplines and some languages which tend to be used for these jobs.
This might help with ideas for what to learn first.
When you start out you don't need to think about will learning X get me a job?
. Start out with finding what you find fun in programming. That being said, in order to do that, I think it's useful to get a general idea of the different tools/tech that might be used in different jobs.
- Frontend Developer: Builds websites in
HTML
,CSS
andJavaScript
. May also do some design work. You will see lots of talk aboutReact
and other web frameworks. too in this area. You may come across TypeScript, this a big topic, it's "safer" JavaScript, doesn't run directly in the browser though has to be compiled. - Backend Developer: Builds the logic on the servers or tooling needed to make the site work. Example languages
Java
,Python
,Ruby
,PHP
,Go
,Rust
,C#
. You may come across the term APIs a lot. May work with databases usingSQL
orNOSQL
Database tech.For JavaScript you may come across Node.JS, this a tool for running JavaScript on the Backend e.g. servers or command line apps. So you can use JavaScript for an entire application if you wanted, making it a good potential language to learn. But don't write off everything else.
- Web Developer: May be the same thing as Frontend Developer but may also do some Backend too.
- Full Stack Developer: does a bit of everything, though typically people still have one thing they are better at.
- DevOps: Some cross over with Backend developer, write tools/processes/deployment script to make applications work at scale. Example frameworks/tools/languages/techniques:
Python
,Go
,Kubernetes
,Terraform
,Continuous Integration
. - Cloud Engineer: Similar to DevOps but you might find they specialize in a particular cloud provider, such as
AWS
. - Database Administrator: Less common as an individual role these days, usually rolled into Backend Developer or Dev Ops. Exa,ple database language:
SQL
.
I realise that was a hell of a lot of jargon, most of it doesn't matter, any of these programming languages would be useful when it comes to building websites/apps:
- JavaScript, Python, Java, Ruby, Go, C# (Less so), Rust,
These were very focused on web apps because those are the most common these days, outside of mobile apps. You will find that even some desktop apps use web technologies such as Discord and Slack.
In general, as someone new to programming it's probably a good idea to start out looking to Frontend and Backend development.
But there is a shortage of people with the skills to do Cloud Engineering/Dev Ops well.
If you are going to learn Frontend tech i'd recommend striking a nice balance of foundations in HTML
, CSS
and JavaScript
and also learning modern techniques for building Web Apps, such as using React
.
Systems engineers
I'll confess I don't know much about this industry but it would be building tools in low level programming such as C
or Rust
, or maintaining super old software that never breaks or changes in old languages. Aim here is usually to have really fast or really robust code.
Games programming
I also don't know much here but I think starting with web technologies is still a good starting point for learning games programming.
I hate to say it but it's true, games dev jobs are generally paid less well partly due to supply/demand and also partly due to companies over-exploiting passion.
- Unity uses
C#
- Unreal engine uses
C++
- You can build games in
JavaScript
,Java
,python
etc but generally not as common.
Whilst Unity and Unreal are more production ready solutions, if you are wanting to learn to code and do something fun writing a game in any language is a perfectly good thing to do, there will be a tutorial out there in every language!
Data scientist/engineer/AI research
Python
, they all use python
. Some C++
if you need to make the code super fast, there is some cross over with Systems Engineers here.
You may also find that a lot of Data engineers work with SQL
databases, building queries for complex data models, or for fetching data to train AI models.
Building mobile apps
There is a lot of cross over here with building for the web, in fact there are some tools which just use web technology to build mobile apps.
In general though
- Mobile App Developer: Builds apps for Apple and/or Android devices. iOS:
Swift/C#
Android:Java/Kotlin
You can also use JavaScript
to build mobile apps, this is typically by using a framework like React Native
Getting that first job
The tech market in 2023 is definitely un-certain, but I don't think this should stop anyone from trying to get into the industry, it might be harder to find a company willing to take a risk on developers without any commercial experience, but equally, when you do find ones are that are, it's likely that they will do so because they want to invest in you and your learning.
Once you've started to gain confidence in your abilities and have created a few projects, it's never too early to start hunting (and applying) for entry level positions, typically these will be labelled as "Junior" or "Apprentice". There are also grad schemes from larger companies but many of the large tech companies are still stuck in the past with requiring university degrees, albeit not always Computer Science ones.
I was lucky enough during my degree to have a year in industry where I worked at IDBS (who I stayed with for 4 years!). I can attribute the majority of my knowledge to this first job. This year in industry was very much like an apprenticeship, and the good news is apprenticeship schemes are becoming more common, in particular in the UK, so definitely search for those.
Summary
Finally let's take a look in the next section a big list of resource i've gathered for where to go next.