When I started it would have been great to have a pointer toward relevant information and resources to get me on my way. The hardest part for me was the middle ground. There are plenty of resources for beginners and for advanced but the intermediate content was a harder to come by, so I will make sure to include what I did there.
One last point before I start is a massive disclaimer, I’m by no means at an expert level and I’m still learning lots but I also don’t foresee that learning progression about to stop anytime soon. When it comes to coding no one is the best and if you really enjoy it you’ll always keep progressing.
Enter this journey with an open mind and no preconceptions on how you can utilise what you already know about coding from another language.
Once you start, you are faced with an application that looks a little like a code editor. Tasks need to be completed to proceed to the next level.
You get a good amount of basics learnt here, but more importantly you are actually coding and see results. This is key factor because actually coding is paramount to learning and far more effective than just reading books. (reading books/tutorials is a must but try typing out what you are learning)
It’s also worth mentioning that after writing this article that Freecodecamp has been mentioned to me numerous times and therefore it’s worth putting them in. From what I’m told they have really good courses with the added bonus of also having a community, which sounds very useful to me.
Since reading them heavily and regularly going back I’ve gone and bought the books I most used as hardcopies.
Doing this means I have them for offline reading and more importantly I hope I was able to support Kyle with his continued good work.
Up & Going is a superb introduction and where you should begin reading this series. What I’ve found great about the book series is the way everything is explained. You don’t just get told how something should be done and nothing more. You get told why and an in-depth background into the subject. When going through the literature you get a confident feeling that what you are learning has been thoroughly thought out due to its open source nature.
You are going to get a nice introduction into the language with subjects such as: Values & Types, Objects, Arrays, Functions, Built-In Type Methods, Coercion, Truthy & Falsy, Variables etc…
Next back to YDKJS book series and getting an understanding into Scope & Closures.
When going through the book, as mentioned before it is a good idea to test what you are learning and you are given plenty of opportunities to do so by the author.
This way you can test code straight away and see the output, look at screen shot bellow for an example.
Github is a superb place to look for examples of code, to see how others are doing it and numerous other tools/frameworks/libraries that talented people make. It’s also a good way to start sharing what you do or even collaborate with others. Open source I feel is marvellous for the whole ecosystem, in what ever language you are doing. Some still feel it is a bad idea but I’m all for sharing my knowledge and using or contributing with others.
Around now I was reaching the dreaded intermediate stage I briefly mentioned at the beginning of this article. I felt I was learning the basics but was just unable to think of how I could progress from here.
This is when frameworks came into light, lots of hype, talk of how easy they are to use and all the great things they can do. At the time Angular seemed like a good choice, it had a strong community. I’d be able to get a lot out of the box and actually start making things, I also dabbled in Ampersand.js.
You have to remember at this stage, you actually have some great tools under your belt due to reading the two YDKJS books and playing around with the code. What next? For me it was video tutorials.
There are free alternatives like continuing to read the YDKJS book series, but for me watching someone talk about a subject and have them walking you through the code is fantastic for knowledge retention. What’s great about the Frontendmasters video courses is they have a running theme to encourage you to follow along coding at the same time! But what is even better is you have the advantage of pausing and rewinding if you get stuck.
You have to remember the people giving these courses are knowledgable/experts and for me paying to access that felt right. Because of all the expenses it cost to actually get the video content out there, it’s only fair that there is a fee.
But keep in mind that these are opinions and people also make great arguments towards the use of Class, it will ultimately be a personal choice.
Now we’re starting to delve into deeper subjects combined with online videos this was how I got through this intermediary section of our trip.
Eric Elliott always give endless great content, with either his own or pointing to great content from others.
Right about now I took a shine to functional programming but I wasn’t aware at the time that functional programming was what I was actually learning. This may seem a little too in-depth but with your openness the more you look into the subject the more it will become clear why it is very useful. If you don’t feel this is the right direction for you then not to worry as I also took an offshoot.
Asynchronous Programming: The End of The Loop by Jafar Husain on egghead.io is a low level introduction into functional programming and there’s more to come on that subject but firstly lets take that offshoot.
My findings were that React ticked all of my boxes, firstly it isn’t what I deem a full Framework because in reality it will only deal with the view layer and the rest of the app implementation is left to you.
It teaches great implementations, like modular components how to deal with state (generally pointing towards a global state passed through the app in props). You’re not restricted to using all things React. You can use what ever to deal with your data layer, backend, api etc…
Now you could choose to continue reinforcing what you have already learnt or find new things to learn. I personally took a shine to Functional programming along with a library called RxJS by author and Sourcerer Matt Podwysocki.
This all happened from taking a course presented by Jafar Husain, he is a very genuinely enthusiastic teacher. That to me is when I learn the best, if you are watching/interacting with a person who loves what he is doing it shows and you naturally become more interested. I know it sounds like I was paid for this testimony but trust me this all came out of my own pocket!
Unfortunately the course I’m talking about is due for release on FrontendMasters as I took it live a couple of months ago and it takes that time to get up onto the site. (It’s now been release and available to watch here!) Not to be a an awful tease here is another great video about the exact subject though not as in depth from Jafar.
I should mention that RxJs have a great gitter channel too, you’ll need Github to join but they are a really helpful bunch.
I’ll make this the last step as this is really just going in the direction I have taken when really at this point you will be able to choose which direction you’d like to take.
The last video by Jafar gives you a good introduction of some functional programming concepts but you can dive in much deeper and this is what I’m doing right now. Here is a great book Mostly Adequate Guide by Brian Lonsdorf, he also did a course on the subject here
Functional programming is such an interesting subject and I’m sure I’ve unearthed something that will keep me busy for quite some time but like all things programming don't ever expect to be completed!
André Staltz has also been working on a very interesting project called Cycle.js which combines functional programming and RxJS! I’ve not fully investigated it yet but so far it was a blast to use and if you like React then this will be right up your street.
Finally we’ve reached the position I’m now in, maybe my passion helped me a lot when it came to learning so much in so little time but please don’t think all this information is set in stone, I regularly keep going back to subject I hit near the beginning of the course and I try to do more and more github repos. But I’ve only just recently come into an actual working environment so this is where my knowledge is really getting tested and I’m sure I will trip up a load but I’m prepared to learn from my failures as well as my peers and continue on my mission.
“It has been mentioned that I failed to mention testing and TDD
Thank you for getting this far and to @deadlyhifi for the proof reading.
Good luck on your journey and I hope this has been an aid.