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!

18 comments

  1. [5]
    teaearlgraycold
    (edited )
    Link
    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...

    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:

    • Made an icloud-hosted website with HTML+CSS from 8-10 years old
    • Self-hosted websites with HTML+CSS+PHP (definitely had no understanding of PHP and was copy-pasting) when I was 13-14
    • Wrote HTML+CSS websites for my high school's robotics club from 14-17
    • Wrote a little bit of C++ at 15-16
    • Started a CS program at 18 (I honestly didn't learn many programming skills from school, it was more math and theory)
    • Wrote a Python script to automate a BS part of my job at 19
    • Wrote a Python reddit bot to automate BS parts of moderation at 19
    • Got a part-time job as a Python developer from a co-moderator who was an academic at a nearby university at 19
    • Got a full-time internship as a Ruby on Rails dev (coordinated through my university) at 20
    • Stayed up until 4am many many nights learning and writing GLSL shaders (basically treating it how most people treat Civilization - "one more line of code" "oh god it's 4am")
    • Returned to full-time job as a Ruby on Rails dev for subsequent internship at 21
    • Wrote Elixir/TypeScript app for SummoningSalt's Twitch channel at 21
    • Graduated with CS degree at 22
    • Got full time job as startup Ruby on Rails developer at 23
    • Quit job as Ruby on Rails developer at 25 to join much earlier stage startup as a full stack Typescript developer
    • Quit job again to join Google as Pixel firmware engineer (didn't pan out and I'm back to web dev at Google)

    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.

    16 votes
    1. [2]
      watermelon
      Link Parent
      and what the fuck were you doing ages 10-13? slacking off?!

      and what the fuck were you doing ages 10-13? slacking off?!

      15 votes
      1. teaearlgraycold
        Link Parent
        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...

        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!

        4 votes
    2. [2]
      asdfjackal
      Link Parent
      High School robotics? Do I smell another FIRST alumni?

      High School robotics? Do I smell another FIRST alumni?

      3 votes
  2. Ruinam
    Link
    First of all I have some general tips for a future in computer science: Do projects. It is like any spoken language you learn. Doing courses, learning the theory only brings you so far. If you...

    First of all I have some general tips for a future in computer science:

    • Do projects. It is like any spoken language you learn. Doing courses, learning the theory only brings you so far. If you want to learn a spoken language, you have to talk with people, watch films, ... . the same is with programming languages. So I recommend small projects you really want to code (maybe a small game or automation script). It does not have to be perfect or finished. It should just get you in contect with problems to solve
    • understand the concept not the keywords. i often see that people learn "If you want this to happen, you have to write this". This is mostly sufficiant if you only want to learn a single programming language but makes switching to another more difficult. And languages develop at a high speed in the cs world. But as long as you understand the concepts, you can switch from one language to another in a few days

    So my general (probably incomplete) roadmap would be

    Phase 1: Scripts

    • learn about variables and numbers (you do not have to understand all types but you should know what a type is and the write code that calculates some stuff (+,-,*,/,**). There has to be no user input. calculate with numbers you write into the code (that is very bad but okay to start with)
    • Now learn about control structures. Typically that are loops and conditionals
    • Now we get to data structures. That is a very big field so just start with lists and dicts
    • Now think about functions to spearate your code in structural units
    • Now learn how to import other files and so called libraries. Also look how to take user input from the console
    • Last for this phase would be to understand types and their implications (especially Number, Float and String)

    If you think you know all this you can test your knwoledge with these Projects:

    • A small console calculator, A script that takes a text and removes all "ae" but keeps single a's and e's, tic tac toe in the console

    Phase 2

    • Learn a little bit about project structure
    • Learn about python classes (and the concept of object orientation
    • Learn about best practises for function size and code structure
    • look at some libraries and learn to read / write documentation

    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

    8 votes
  3. [2]
    Sen
    Link
    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...

    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.

    7 votes
    1. CunningFatalist
      Link Parent
      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...

      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.

      5 votes
  4. [4]
    prairir001
    Link
    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...

    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.

    5 votes
    1. aphoenix
      (edited )
      Link Parent
      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 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.

      3 votes
    2. [2]
      mordae
      Link Parent
      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...

      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.

      2 votes
      1. prairir001
        Link Parent
        Great advice. I'll add another zachtronics game, TIS 100. Its a lot more computery but still very fun.

        Great advice. I'll add another zachtronics game, TIS 100. Its a lot more computery but still very fun.

  5. bugsmith
    Link
    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...

    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).

    • Practice a bit most days. Spend some days not doing. Like with weight training for muscles, your brain needs time to recover and absorb.
    • A couple of hours each day is much better than eight+ hour slogs that lead to burnout.
    • Gain a solid understanding of basic principles (conditionals, loops, variables, functions, classes)
    • Follow a few tutorials to see how these things are implemented. Key word here is few.
    • Do not get stuck in tutorial-hell. Follow one on a topic you're interested in and move on from it.
    • Start building things. Initially scripts to solve simple problems or games (think renaming all files in a folder, automating spreadsheet input, or playing Hangman).
    • Start building more complex things, especially programs that interact with a database and make use of all CRUD operations.
    • When you get stuck, search for how to solve the problem in the language you're using. This way you don't need to find tutorials showing how to build whatever you're building, you just need to find solutions for the problems you're trying to solve. Think: "How do I connect to an sqlite database in python", "How do I list all keys of a Python dictionary", "How do I handle user authentication in Python?"

    I also replied to a similar question here if you want some more of my advice.

    4 votes
  6. [3]
    Maxi
    Link
    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...

    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.

    2 votes
    1. [2]
      azaadi
      Link Parent
      Thanks for the reply. What's the tech stack I should be aiming for?

      Thanks for the reply. What's the tech stack I should be aiming for?

      1 vote
      1. Maxi
        Link Parent
        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...

        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.

        1 vote
  7. lux
    Link
    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...

    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.

    2 votes
  8. bytesmythe
    Link
    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...

    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.

    1 vote