13
33 Comments

How hard is it for you to learn a new stack?

Been doing React / Node for more than three years.
Now, I need to adapt to Rust, have tried only once. So, to take a leap and learn it vigorously is somtehing my mind is refusing to do.

What do you do to stay in track?

  1. 3

    It happened to me the first time I had to do some Kotlin, what worked for me was two things

    • first of all try to understand what was the motivation behind creating such syntax
    • fall in love of its benefits (there are always pros in comparison to other languages)
    • it is also a good opportunity to grow, now you would be able to create your own set of pros/cons between different stacks, you have hands-on experience on them and it is not something your read on the internet
  2. 3

    Go Node/Vue! I made the jump a year ago and have loved every minute of it.

  3. 3

    I'd say that if you know the core concepts of programming / programming paradigms you can easily take that knowledge and apply it to other languages.

    I also learned Rust a couple of years ago. My main background was JavaScript, Ruby and Python focused with a bit of Go. Rust is definitely a tough beast but I wholeheartedly love the language and its concepts around memory safety.

    Here are some resources I found useful when learning Rust:

    What do you do to stay in track?

    The best "trick" I always use is to build a real project. Doesn't have to be super complicated but something you think is fun.

    That way you're not only learning the language "for real" but it also keeps you motivated as you can see how you're progressing. Bonus points if you put it on GitHub and maybe even Tweet about your process.

    1. 1

      I usually open-source things and document what I learn. But since this time it's a parser/compiler, I'll have to keep it exclusive to the project for some time.

      Thanks for the link though 🔥

  4. 3

    Had the same with Golang, I was spoiled by JS and Python.

    I just couldn't see the value in the extra work that Golang requires.

    Same with typescript as well.

    1. 3

      I keep checking out TS now and then but I don’t see the benefits to me at least not as a solo developer. I could see how it would be useful for a team.

      1. 3

        Strongly typed languages have the added benefit of great IDE support (depends on the IDE ofc).
        You get great autocompletion, lint checking, navigation, refactoring and much more.
        I guess TS brings some of these benefits along with maintainability, scalability and type safety.

        1. 1

          Maybe I'll give TS a whirl when I have more free time. But right now, I get all those things you mentioned with plain JS and VS Code. I think I just have to try it out to see what else TS brings to the table.

      2. 2

        You ship much less bugs with Typescript. Also if you have a GraphQL server, you can automatically generate all of the types with apollo-codegen. This means that when you make a query to your server, you know exactly what fields will be there and what is nullable and what is not

        1. 1

          ^ That is for the React side of things. If you use TS with Node coupled with an ORM like Prisma, you know exactly what types you will get from the database when you make a query! Also when writing a query, you never have to refer to the documentation. Don't know something? Open autocomplete in VSCode and you'll know exactly what methods you can call. I've honestly never seen a type system this good in my life

        2. 0

          Does Typescript prevent other bugs besides type errors? Because I've never had a type error, at least none that I can recall.

          1. 1

            If you type everything perfectly then (in a way) yes. It will always ensure you don't use something that is undefined. No more "cannot access property '____' of undefined". It will also prevent you from passing the wrong params to a external library, and also if you update a library that has a breaking change, typescript will let you know. Also all of this aside, VSCode's typescript intellisense is next level. Essentially automatically imports everything for you and gives you access to complex refactoring

      3. 1

        The most benefit I've had with typescript is knowing what error I might have after going to production. It just puts up in a plate and shows it to me, especially with Error Lens

        1. 1

          Thanks - I'll check it out.

  5. 2

    I try to learn only what I need in 2 weeks at most, then start to code and produce something. For me, learning is kind of boring if I don't have something real to apply.

  6. 2

    In my experience, it's not the new stack that's the problem- it's the new paradigm. When I was starting to learn the new reactive FE frameworks, coming from an old-school JS approach, I found myself constantly frustrated/annoyed/etc about the complexity, weight, etc. My mind wasn't resisting the stack, it was looking for ways to convince my conscious brain that these approaches were wrong. Once I learned to embrace the new paradigm- a new way of thinking about how apps are structured- things started to fall into place.
    So my advice is this: think less about the specific new tech (syntax, libraries, etc.) and more about how to solve problems in that new stack (designs, structures, etc. ). Start solving simple problems using the new stack's "way of doing things", without forcing your familiar stack's approach, and let your mind comprehend that new approach. That you need to look-up the specifics- probably a lot- isn't the mark of an amateur, it's the mark of a mind that's learning.

  7. 2

    We changed our entire tech stack for the new version of https://www.nameshouts.com/. This older version was built with jquery and Php/MySQL. We moved to VueJs for the front end and it wasn't too bad of a learning curve.

    I had worked with Angular 2.0 and this made the transition to Vue a lot easier.

    When learning a new tech stack, I like taking a course on the programming language. I prefer Udemy and most courses have less than 48 hours of material. This way you have a solid grasp of the unique features of the language and also some practical examples that you can apply them on right away.
    Then, I would try to build an easy app (to-do list or something similar) using that language.

    It is definitely slower at first then the languages you already know. However, you can get up-to-speed fairly quickly as long as you have a game-plan.

  8. 2

    It’s hard to get out of one’s comfort zone... But it can be rewarding! At the end of your learning path, you will have more knowledge than today, and new opportunities.
    If you have to adapt to Rust as you said, you might have a deadline. That helps a great deal to focus! If you don’t have a strong deadline, take small steps, learn regularly, by mixing tutorials, online trainings and your own project with Rust. At some point, what used to make you feel uneasy will feel natural.

  9. 2

    I learn the foundations. It's easier to learn everything based upon them afterward. It includes big ideas like the different paradigms, best practices, and so forth.

    Learning different programming languages help, too. I insist on different, if you learn python, ruby, and PHP, you won't learn a lot. They are different, but not enough to be really mind blowing.

    The problem is not really learning the language per se (except if you go from a paradigm to another one you don't know anything about), but all the tools, libraries, frameworks, and idioms (best way to work with the language). It comes with practice.

    If you're interested I've written an article about my method to learn a new language. I've learn C, PHP, ActionScript (Ah ! Flash! I miss you somehow), Golang, and Clojure like that.

  10. 2

    It really depends on the language and what you know.

    Learning a language like Ruby is trivial if you know JS, since it's similar and more consistent (e.g. how everything, including numbers and string literals, is an object). Learning Elixir just had one big early hurdle: immutability. Something like Clojure or Swift is a larger jump.

    Rust is even more distant. It includes quite a few new concepts. Unless you also have experience with something like C/C++, it's probably going to take a bit more time.

  11. 2

    When I started Formito.com, I knew nothing about React and Nodejs. In the first version I learnt React, because I needed it for the chatbot builder. I used PHP/MySQL for back-end. Recently, I updated the back-end to Nodejs/Firestore. Thanks to a lot of tutorials and detailed documentations, learning new stuff has never been easier.

  12. 2

    Just start building some side projects/POCs. You'll start to learn the ins and outs of the language and things will start clicking.

  13. 2

    It will always be hard at first to learn new stack. You have to know indepth knowledge/structure of some things and it takes a lot of time. Take your time and learn it. You will love it and will remember this post years later :P. Its just a phase, it will pass.
    Just stay positive.

  14. 2

    Practice.
    Instead of sitting and going through all the videos till the end, I start practicing in the middle of lectures and get myself involved so much that I eventually skip the videos.

    Try Start building a simple product with the knowledge you already know, you might feel the process amusing.

  15. 2

    It is really hard and going to slow you down but with time you will catch up, Have patience.

  16. 2

    Honestly I don't really want to. I could, if I wanted to, or needed to, but the stack I'm currently using has been shaped by over five years of experience, and I'm intimately familiar with it. Makes it such that I can build complex things fairly quickly without going insane.

    If I needed to I would try to port the practical experience from one stack onto another, but not sure how that'd work out.

    1. 1

      I'm in the same both, and when reflecting I realize that what I know might not be the right stack, say 5 years later.

      It's not just about Rust, it's about adapting to what is required for the specific project

    2. 1

      I would try to port the practical experience from one stack onto another, but not sure how that'd work out.

      This is a good approach to take when possible, in my experience.

      I have a couple of simple text converter utilities, a CSV reading tool and a couple of terminal games that rewrite in pretty much every language I learn. Similarly, I've got a Twitter clone, a Stack Overflow clone and a card game I rewrite in every new web framework I learn.

      Applying a new tool to a familiar problem makes it easier to see what techniques do or do not carry over. It also completely eliminates time wasted on decision paralysis or on understanding the task itself.

  17. 2

    Find someone that's been using the stack you want to pick up and learn from them.

    At the start of this year, I had no idea about web dev frameworks or frontend coding and I was thrown into a Laravel PHP project. I knew a really good dev that was a Laravel Pro so I paid him for a couple of days of his time to sit down with me and let me know the gotchas, etc... I then occasionally pinged him some questions over the next few months and he was always helpful. I learned so quickly that when I decided to start my own thing, Thankbox, later in the year, I did it in Laravel.

  18. 2

    the more you know the easier it is to build your knowledge upon

  19. 1

    Are you adapting Rust due to a job? or is it a for a personal project?

    1. 1

      Both actually, I need it got a particular reason for job, but have bigger plans if I keep developing it independently

  20. 5

    This comment was deleted 3 years ago.

    1. 1

      I need a fast JS compiler, Rust seems the best route to scan and parse ESTree

Trending on Indie Hackers
How I grew a side project to 100k Unique Visitors in 7 days with 0 audience 47 comments Competing with Product Hunt: a month later 33 comments Why do you hate marketing? 27 comments $15k revenues in <4 months as a solopreneur 14 comments Use Your Product 13 comments How I Launched FrontendEase 13 comments