15
votes
Please help me become a python backend developer!
I am looking for an effective roadmap to become a python backend developer. I am from a non-CS background. I can buy a couple of courses on udemy, if the need arises.
TIA!
You shouldn't need to buy anything. In fact, I heavily recommend against spending money until you need to. Once you buy something you'll likely feel like you've accomplished something. But you only want real accomplishments to give you that reward.
The most important resource you can pour into this is time. Is there any project that you are willing to struggle and suffer through until it works? If you can find a series of such projects that provide stepping stones towards your end goal then you'll be able to climb the skill ladder until you're employable.
Here's what I did:
It's all about years (or maybe just months if you're doing this full time) of consistent effort. To be fair, many of these years were spent idle. And the ones before college that had any programming only got maybe a few dozen hours. You want to find a way of doing it that you like! Maybe you'll want to try something slightly different once you get a little bit into Python web backends. What's most important is you legitimately enjoy the process.
If you use Discord for example, you could learn Python by making Discord bots. Maybe first as toys, but if you can find a real need for your bot then that will force you to learn a real skill set.
and what the fuck were you doing ages 10-13? slacking off?!
Ha… RuneScape. Maybe one or two thousand hours. Thankfully my next big game, Minecraft, was self hostable. So I learned how to build and maintain a physical, and later virtual, server. I ran the server for r/CasualConversation for a few years. Met a long time friend there!
High School robotics? Do I smell another FIRST alumni?
Hell yeah
First of all I have some general tips for a future in computer science:
So my general (probably incomplete) roadmap would be
Phase 1: Scripts
If you think you know all this you can test your knwoledge with these Projects:
Phase 2
I think chess is a good project at this stage
Phase 3
Use your current understanding and think what you want to do. There are many things in cs that I have not listed but you should now have a basic understanding how to code and therefore are able to better undertsand which knowledge you are lacking in order to reach your goal
Others have pretty much said it all, including this, but just to make it stand out because it's so important:
BUILD STUFF.
It's the single most important thing in this entire thread.
The best way to get better is just to keep building stuff. Don't get stuck watching endless YouTube vids or reading books cover to cover. Start small, like "write a python script that takes 2 numbers and outputs the total" or "write a script that takes a sentence and outputs the biggest word" etc etc... just keep building scripts, then growing to small apps like the classic To Do lists, basic blog engine, a random recipe picker, whatever... just keep building more and more stuff.
Yes, people keep repeating that and it's just true. If you just build apps you will gain experience and that will be more helpful than any theoretical knowledge. Also, you get to look up stuff when you actually need it. And then you know why you need it and what for. So. Yes. Build stuff.
If you check out python, I suggest the book "automating the boring stuff with python". It's a great book and it's very beginner friendly. IIRC it's under creative commons so there are free versions around.
I believe the website for the book had everything you need. And if you would prefer a pdf copy you could potentially ask Al; he's very friendly and you can find him easily on Reddit.
I came to post this. The book is pretty good help to anyone motivated.
Since it is not that clear what OP's current skills are (and also for other readers), I can also highly recommend getting into the habit of thinking like a computer in general. Namely by playing some specific games: Shenzhen I/O, Exapunks, Human Resource Machine and 7 Billion Humans.
Great advice. I'll add another zachtronics game, TIS 100. Its a lot more computery but still very fun.
I normally type up quite long-winded replies to topics such as these, as I went through this myself not all that long ago. However, others have already given good replies, so I'll just leave a few bullet points on what I think is key to go from zero to junior (employed).
I also replied to a similar question here if you want some more of my advice.
I would like to higlight what others have said. Python, or any programming language, is just a language.
Most concepts of programming are universal, and are applicable to most any programming language, and it is a good idea to keep these concepts separate in your head. A variable is a variable in Pyton, Java, C#, or VBA.
The syntax, or language, is the easiest part to learn. The hardest part to learn are the overall concepts, project structure, design choices, tech stack and so on. That's where the biggest issues in projects come from.
Thanks for the reply. What's the tech stack I should be aiming for?
The one that is suitable for your project, there is no correct answer. That is why it is something that is difficult to learn, as it is a multidimensional problem that requires knowledge about the project, it's goals, budget, time limits, the team, their knowledge, skills and so on.
This is very important in my opinion: a language is just a tool to get a certain thing done.
Certain languages are better tools for specific problems than others.
Experience or your search engine will tell you which language is a good fit for your problem, but you don't need to know 100 languages by heart.
With increasing experience it's easier to shift to unknown languages.
I personally really don't like Python, but its easy to use and used by many, so the choice is fine.
I also don't have a CS background, but I've started programming by myself 20 years ago or so. I personally like C# very much.
For quicker things I use TypeScript. But I also use Golang and Rust where it fits.
Get your toes wet with Python and write some helper apps. Just start to get practical.
When I started programming, I just wrote little applications that solve simple problems.
I also tried to copy things.
For example I have created a UI library in C# that mimics the Youtube design.
I have recreated webshops, wrote my own blog software, wrote my own custom browser (With the Windows WebView underlying of course), my own music player, a screenshot tool, or game gamemodes/scripts for GarrysMod.
If you ever needed to sort out multiple folders, mass remove certain things by type or size, a Python script is a perfect fit for this.
Get a bit creative with the projects. They don't need to make sense. Just write code and learn by making honest mistakes.
It's a lot of fun and very rewarding to finally figure out the problem and seeing it working.
If you want to use python, I'd recommend starting with Think Python: How to Think Like a Computer Scientist. From there, you can download the PDF for free, or read it online.
This book will walk you through almost all of the information you need to know how to program, especially the final chapter that gives you some background on algorithm analysis. Having an understanding of it can help when deciding which data structures or algorithms to use for solving a particular problem.
Once you go through that, you can get some practice by signing up for Advent of Code (it's free!) and working on the available problems.