In React, I set out to write a bunch of components for forms. I wasn't planning to use them for anything in particular, I wanted to create a library of controls.
In the end I used some of those components in a few apps but I never published them as an standalone module.
But it was great practice for React development, because it forced me to think in isolated components, figure out what props interface they should expose, and I aimed for quantity over quality -- I cranked out a dozen components in 2 or 3 days.
In contrast, I don't learn as quickly when I try to make things perfect, because that slows me down. I've found it's better to try to prototype fast and refine/refactor later when getting acquainted with a particular tool like React, because later you'll know more and your refining step will be more effective.
I'll share another example: a project that boosted my algorithmic thinking the most was a hobby project where I developed my own programming language parser. I was inspired by Douglas Crockford's article on parsing.
I build a lexer, parser and an interpereter for my little scripting language, and it taught me a lot of about thinking in trees and manipulating data structures. On one hand, you don't need to write a parser often in the real world, so the things that I learned weren't super applicable elsewhere. On the other hand, it made me understand the nature of programming languages so much better that it made me a better programmer overall.
That's a really interesting idea, I'm just getting to grips with React at the moment and was trying to work out how I could reuse the components (I only have limited knowledge of the framework).
I think I'll pump out components that could be usable in the future such as a navigation bar or variants of cards used in bootstrap.
I'm using as many resources as possible over 'dev.to' and other sites such as 'medium' and they are all helping.
Would you say learning a lower level language such as c++ would help me with JS? or would you say to keep at JS until I have a wide understanding of it?
Thanks in advance
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.