4 ms·
Hi fellow self-taught web-dev with (almost) a decade of experience. Since we have no formal education we need/want to constantly learn new things in our free t
by dgb23 6y ago
Hi fellow self-taught web-dev with (almost) a decade of experience.
Since we have no formal education we need/want to constantly learn new things in our free time. This is both fun and can be very impactful.
Learning for us is a habit, or even kind of an obsession, but we should always look at topics with a pragmatic eye too.
All of the things I list here helped me do a better job (qualitatively) in some way or another. This is an incomplete list but hopefully you find something useful in here.
In the past:
- SICP => fell in love with Lisp and started to "get" what programming is about. Hard to explain.
- canvas, SVG => out of necessity at the time, pushed me down a rabbit hole of linear algebra. If you touch GUIs then a solid understanding of these concepts is multiplying your productivity and ability.
- Go, programming language => first I didn't have a use-case for it. Glad I learned it because it sparked a strong interest in learning languages. Every next language was incrementally easier to learn.
- theoretical computer science, algorithms and data structures => these concepts are typically taught in CS/IT courses. They are incredibly powerful, important and timeless. Some of the most practical and powerful concepts for web-dev: complexity analysis, graph data structures, FSMs.
In the more recent past:
- Clojure => I have a strong appreciation for data-driven, functional programming and REPL driven development now. These concepts fit very well into web-dev.
- SQL in depth => especially temporal data-modeling. I started asking questions like: Can I do this in pure SQL instead? The result is a much higher appreciation for the language and a more productive approach for both backend design and programming.
- Regex in depth => a nice data-driven approach to handling strings, ubiquitous and practical.
- writing a compiler => this blew my mind. everything is a compiler...
Currently:
- Rust (and WASM) => I wrote a little automation tool with it so far and hope/expect that the language will become empowering even in web-dev.
On the horizon:
- Julia => I hope to dive deeper into math and linear algebra specifically in a practical way, also I assume that some data-science (specifically analysis) concepts help me to develop better solutions and broaden my horizon. I my goal is to use Julia as a vehicle for this.
- WebRTC, video/audio streaming
- WebGL => I want to dive deeper into graphics programming
- thatcodingdude 6y agoNice, that's really interesting ! How did you touch so many different languages, was it only on personal side-projects or did you learn on the job ? I'm afraid learning too many different languages just for fun would be detrimental on my main "job" language, like I'd forget the main patterns. But probably not.
- dgb23 6y ago> How did you touch so many different languages, was it only on personal side-projects or did you learn on the job ? Mostly in my free time yes. But I've also written tools I use in my job now. With Clojure I've written a data integration/migration tool that I use directly in the REPL. In Rust a small automation tool that fetches some APIs and puts the data into a PDF (because the document has to be printed and signed by hand). > I'm afraid learning too many different languages just for fun would be detrimental on my main "job" language, like I'd forget the main patterns. But probably not. I get the feeling but it is completely the other way around. You get a better understanding of languages and programming in general and many concepts are language agnostic. The next you thing you learn gets easier because you know what questions to ask. Learning Clojure helped me write better JS, you can even compile it to JS and integrate it into a JS application as well. Rust teaches me to write better imperative code. Allocation and lifetimes for example are language agnostic concepts once you see behind the abstractions. Also with WASM you get to use Rust from other languages like JS and even PHP. Tips/opinion: - I don't learn a new language that doesn't challenge me in some qualitative new way. For example if you know Java, there is no point in learning C# in depth except you are looking for a specific job. You can almost always directly translate Java concepts to C# concepts and be fine. - I prefer learning a new language that also lets you do a thing you couldn't do before. For example tapping into a new runtime/community/mindset. Or doing things way faster, or dynamic. Or interacting with a set of libraries that have a different reach. - Languages itself are not the most important thing. It is what they carry around that is interesting and useful. - I also prefer learning languages that have some useful interoperability with the ones I already use. The ones I mentioned above are in this category. Another big one would be C. Not a strict rule though. - As I mentioned: SQL and Regex are probably the most important languages to learn and get a deeper understanding of as a web-dev.
- iRobbery 6y agoI would recommend webrtc too, its going to be a future for video stuff for a while in browsers and so on.