Looking for advice on my learning path

Hey folks, looking for a little advice here, as this is one of the most welcoming communities I’ve found recently, and really look up to you :slight_smile:

I’m a software engineer with a bunch of “experience years”, worked on really big projects at big and small companies, some of the projects I’ve worked on have benefited possibly millions of people, and things that I’ve written on my own have powered business processes for years, I’ve had startups never take off, fail, do okay-ish and even succeed.

About three years ago I was feeling burnout, because I felt I was stuck in my day job, and i was putting in a lot of time on a startup, so i quit my day job to focus on the startup… with in a couple weeks the trust in my partners was utterly gone, so we parted ways, as I was coping with that failure, which broke a friendship I really valued (that’s what really sucked), my parents asked me to help out with the family business so they could retire, it’s a non-tech logistics/transportation company.

I accepted, and started helping out, under the impression that it was going to be a remote, half-time thing, so I could invest sometime learning new stuff that would help me create a custom fit solution for the company. It was neither a half time nor remote :sweat_smile:.

So I went all in, started a business management postgrad to do a better job at it, but a few months in my dad passed away unexpectedly. I had to take total control of the company, on my own now.

Flash-forward 2.5 years, I finally have settled on my role, managed to free up some of time, and finally started to learn the tech I wanted to 3 years ago (react, graphql, serverless, getting into oss, etc, etc). I feel like such an impostor, really doubting myself and my knowledge, so this is where I would like to get your advice.

I’ve worked with javascript for a long time (vanilla, backbone, angular, node and now react), but I learned as I went along, and I feel is really easy to get things working, without knowing if you are doing it the “right way”, so i decided to take some time to learn things from the start.

This is what I’m doing right now:

  • Started a study group on freecodecamp with a couple friends who want to change industries and learn frontend. my idea is to do the Js course with them and help them along the way, this will help me by forcing me to really understand de concepts so that i can solve any of their questions. and I also really want them to be able to transfer to programming jobs down the line.
  • I’m currently going to the epic react course, to learn good practices and patterns on building react apps.
  • Building small apps to help me apply the new learnings and find my on “flow” again, so i dont feel like an impostor.

Things that Ive tried that didn’t work for me:

  • learn from “the internet”. learning from articles and videos that are often outdated, or provide incomplete, or outright wrong, solutions for some problems, it was, well, a time waste for me.
  • build apps from scratch. I’ve build a few apps that are out there working, but that I feel somewhat ashamed on the way they are coded :sweat_smile:

So my questions for you are,

  • Should I focus on learning the basics first? graphql (hasura), react (no frameworks). and then come build things with and contribute to redwood
  • Should I power through with my knowledge and focus on redwood?

I know this is a long post, if you made it all the way down here I really appreciate you :pray:

Though you might be a bit biased, would really appreciate any comments.

thanks :grinning:

4 Likes

Here’s what worked for me, everyone’s learning style is a little different so as always your milage may vary.

I think if you’re looking to contribute to Redwood you should just start building stuff with Redwood. Run through the entire tutorial if you haven’t already. But what you should do is pay attention to the things that don’t completely make sense. When terms or code look unfamiliar stop and research it.

As you go along you’ll eventually have created a curriculum for yourself that’s specific to the things you need to know to be effective with Redwood. At this point you can circle back and make sure you know the different pieces in isolation. What helped me do that was building a project without Prisma because it forced me to write my own schema and services.

Once you’ve done all that you’ll start to see ways you could extend it or pieces you could replace with alternatives. Or you could create more complex example apps with the current stack. Or you could write more docs. Or you could close issues all day. Etc etc.

Hope that helps!

3 Likes

Hey @esteban_url–very glad you feel like you can ask for advice here! We really want the community to be as welcoming as possible so just the fact that you feel comfortable enough to ask for advice is really great.

My condolences about your father’s passing. It sounds like you’ve been through more than a lot these past few years. But glad things are settling down for you and you can start to learn as you like.

First let me say that the three-bullet list you provided is top-notch; you’re probably much more capable than you’re giving yourself credit for.

But to address your question at the end, I’ll build on the excellent advice @ajcwebdev gave by referring you to one of the best books on learning I’ve read to date: Making Learning Whole by David Perkins.

The reason I’m pointing you to this book is that the way I read your question at the end is “should I learn the parts or should I learn the whole?” Before Redwood (that’s how I tell time now), part-learning was the thing to do. A common feeling among developers is that it’s been nothing but part-learning for years. But with Redwood and other FSJam frameworks, there’s a much more accessible way to learn web dev as a whole.

The premise of the book isn’t that part-learning is worse than whole-learning. It’s just that all we ever seem to do is part-learning. School math is usually like this. Too often learning is nothing but studying the parts with the promise of one day putting them together. That’s why, as you said, learning “from the internet” doesn’t work.

Without Redwood, I was just learning the intricacies of parts with no end in sight, without every really knowing how they fit together. Redwood put the parts in perspective (and gives you the chance to realize why, when appropriately organized, the parts are so great). Really, in a way, it’s never been a better time to learn the parts since you have a place like Redwood where you can put them all together.

3 Likes

@esteban_url I can very much relate to your story. Am glad that

finally started to learn the tech I wanted to

but don’t

doubt (yourself) and … knowledge

Development is a field that … well develops! It’s constantly changing, improving, evolving that there’s no way anyone knows it all because tomorrow there will be something different.

Here’s what has worked for me:

  • work on real things that matter to you (not as big as a startup, but also not just practice projects that are someone else’s idea). you have to care about what you create.

  • follow patterns. I learn from seeing others’ code. so find an open source project or a person you think writes solid code and pour through their repos and get a sense of the patterns. Plus, you can ask them why they chose to do what they did.

  • admit defeat. just kidding. what i mean is because “development develops” realize you cannot learn everything. recognize that there will always be new ideas, concepts shiny things, approaches. know that sometimes what you learned is now old. and that’s ok. it’s not your fault. it’s not what you learned but how you learned it that will enabled you to pick up the “next big thing” and make it part of a set of skills that let you build hopefully anything – but also just something that means something to you.

4 Likes

Thank you folks so much for reading through and being so kind to respond.

This has giving me a few take aways that build on top what’s been brewing inside my head.

  • Redwood ties a bunch of these parts together.
  • Building real projects that you are interested in (as opposed to another todo app) will both give you a path to learn the things that you actually need, and the experience of putting it all together, plus a portfolio in case you need one.
  • It’s okay not to know everything.
  • I can always circle back and go deep on a specific piece of tech/tool/pattern.

As for my path forward, I’ll complete the courses I’ve begun and start working on projects and ideas that will help me put in practice my learnings.

Hope to feel confortable to start sharing those projects and contributing to rw in more meaningful ways soon enough.

Again, thank you so much guys @ajcwebdev, @dom and @dthyresson

5 Likes

Dude, I feel your pain in the exact same way and I’ve written a bunch of the internals of RedwoodJS.

There’s a very different mindset when creating a framework versus using a framework. I think the best ideas come from trying to remove pain from the development experience. The pain of not understanding, not knowing where to go next, not being able to get into flow, etc.

We take that pain and try to make things better for developers. We’ve still go so much work to do, but those initial insight are super valuable.

So, I would suggest you power through and build a project, but set a very distinct set of technological constraints.

For instance: If you wanted to learn GraphQL. Do the tutorial, take what you’ve learnt and build an almost adjacent project that scratches your own itch.

Make sure you follow the full-flow of development from idea to deployment.

Use that as a foundation and then expand on the blurry areas with books or video courses. I would not try to learn from tutorials.

Hit me up (@appfactory) on Twitter once you’ve decided on a project and I can help you outline the steps for implementation

6 Likes

Thanks @peterp, it means a lot knowing that these are “pains” that other people experience as well.

I’ll be hitting you up in a couple weeks, i have a couple fun ideas i want to push through.