3 ms·
I went into my degree thinking the same thing, and I learned very little, because I generally knew more than the tutors. The biggest win from my college time wa
by barrkel 8y ago
I went into my degree thinking the same thing, and I learned very little, because I generally knew more than the tutors. The biggest win from my college time was from the library and access to books on compiler theory, my real interest.
Now, decades later, I despair at how poorly new and many not so new developers we hire really understand complexity theory. Complexity theory is the single biggest thing you can learn that you might not learn self-taught, but so very few developers internalize it. They write code that does network calls and database calls with abandon, never mentally multiplying out the complexity. And as the gap between testing environments and production environments grows (i.e. a lot more data in production), the cost increases. (I had learned and internalized complexity theory at 15, from a chance book found in a bookshop. This was before the web made such information easy to find.)
- jerglingu 8y agoI agree 100% that complexity theory is the most important thing you learn that doesn't come intuitively. Unfortunately, a lot of us idiots, I suspect maybe the majority, have to have scalability completely beat down into us until it's internalized and fully respected. It's similar to the hot stove lesson where you know conceptually that it COULD and probably WILL hurt, but a lethal mix of naivete, optimism and some arrogance convinces you to push that shitty 1.5-seconds-a-transaction piece of code anyway and then - oh wow! - it scorches you. If you're in a shop with no existing or only surface-level code reviews, then you learn the lesson in production, and it brands you for life. In an instant, all that big O theory and combinatorics you did in college makes complete sense. This is the single most common lesson every shop with junior developers learns at every place I've ever been at.
- halfastack 8y agoIs there a clear line between 'respecting complexity' and 'premature optimisation'?
- EduardoBautista 8y agoYou can learn that from a good textbook on algorithms and data structures. You don't need a full blown Computer Science degree for that.
- therealdrag0 8y agoOTOH: With good monitoring, starting naive and improving later isn't the worst. My company uses NewRelic and it auto-magically sets up traces for all transactions. Can see where time is being spent, and the number and duration of DB and external-requests. Of course you actually have to pay attention to it. I've gotten a lot of praise by just optimizing things that everyone else shrugged off. (Turns out people appreciate a fast authentication system; who knew!?)