11

Confused about choosing tech stack for learning and for my personal project

Profile picture
Systems Engineer at Taro Communitya year ago

I've been in the IT industry for 3 years, working on various projects. For the past 1.5 years, I've been heavily involved in Python projects, mainly as a back-end developer using Django. My tasks typically revolved around building or updating APIs as per specific requirements.

Most of these projects were already underway when I joined, so I mostly inherited tasks based on existing project needs. As a result, I wasn't part of the initial database design or project structuring.

Now, I'm starting on my personal project using Django. However, I lack experience in structuring and designing a project from scratch, especially in organizing apps and defining models.

I took a look at other frameworks like Spring Boot and noticed they don't offer the same level of "batteries included" features as Django.

I'm currently dealing with two main challenges:

  1. Impact of Learning Django First: I'm concerned that focusing solely on Django might limit my overall understanding of back-end development. Django's comprehensive built-in features might not be present in other frameworks, and that worries me.
  2. Project Design and Structure: I'm puzzled about the best practices for structuring and designing a Django project, especially regarding app organization and model structuring.

I'm seeking advice on overcoming these issues and figuring out how to structure my project effectively. I'm also contemplating whether sticking with Django could potentially narrow my overall grasp of back-end development because of its extensive in-built functionalities.

Also, I applied to some companies and most of them are asking for experience in Java back-end development.

353
2

Discussion

(2 comments)
  • 15
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    a year ago

    I feel like you're overthinking this, at least a bit:

    1. Django is a battle-tested standard - A ton of top engineering organizations use Django, including Instagram. I wouldn't worry at all about Django not teaching you the right things or making you look bad. Yes, it abstracts a lot of things away, but most good frameworks do nowadays. You can unwrap the abstractions later if you need to.
    2. Don't try to be perfect on your 1st try - The best way to learn how to write great code is to write terrible code first. Don't feel any shame stitching together whatever random Django resources you find online to get the ball rolling. You will eventually learn how to restructure things correctly later. It's actually dangerous to jump to the "optimal" state in the very beginning as you won't truly understand why it's optimal (and you'll probably get smoked in an interview for it at some point).

    My advice here boils down to something I tell a lot of engineers: Just build. Don't worry, just build. Build something cool and useful and continue trying to make it more cool and more useful. Don't worry about "clean code" - Your growth will come naturally if you have the right mentality, which I cover how to do in-depth here: "How to Learn/Practice Clean Code, particularly by oneself?"

  • 10
    Profile picture
    Tech Lead/Manager at Meta, Pinterest, Kosei
    a year ago

    Guiding principle for personal projects: do the simplest and quickest possible thing. So Django is just fine!

    The time to advance to new tech stacks is when you've encountered something in your personal project that is much easier in another framework or tool. This will deepen your understanding / learning as well.

    We touch on the optimal strategy here in the masterclass about building side projects.