· 7 min read
Advice for anyone who wants to be a developer
My friend was contemplating a career change, possibly into game development or software engineering..
Advice for anyone who wants to be a developer
Intro
My friend was contemplating a career change, possibly into game development or software engineering.
I thought hard about what advice to give. The following is my opinion, which is biased towards what I know and do.
TLDR - Head over to Kotlin’s interactive website to execute and edit code. That’s it - you’re coding.
Still reading… Well, I hope you at least ran one Kotlin example.
I have mostly been a backend developer using Java, but now I use Scala. I started my career writing satellite navigation software in C++ back in 2000. A couple of years later, I was in the game industry professionally, then stopped becoming a contractor in 2006, writing phone apps. Since 2009, I’ve primarily focused on backend development. I’ve done many side projects along the way, and the last time I used TypeScript was yesterday.
Background
An entry-level programming job in London can pay between £30,000-£60,000. But this is just the beginning. With dedication and continuous learning, you can climb the ladder to a senior position earning around £ 80,000, and after a number of years, even surpass the £100,000 mark.
In the games industry, expect less salary and more work, and there’s a brilliant book about it, Press Reset: Ruin and Recovery in the Video Game Industry.
If you’re in the United States, you’ll be paid much more.
Remember, the more you learn and apply, the more you can earn. It’s not just about learning, but also about doing, that can boost your potential earnings.
To get a get job, there are two parts:
1. First, you must get an interview and stand out.
-
You don’t need a university or college qualification; there are online courses such as;
-
Coursera - Some courses are aligned with universities. In general, courses tend to be more academic. These are more of an undertaking.
-
Udemy - Great range of courses. Individuals offer them; some are great. Some are small courses.
-
AlgoExpert - This is an excellent resource. It’s well worth a look.
-
-
Create your own projects.
-
At first, do something tiny—anything you can compile and run. Then, do something slightly bigger and repeat.
-
Most people aim too big (I’m guilty of that); don’t overthink it. Creating something of your own is an accomplishment; do the smallest thing possible. If you create a calculator, then adding two numbers is a win! Then, if you want to implement subtraction, it’s a smaller step.
-
After you’re proficient and the days of creating calculators are too easy, you can create something impressive to showcase on your CV.
-
-
Contribute to open-source projects on GitHub.
- This is harder than creating your own small projects; the payoff is better.
-
You can create an online presence.
-
Stack overflow is an online resource for questions and answers. If you answer questions for people, any potential employer can see this, and it’s beneficial.
-
If you create a blog, please do something informative, such as using a new library and explaining how you got it working. Sharing this information is genuinely helpful.
-
Don’t do something like “10 algorithms every dev should know”.
-
-
Use online resources,
- I personally love Continuous Delivery. It is very advanced; if you’re comfortable and familiar with the content, you are closer to seniority.
2.1 To pass the interview, you need to have the knowledge.
- You can learn almost everything online and in books.
2.2 Sometimes there’s a coding part - this means you need to practice
- You can practice languages, frameworks and technologies at home.
I’ve interviewed 50+ people for roles ranging from junior to £2,000 per day. I’m both blown away at what people can achieve and paradoxically underwhelmed by their knowledge. I’m not sure how other professions work, but in development, all the above is achievable if you put the effort in.
I need to expand more on a university qualification; if you have a degree, you are still very junior. As such, I start with easy questions in an interview to reflect that people still need in-depth knowledge. After University, I learned the same amount as my course in what felt like a couple weeks of my first job. University courses can focus on computer science and data structures, but you won’t use these in your career; they are mainly for job interviews. There are many more important things to learn that universities and colleges don’t teach.
Million-dollar question: what language to get things started?
Firstly, learning any language is okay. There are broadly different types of development:
-
Frontend is a web developer and or implements a user-interface
-
Backend means working on a server-side solution, including everything you can’t see, like interacting with a database.
-
Full-stack means you do both frontend and backend.
-
Application means developing an application rather than a website; it could be Windows, MacOS, Android, iPhone, etc.
-
Games are developed for Windows, MacOS, Android, iPhone, etc.
My recommendations:
-
Kotlin can be used for all of the above. It’s the one I would recommend the most. It’s easy to learn and has a great future.
-
Go is picking up popularity.
-
Java is what I primarily do; there’ll always be work out there. Kotlin is better than Java, which is a rather sweeping statement.
-
Python is many people’s favourite.
It’s okay to take it slow if you’re starting out. Don’t feel pressured to learn everything at once. Remember, learning something is always better than learning nothing. So, take a deep breath, start with the basics, and build your knowledge step by step. You’ve got this.
Extra details about development types;
-
To be a frontend or web developer, you must learn and use JS/TypeScript/HTML/CSS with a framework like React.
-
To be a professional games developer, you must do Unity with C# or Unreal with C++.
-
Unity with C# is what I know and love about writing games. C# is more modern than C++. Unless you plan to write and or work with AAA games, Unity will be just fine. With C#, you can do all types of development.
-
Unreal is the industry standard for AAA games. C++ is less versatile than C#.
-
Unity and Unreal have the best tutorials, so you’re in luck. You’ll be able to create a small game in no time.
-
-
Being a backend and or frontend developer is probably the most in demand.
I can’t stress enough the importance of starting with something. Start with 10 minutes of reading or watching a good resource. You’re learning the basics and not committing to a new language or career.
If you want to procrastinate, you can see some figures here;
-
Stackoverflow - 2023 - Most used programming languages among developers worldwide.
-
Stackoverflow - 2022 - most loved dreaded and wanted programming scripting and markup languages
Correction: I said any language is okay. I’d avoid PHP. It’s popular but doesn’t have a future. Perl and assembly will be too niche unless that’s your thing.
I would recommend heading over to Kotlin Example and start learning. Then, if you want to take Kotlin to the next level check out Rock the JVM.
The main thing is to avoid getting put off by academic nonsense and start using a language. An example is learning Scala:
-
This is an excellent way to learn.
-
Conversely, as much as I love Martin Odersky, Programming in Scala makes the subject too intimidating, and you get diminishing returns. You’re learning the theory behind all the ins and outs without knowing the basics.
With whatever you do, find something where you can program some simple things on day one. I don’t know Rust and probably won’t learn it, but I love Rust by Example because it’s such a great resource. In Hollywood, they have a saying, “Show, don’t tell”. Honestly, most programming books would benefit from this. A sterling example of how to do this correctly is Head First Design Patterns. I read this for my career, as design patterns were all the rage at that time. It meant I could remember and implement most of the design patterns due to how well-written these books are and the formula for revisiting information. At the time, I read almost every Head First book.
Resources used in research of this article:
- https://forbytes.com/blog/best-language-for-app-development/
- https://www.coursera.org/articles/back-end-developer
- https://www.coursera.org/articles/full-stack-developer
- https://www.blinkist.com/magazine/posts/udemy-vs-coursera
- https://go.dev/
- https://kotlinlang.org/
- https://www.java.com/en/
- https://www.python.org/
- https://www.scala-lang.org/
Thanks to Unsplash for the blog cover image - https://unsplash.com/photos/five-birds-flying-on-the-sea-OD9EOzfSOh0