8 ms·
This must be written by a young developer who has not yet realized that formal CS knowledge is barely applicable in most scenarios. Paradoxically, the hustler
by jariel 6y ago
This must be written by a young developer who has not yet realized that formal CS knowledge is barely applicable in most scenarios.
Paradoxically, the hustler who's 'learned everything themselves' has the right attitude, if not the right foundation.
The notion is hidden in the title: 'Science' is not 'Engineering' or 'Business' or 'Product' or 'Markets' or anything of the sort.
CS is like the 'basic literacy' of Software, it's foundational in some ways, but it's just a starting point.
Almost everything important will be learned after the fact.
- wagslane 6y agoPerhaps. Author here. I'm on the younger side, but I've been coding for ~10 years and have been working professionally for ~5. I've been in the situation (maybe it's unusual) where I've consistently needed to be able to apply more complex algorithms to my work. I've worked mostly in signal analysis, NLP and fairly large ETL systems.
- borski 6y agoThe main issue, I think, is that you imply that is better than simply learning how to solve a problem enough to make the customer happy. It’s great that you prefer the former, but it is not strictly better. Sometimes, a CS background means you have base knowledge you can use to apply yourself to things you haven’t solved yet. And sometimes it means you have a deep theoretical background and absolutely zero idea of how to write code; I have interviewed plenty of these folks, and they rarely get hired over someone who perhaps has a shallower CS background, but can... solve the customer’s problem, because they know how. Theoreticians are useful, but not necessarily “better.” And of course there are CS folks who can code; but that that isn’t all of them means it’s hard to make generalizations like this.
- sponaugle 6y agoIndeed there are cases where that fundamental understanding is critical, and others where it isn't. I started my career at Intel, and I can say without hesitation that a significant amount of direct foundational material from my EE/CE degree was used every day. Microprocessor design, VLSI, signal processing, etc were all used in depth.I suspect it would have been very difficult to learn those 'on the fly' in this kind of environment. On the other hand when I started my own software company, most of those skills were learned on the fly, with some awesome wins and failures along the way. You can and will be in both categories.
- jariel 6y agoIt depends a lot on circumstances. Most developers today building mobile apps, web front-ends/apps, or even working on the backend simply do not need foundational CS knowledge, though I suggest it would be better in most cases, and more often than not a 'positive signal' of general capabilities. In my own experience, I started out working on embedded, designing software for fairly complex networking gear - and we were even making our own ASICS. Then moved on to a variety of other thing and I'm pretty sure I've literally never seen a sorting algorithm implemented, let along having done one myself. I've even tried to find excuses to do one, but always fell back on deference towards more established libs. My own CS background has been helpful, but more in the general sense, and I'm certain that someone with enough self discipline could have very well accomplished the same. Specifically, none of the most applicable basic skills (i.e. language mastery, API familiarity), best practices, or even more architectural issue (i.e. tech selection), or planning approaches were derived from my CS background. CS is a 'good indicator' and generally preferred but surprisingly not directly applicable in most scenarios. Obviously, in many cases it is.
- anthony_d 6y agoOk, you had me with signal analysis and NLP... but ETL? The bigger the ETL system the quicker I can feel my IQ falling. Gives me flashbacks to the most mind numbing job I've ever had.
- LargeWu 6y agoI think your situation is atypical, actually. Certainly there are domains where the problem complexity necessitates learning more complex algorithms. But the vast majority of people coding for businesses, that's not true. Most of that type of work is fundamentally CRUD work. The relevant skills in this type of job are writing clean, maintainable code; designing good data flows; working with stakeholders; building resilient systems. In short, about building stable information systems that are easy to modify. At some point, there are diminishing returns to increasing technical knowledge. As a former coder and now hiring manager, I value people who are good communicators and problem solvers (not just coding problems). If you want to remain an individual contributor, then sure, by all means keep focused on technical skills. But at some point, so-called "soft" skills actually become more important to advancing your career, and your career will plateau if you don't actively develop them. So maybe what you are seeing as complacency is really about people around you applying themselves in ways other than improving technical capabilities.