Hacker News new | ask | show | jobs
by karmakaze 652 days ago
+1. I can nod my head while reading many books. It isn't until I encounter situations and apply solutions that I really learn things. More than specific books, the greatest thing I've learned is how to view a system. Thinking about underlying constraints (e.g. database) or boundaries communicating with other systems are the hard-points. All the stuff that happens in-between is mostly plumbing with a small bit of (hopefully) well factored key logic implementation.

Learning different kinds of things, e.g. distributed databases, functional languages, metaprogramming methods, etc makes you appreciate what they can do and makes you better because you can choose to apply some of those structures in more popular environments when they are beneficial (e.g. use of immutability vs shared mutable states).

Working on larger codebases with many developers, and for a long duration lets you grow from programming to software engineering for longer term goals that optimize effectiveness both in implementations but also the people processes that can work well or poorly depending on the choices made.