How to learn hard things in tech
technicallychallenged.substack.com
technicallychallenged.substack.com
The thing that's hard is something like how to make a project maintainable. You have to have the experience of screwing it up over a long period of time, feeling the pain each time there's a bug to find or a new feature to implement. You won't find a tutorial in how to do this, because the pain is a necessity to learning.
My biggest challenge is recognising that, having learned a particular approach, it doesn't need applying everywhere. For example, just because I know how to configure Kubernetes, it doesn't mean I need to host every application with Kubernetes.
This is the main idea behind over 400+ micro samples I created for ASP.NET Core https://github.com/dodyg/practical-aspnetcore
There's gobyexample.com, but it contains usually basic stuff to get started with the language.
First time I've seen such a well put together list of code samples for a language. Would love this in other languages
If you're strong in reading and gaining knowledge from documentation, you will generally be able to decrease your time to create working solutions. The reason is that you get faster in finding the information you need and become independent of the availability of explanations by other developers.
I'd only consult other explanations if the documentation is poorly written or my way of using the software is uncommon and I'm looking for opinions or alternative solutions.
But I would like to add that getting a high-level overview also helps me to gain a clearer and better integrated, more contextual understanding. This is especially important when I learn “hard” things (although this is a very relative term), since usually those things have a lot of unknown unknowns that often reveal themselves in this process.
That is why I like watching talks about the subject, reading articles and opinions, etc. which are more related to the conceptual stuff and the thought processes behind it. Usually I will then build a concept map and connect things I know that relate to the subject (I like using a PKM tool like TheBrain for this).
I’m enamoured by the concept of functional core imperative shell but I’m struggling to see how to refactor my own projects to be like that.
(In python if it matters)
Would love screencasts, books, blogposts, other resources that cover this kind of intermediate “working on the code” not working “in the code”
[0]: https://learning.oreilly.com/library/view/architecture-patte...
If abstracts algebra is too difficult then learn introduction to proofs before continuing with abstract algebra.
Try doing problems and posting them online to have them checked. Currently you can use discord, reddit, math stack exchange etc
Don’t worry about rushing it. Everything builds on itself. For instance once you rigorously study introduction to proofs you’ll see the same sort of proofs again when you begin studying abstract algebra and will already be familiar with the concepts.
supplement those books with these lecture videos:
https://youtube.com/playlist?list=PLl-gb0E4MII28GykmtuBXNUNo...
they appear to follow rosen but they’re the same topics you’d see in epp
if you’re the complete beginner go with epp and then use rosen as a supplement.
if you are an advanced undergraduate in math but don’t know category theory then:
https://math.jhu.edu/~eriehl/context.pdf
or
Basic Category Theory by Tom Leinster
(even though i’ll list a bunch more resources below i’d probably start with leinster and work up enough math maturity to push through it.)
i also liked this: https://arxiv.org/pdf/1912.10642.pdf
if you don’t know advanced math then there is an upcoming (not yet released book) called “the joy of abstraction”
i cannot attest for the book as i haven’t read it but may be good for true beginners:
https://www.cambridge.org/us/academic/subjects/mathematics/l...
(click “look inside”)
they say “no formal mathematical background needed”
you can read the description and see if that is something that would be of interest to you.
this guy has videos + a book
there are a lot of books like “category theory for programmers”, “programming in categories” and the “seven sketches” books along with lecture recordings and videos that you may find helpful.
category theory for programmers might be the easiest of those three books. i worked a bit out of the programming with categories (http://brendanfong.com/programmingcats_files/cats4progs-DRAF...) book and ignored all the haskell sections and just focused on the math parts (this is a distinct book from “category theory for programmers”. people confuse the two due to the names and the fact they both use haskell).
if you know category theory and want to learn topology then there is “ Topology A Categorical Approach” by bradley et al.
https://www.youtube.com/watch?v=ho7oagHeqNc
and in a similar vein I am enjoying her book: "How to Bake Pi".
Getting more into the technical side of things, Bartosz Milewski has good lessons in this playlist:
https://www.youtube.com/watch?v=I8LbkfSSR58&list=PLbgaMIhjbm...