3
9 Comments

What should I study next?

After hours of sweat and frustration, I’ve finally completed a FreeCodeCamp Python certificate.

A bit stuck on next steps.

This past year has been an amazing learning journey. I got furloughed and figured it’s now or never as far as studying goes.

I managed to get the FreeCodeCamp Web Dev certificate, built a few websites, launched tons of Wordpress sites, learned Django + Flask, Git, virtual environments and gotten a decent grasp of using the terminal.

After countless hours of research, I’ve come to realize that next.js coupled with either Django / FastAPI and TailwindCSS will be my ultimate tech stack. There’s plenty of options out there, for me that seems to be a solid choice for web software development.

This leads me to my question.

I’m definitely not a pro in any of the technical solutions I picked up. I could be much better with CSS (flex box) and can certainly improve my Django knowledge. But the base is there.

What would be your recommendations for next steps, in my studying journey?

I’m debating if going to React makes sense if my js knowledge is limited.

How much would I even need to learn react until I can finally move to next.js?

Appreciate any advice! 🙏🏻

  1. 6

    This may be unpopular, but I would recommend to learn Svelte before react or next js.

    The reasons are a couple, one, it progresses nicely from html and css, it is not very time consuming and eases you into JavaScript, while seeing small wins, and it opens you up to concepts like state, props, reactivity, stores, etc, in a slow slope vs the steep climb of react. It will not take long, there are good free learning materials, like the online tutorial, mdn tutorial and I will plug my YouTube workshop, bit after the svelte.dev tutorial.

    I think it will make it easier to learn react afterwards, and then nextjs like progression of steps not taking on too much too quickly.

    https://svelte.dev/tutorial

    https://youtu.be/35-ZGjqECks

    1. 1

      Thank you so much for the detailed answer!

      What would I be losing by using something like Svelte? This idea seems intriguing. How complex could a software be?

      I’m wondering if I know my end goal is nextjs, why not just start the steep journey of JS > React > Nextjs route?

      1. 1

        First like I said, it maybe an unpopular opinion, but I have taught react and svelte and I believe the hard parts of react is fundamentally knowing how and what is going on under the hood. There are just a lot of concepts to get your head around:

        • JSX - what is it actually doing, how does it take syntax -> JS -> HTML - what are some of the quirks, ie className vs class etc
        • prop drilling, when is it right to do so, when is it wrong
        • CSS in JS - which library to use, how to configure it
        • Typescript with props
        • Working with Context
        • Hooks, what are the dos and don'ts how to debug and trace
        • etc

        Then with NextJS you have SSR vs SSG and the opinionated parts of component mounting etc.

        It is certainly doable, but it is just a steep climb, whereas starting with svelte you can learn a lot of these patterns with just the framework and you don;t have choose from mobx or redux, styled-components or ? , react class components or react function components, hooks.

        And can get a lot of reps just on component management, rendering to the dom, managing DOM events working with Forms, handling async, using stores to manage state.

        It is just a suggestion, I have found it much easier to ease students into these concepts versus the jump in the big pond approach, just because the amount of frustration and the ups and downs of I know it and I don't know it, hills and valleys.

        Good Luck :)

  2. 2

    I came to the same conclusion in December! I come from a deep learning background, finished a React course, then began building in Jan; FastAPI backend, front-end dashboard in Next.js, with Tailwind CSS. It's really really silky, but does still have some pains. TL;DR - to build a surprising amount of stuff nowadays, you don't need a super advanced knowledge of JS or React.js to begin with.

    My understanding of React was (still is) very basic - I'm a rookie with Redux, and spend most of my time feeling around in the dark while building. However, one month in, and I'm operational with React.js and Next.js, and have released my first app. I think that, if you can build a basic CRUD app in React, Next.js isn't too much of a step up after, considering the support that Vercel and Netlify can now provide hosting (Netlify have their latest plugin available as of Dec2020!) especially with the use of the API folder in the frontend that triggers serverless functions in place of a backend.

    My one watch-out would be CORS when working between FastAPI and Next.js - that took up two weeks of hair-pulling in Jan before I went back to the drawing board at the start of Feb and finished in a weekend, by just skipping the backend in FastAPI (at least for now). Client-side GET requests using the SWR package are super easy, but client-side POST requests that involve mutation are a bit trickier - I'd factor time in to consider how convoluted this makes your app, and if it might be worth sidestepping this nightmare, at least to ship the MVP out ASAP. I didn't have the same problem connecting FastAPI with React.js - so this could be down to my relative inexperience in Next.js.

    I'd recommend as next steps (if you feel like you want to go with React/Next.js for now instead of Svelte, which I also think looks very exciting and is off-the-charts performant!):

    1. Building a basic sample project in React.js that you like (Todo app, e-commerce app, music app, etc.). Focus on internalising state management (would recommend using the useState hook, to keep things simple), and framing the way that you look at sites in terms of components
    2. Migrating the app to Next.js (this is quite quick and relatively simple - can link you the tutorial I used if you'd like!) and testing a basic API call using one of the methods outlined in their documentation
    3. Connecting up the Next.js API calls to a simple custom FastAPI route, and wrangling the joy that is communicating between different origins (e.g. Netlify and Heroku).
    4. Building out the MVP of your awesome Next.js + FastAPI idea!

    A friend of mine started React.js a couple of weeks ago, and he had his first app up and running in half a day! (granted, he comes from an extremely strong technical background, but still, he was super surprised by how much he could get done, in such a little amount of time!). React Hooks - introduced at the end of 2018 - have really simplified development, so if this is the route you want to go down, it shouldn't be too much a push to get to where you want to go!

    Hope maybe some of this has been a bit helpful!

    1. 1

      Sounds like we’re more or less in the same boat!

      I wish I didn’t spend so much time with Flask and Django. My friend is a diehard Django developer and pushed me to this direction.

      I’ve realized with time that the reasons you used to need something like Django for, simply don’t exist today. A lot of the routing and logic can be done via something like Next. And if there’s some need for backend I’m mot sure Django would be the ultimate solution.

      Thanks for sharing your experience. Let’s stay in touch :)

      1. 1

        100%, let's :) Look forward to seeing what you build next!

  3. 1

    It's very hard to answer this without knowing your goals. What do you want to do with this knowledge? Get a job as a dev? Get a specific dev job in some area/product? Create your own product?

  4. 1

    Learn SQL and how relational databases work.

    It will be relevant regardless of whether you do web dev, data science or push fancy business reports around in Excel. SQL will be be with us for decades and likely outlive every popular web service you've ever tried.

    Databases will add new features but the basics are timeless.

  5. 1

    One thing I'd keep an eye on is learning concepts, rather than frameworks and languages. Lots of devs, esp frontend, get anxiety over what's the new hotness and feel left behind. There will always be a new way to do things. If you stick around long enough, you'll see people doing old things again.

    The way to escape from that is to learn evergreen concepts. These tend to be fundamentals that some write off as "too theoretical", and are covered in typical CS courses. If you want to keep getting good, knowing these will pay dividends.

    Since you're just getting started, it's defn great to know specific languages and frameworks. They're concrete tools to help write side projects and ship product! But eventually, when you feel comfortable, look at other tech that shows you new ideas and concepts about how to do things, rather than just whatever the new hotness is. It'll save you some time, and anxiety in your career.

Trending on Indie Hackers
How I grew a side project to 100k Unique Visitors in 7 days with 0 audience 50 comments Competing with Product Hunt: a month later 33 comments Why do you hate marketing? 29 comments My Top 20 Free Tools That I Use Everyday as an Indie Hacker 18 comments $15k revenues in <4 months as a solopreneur 14 comments Use Your Product 13 comments