I've been asked a few times as to how I learn things and Why I support open
source so much that I'd like to work for a company that has a dedicated OSS
team. I could answer this in one line , or I could write a whole essay.
I learn from open source repositories and study them to figure out stuff and
things that exist out there.
We all started somewhere. The point in time where we knew basically nothing. I
like calling it the Dumb Point , and every person you know has been there and
then their decisions got them to where they are today.
Dumb Point's are basically where you might know enough to do something but you
don't fully understand what's going on. And thinking that once you've grown at a
certain skill you won't have dump points is another mistake people make. I've
been with JS for about 2.5 years Industrially and about 4 years if you count the
projects I did in college to learn JS in the first place and taking in
consideration that I was coding in Python way before that would turn that into 8
years worth of experience with code but I still have dump points.
I had one last month when I was learning Rust , now rust isn't hard or
anything but there's obvious differences that it has compared to the languages
I'm used to.
I've worked with Static Typed languages before. Java, C, and in the recent years
TypeScript(i know it's a toolset and not an acutal language, but you get the
idea.) but then Rust has the concept of pattern matching and every line being a
typed expression which does create friction when you start off, theres numerous
other things that make it a little harder to just get used to Rust code, macros,
variable shadowing , etc. Point being, I needed help to understand what was
going on and like anyone else we'd turn to google for this but then I don't open
up Stackoverflow or Blogs for these anymore.
My first point of learning is the docs, always. That's where I look for the
answers and most of the times good tools have sufficient documentation for you
to refer too. The second point of learning for me is git repositories using that
particular tool. Taking rust as example again, I'd look for github repositories
using rust and try to go through them as much as I can. A lot of times people
add helpful comments on functionalities that are a little more complex and that
helps you out too.
Overall, I study codebases to understand approaches and since I end up going
through a variety of repositories I find various ways to implement similar
things and then go with the approach that's both easy to read and performant,
the other approach might be more performant and I'd use it when building
something for production but for initial learning and understanding I'll pick
the readable version.
Now, since I do this a lot more with JS libraries and frameworks right now, I
get to go through the
package.json files which contain dependencies that the
projects use, I normally have numerous tabs open for each npm package that I
don't know about and this opens up even more repositories for me to study and
obviously, I now know of more packages that can help with a certain task if
needed in the near future.
And even though the knowledge I've gained in years is not even close to 1% of
what's out there, I still owe a debt to the open source community and hence most
of what I build is open source.