10 ms·
Does anyone else get scared that too much breadth will stifle them? CS is a massive field these days and you could easily sink all your time into a small area w
by ericmcer 7y ago
Does anyone else get scared that too much breadth will stifle them? CS is a massive field these days and you could easily sink all your time into a small area without fully mastering it. I have had coworkers before and who could speak at length about different Linux distros, networking, web dev, dbs etc. but then were not great at the meat and potatos of the job.
- ohaideredevs 7y agoIt's a legitimate concern. I spent 4 months of evenings and weekends(could have been one or two to be honest) to prep for the Google Cloud Architect exam. I have used NONE of this knowledge (past what I already knew - load balancing and spinning up VMs/containers...I think I used Dataprep instead of a Excel once too for shits and giggles). I am looking to spend another 4 months learning ML, which I likely won't apply in any way. That's a year down the drain with ONE cloud provider and ONE way of doing ML. It's easy to completely waste your life like this WITHOUT getting better at your job. Carry-over is far more limited than people make it out to be, unless you REALLY know a lot, but those people are rare.
- Ascetik 7y ago100% agree. Being 35 and having worked in IT for 15 years now and seeing the rapid acceleration into DevOps/Cloud/nix/Programming/Stacks I fear for my future. I want to learn a ton of stuff, but the vast amount of stuff needed to learn in order for me to move up in my salary bracket is stifling. AWS/Azure/+ the former I mentioned, then Python, YAML, Cloud networking. I'm good at some stuff, but the industry is just moving so ultra fast now it's hard to keep up. I've been contemplating getting out of IT altogether because I'm not fully confident in career growth at this point unless I murder myself with study and ignore my family. I've been a MS SysAdmin for 15 years, moving into nix devops (the new way of sysadminning) isn't easy.
- amboo7 7y agoYou seem to need to study programming before being able to do real DevOps. nix is kinda advanced in this sense even if it is has a small language. In my experience, very few ops are able coders.
- dillonmckay 7y agoI agree with this. Interestingly, earlier in my career, most of the developers I worked with were also capable at system administration, and could easily fill that role if needed. The sysadmins during that time were quite capable, but had no desire, or an admitted lack of ability for a development role. It is an interesting phenomena to observe.
- ndarwincorn 7y agoGiven their background I think they meant nix as Linux/Unix and not Nix the programming language/package manager. Despite its clear fit with the current hotness of immutable systems and functional programming, I don't think I've seen anyone in for-profit industry on a Nix/NixOps stack.
- Ascetik 7y agoYeah I meant Linux/Unix. The asterisk turned everything italic so I just left it out.
- ohaideredevs 7y ago"unless I murder myself with study and ignore my family" I think this is completely true as well. To move past senior developer, you fall into one of these camps: 1. Very bright. 2. Spent a LOT of time studying or messing around with the right tech on your own. 3. Sell your soul, i.e. ignore (or not have) family/kids. A lot of people from camp #1/2 don't understand that for most, #3 is the only option (in the short term). There is also the very real tradeoff of not going with #3 and risking declining job prospects/salary. I think this is doubly painful for devs, because they are generally used to quick career progression / salary bumps, and then it stalls hard at senior dev.
- nicoburns 7y agoWhy do you need to progress past senior developer? Senior developer jobs provide interesting, fulfilling work, and excellent salaries (probably 90th percentile). What kind of job would you be aiming for?
- JustSomeNobody 7y ago> Why do you need to progress past senior developer? Age-ism, of course. You can't be a 50yo senior developer.
- pjmlp 7y agoSure you can. It called consulting.
- nocman 7y agoUm, I know lots of 50 year-old (and older) senior developers. I'm not ignoring the fact that ageism is a real thing (it most definitely is), and it is more difficult for many older programmers to "keep up", but that doesn't mean that no one is doing it.
- JustSomeNobody 7y agoIt was half-sarchasm. I'm a 48yo senior dev.
- zerkten 7y agoI feel a similar way, and I'm a little bit older with a fairly strong desktop/web/mobile dev background. My focus was heavy on Microsoft technology before moving 50/50 to Linux. I look at industry as a series of different waves happening where I just need to get on one so that I can find the next. A wave is going to cross the startup world before it moves into established business. If I time it right then I can hang in there for a while. It doesn't help with my anxiety, but I've done this before so I know I can do it again. I suspect I'd find the same pattern in a closer examination of your background. There are very few people learning all of these technologies because time is required to learn the basics, as well as put it into practice within industry. That's deep learning. A lot of people are lucky to work in places that will put unproven technology into production. The number of places willing to take this risk is increasing because cool technology is a requirement for attracting top talent. If you are in a more risk-averse organization it may seem scary to move to a faster moving, less risk-averse one, but you might find they actually have more leeway for mistakes and learning. I watch for particular patterns around how a technology is hyped and who is applying the technology. Thoughtworks publish their perspective (https://www.thoughtworks.com/radar https://www.thoughtworks.com/radar) and I try to read this, plus other analyses to understand what direction things are moving in. You have to take a longitudinal view. It's not good enough to just compile your research and make a decision. You need to know how a technology has moved over time. Once you start doing this you start to develop some "spidey" senses when you see something at the top of HN - and you don't have a ramp-up cost each time you have to make a switch. Other than that focus on a few fundamentals, including one programming language reasonably well. I'd strongly suggest learning Python and having an incremental two year development plan so you don't half-ass it. A lot of the Linux world is built on stable skills. Rather than focusing on AWS, or Azure networking learning networking and TCP/IP beyond a cursory level. There are a lot of folks building cloud infrastructure badly, slowly etc. because they don't understand these fundamentals. The references are old and boring like TCP/IP Illustrated Vol. 1.
- Ididntdothis 7y ago'I've been contemplating getting out of IT altogether because I'm not fully confident in career growth at this point unless I murder myself with study and ignore my family." That's a real problem. I had a few years when I worked on pretty cutting edge stuff so most of my learning was on the job and could be applied quickly. In my current job there is a lot of repetition and stagnation so you have to spend a lot of time outside the job learning stuff which you then never apply. This gets really old after a while.
- rhizome 7y agoAs an MCSE from the late 90s, I can tell you with oldfart-confidence that you can rely on Microsoft maintaining a landscape where you can be an MS-only sysadmin for decades to come. Sure, the salaries might not be stratospheric, but corporate AD & GPO work will be never-ending. There are lots of businesses running on Windows laptops and desktops and that ain't changing.
- itcheeze 7y agoyeah, I would agree with this. You may not have the servers locally, but there is still a lot of admin stuff to do, and Azure doesn't configure itself.
- cat199 7y ago> I've been a MS SysAdmin for 15 years, moving into nix devops (the new way of sysadminning) isn't easy. nix devops is productizing/consumerizing the old way of nix sysadmining (at least for shops that did things the right way)
- krastanov 7y agoI would suggest attempting to learn the general principles behind the one way to do ML/cloud/whatever you have studied. That type of breadth of knowledge is the useful one. It lets you gain further knowledge much more efficiently. As I mentioned above, to great extent breadth of knowledge is about learning how to be an efficient learner.
- heavenlyblue 7y agoI would say the most important knowledge is the one that allows you to ask the questions of "why is it still not done?" or stating "well, they did it, but it won't work well in situation X" and then either finding the products that do exactly that, or knowing that in a few years there will be an industry providing exactly that kind of service. Saying that you can't move between cloud providers because you need to learn something new probably implies you don't understand the fundamentals constraining the design of e.g. databases provided by cloud.
- Something1234 7y agoDefine the meat and potatoes of their job. They could just be branching into /r/iamverysmart territory and just parroting omgubuntu.
- zzzcpan 7y agoI have a feeling that in CS you need a decade of experience, a wide range of experience, before you can even get on the path of mastering something.
- neilv 7y agoReconcile that value of experience... with commonplace startup hiring age biases, and dotcom interview processes biased towards someone with CS101 fresh in mind and who perhaps just spent months practicing leetcode whiteboarding. :)
- deleted 7y ago[deleted]
- krastanov 7y agoI disagree with the premise itself. Breadth of knowledge is not obtained because you will use every single piece of it, rather because you will be able to make connections between disparate topics. When you have breadth of knowledge you know which reference to pick up for help with your new exciting problem. (I am assuming it is a given that breadth of knowledge does not imply only superficial knowledge). Lastly, having breadth of knowledge means you have learned how to learn efficiently. This is a significant force multiplayer.
- zwkrt 7y agoI would even go so far as to disagree with one of your sibling comments in saying that this reading list is important because it isn’t about “arcana”. Arcana is what usually gets you the last 10%* of the way to a working solution, even if your high level approach is beautiful and pure. An old-style hacker reads man pages, RFCs, specs, and programming books not to immediately know how to solve problems at hand, but to know what solutions are possible for future problems. It isn’t useful to know that the HTTP spec doesn’t specify a max header length or that the default setting on Apache is to only accept 8kb of headers, until it is suddenly extremely useful to know both things at once :) * some would say “the other 90%”
- acqq 7y ago> reads man pages Good luck with that, especially, but not only, with git man pages. I tend to avoid reading these “just to know” but only when I need something specific. They are mostly torture. They could have been more useful to read but they presently aren’t.
- dllthomas 7y agoI read through the bash man page in a reading group with some co-workers. Good times.
- alephnil 7y agoThe git man pages is famously inaccessible if you don't already know the concepts and jargon of git. The following auto generated satire is both hilarious and sad if you have read the actual git man pages: https://git-man-page-generator.lokaltog.net/ https://git-man-page-generator.lokaltog.net/
- xwdv 7y agoIt has been widely confirmed that going for a wide breadth only makes you good at architectural type jobs where you orchestrate multiple separate silos of knowledge coming together, without actually knowing the details too deeply but instead simply trusting that they will interface correctly. If you try to have a wide breadth and a deep knowledge simultaneously, you will pay a heavy price. You will not have much of a family, you will not have other hobbies, you will not know much beyond CS, you will not even have time to use the vast majority of your knowledge to its full depth. There simply isn’t enough time. You will likely die as you lived, at a keyboard with your head weighing down on keys spamming them infinitely in a code editor, or slumped in a chair or bed with a technical book resting on your chest. Very few people will notice your passing, and the world will be no different for whatever knowledge you gained. What we should strive for instead is “Just-in-time knowledge”, where the goal is to quickly become an expert on a topic you know nothing about right when you need to be. Many people first learn to do this when they get into debates on the internet, and then extend it into their professional careers.
- krastanov 7y agoI would agree that work-life or study-life balance is important, but your comment is way over the top. One can definitely "have it all, just not at the same time"^1. "All" it requires is spending time and tought on each piece and having a support group for when you feel you are too tired. 1: Admittedly, the lottery of birth can make that more difficult.
- ps101 7y ago> quickly become an expert on a topic you know nothing about right when you need to be This simply doesn't happen for anyone.
- nine_k 7y agoIt's usually the lack of breadth that hurts you. IT is a fast-moving field. Solving business problems takes understanding which good ways to do that are currently available, what limitations and dangers each approach brings, how would it interact with other things, etc. You still need deep knowledge, but the most efficient knowledge is that of key principles, general approaches and ideas. A specific technology does not matter much, and can be mastered quickly enough, if you already are acquainted with the principles behind it. E.g. learn about FRP, and you will see how React, Elm, and Excel all work along the same lines. What you end up with after some time is like a normal distribution: deeper knowledge around some area and various levels of acquaintance with a wide range of other things. There are still areas where you can polish the mastery of one narrow thing to utter perfection: making pizza or coffee, sports like running or weightlifting, etc. You can keep practicing them to counterweight the feeling from the view of the sheer and constantly moving IT landscape.
- Rerarom 7y agoWhat would be a good example of a slow-moving field?
- amelius 7y agoPhysics.
- kps 7y agoManagement. Kay's list includes The Mythical Man Month, which, except for the technical details, could have been written yesterday.
- pjmlp 7y agoI feel that if there is a millennia old book or tablet from early days of mankind regarding management, many advices would still apply.
- ghaff 7y agoIt is very waterfall-y as someone I know said in a talk and therefore you probably need to be a little careful what "rules" you take away from it. That said, the "mythical man month" discussion itself as well as the idea of a 9x difference in effort between a program and a programming system product are worth the price of admission. The latter arguably runs somewhat counter to a lot of MVP, etc. approaches but recognizing the difference is still useful.
- emeraldd 7y agoHere's my approach. Do your best to aware of as many tools/techniques as possible, know where to look for information on the ones that look/become promising or useful, and build deep knowledge on the ones you wind up regularly using. It's very useful to have enough exposure to things to be able to tell generally what's going on and to know what you need to look up.
- bamboozled 7y agoHere is the interesting thing about reading books, I once thought reading books and remembering everything about the text is the goal; However over time I’ve learned there is value in having read the book, understanding the material and then you know where to reference the information should you need it in the future.
- nine_k 7y agoOften reading good books is less helpful than it could be because the books answer questions you don't yet have. Reading and practicing is key.
- jimbokun 7y agoThe books recommended by Kay here are very much about DEPTH, not BREADTH. The majority of programming books are just ephemera and arcana and details that will be irrelevant in a year, or next month when the new version of the framework comes out. Kay points to books, like the original Lisp Programming Manual, that will help you understand deep core concepts about computing itself, that will remain applicable no matter what framework or library you need to use tomorrow. Take an Alan Kay, a McCarthy, Norvig, Abelson, Sussman, Armstrong, Steele, etc. from their prime and drop them into a software company where they have zero familiarity with the programming languages or tools currently being used, and within days or weeks they will be the most productive developer at that company by far. They will come up with simple, elegant, high performance and correct solutions to problems none of the other developers would have even considered. Those are the kinds of thinkers you want to emulate, if you really want to write excellent software solving real problems in the shortest amount of time.
- neilv 7y agoIt doesn't even have to be "from their prime" (and I don't like to encourage that ageism concept, now that we have hiring managers fresh out of school). I'm comfortable asserting that, at any age, they will probably be high-value, having enough background to have insights and see connections that others cannot yet, now with a lot of general wisdom besides. See Danny Hillis's writeup on Feynman at Thinking Machines. You'd just need to offer them a compelling work situation, with problems that interest them.
- jimbokun 7y agoHeh, true, I just added "from their prime" because I know not all of them are still alive so would not add much to a development team in their current state.
- deleted 7y ago[deleted]
- yitianjian 7y agoYou never know, something like "The Hand of Alan Turing" might be a fairly decent draw for hiring
- enkiv2 7y agoDepth cannot be gained without breadth & vice versa. Knowledge isn't tree-shaped but web-shaped.
- ps101 7y agoBut the first 10-100 hours of learning and using a new language feel so good.
- ken 7y agoYes -- which is why you'd do better to read these books than 95% of the links on HN. These are books about how objects work and how EVAL is defined. These are the meat-and-potatoes of computer science. There's no "Linux distros, networking, web dev, dbs etc" here.
- Quarrelsome 7y agonot really, like if you're broad then it means you get muscle memory for "any old shit". Like I'll happily blunder into language or tech stack because the implementation patterns overlap so much after you've juggled a few things. > oh its one of these sort of things like xyz I did four years ago. Of course the specifics are different but the muscle memory can get you through. I'd say the worst bit about it is that you often feel impostor syndrome pretty bad because in many cases you're never 100% sure about stuff like you might be in a speciality.
- rohan1024 7y agoI believe any team needs a combination of both types i.e. people with breadth and others with depth. Some people are just good at seeing the top view and how all of it will fit in most optimal way possible. I am saying this because I can see abstract patterns from the top and what's wrong with entire project. But entire IT industry is looking for people with depth. So sometimes I wonder if there is need for people like me in IT but then again when I see a vast system I can immediately discern what could go wrong, possible bottlenecks or come up with better solution. This gives me little bit of hope.
- koonsolo 7y agoNothing beats T-shaped skills :) https://en.wikipedia.org/wiki/T-shaped_skills https://en.wikipedia.org/wiki/T-shaped_skills
- JustSomeNobody 7y agoToo much of anything is not good. I do tend to focus more on breadth, but I do go deeper on some subjects. However, I never give up breadth for the sake of going _Jon Skeet on C#_ level of depth. That, for me, is a waste of time[0]. I don't need to know a language or tool quite that deep. I can be very productive with a certain depth without touching bottom. [0] Note: I'm not saying Skeet is wasting his time.
- ghaff 7y agoThe other thing you need to be careful in with focusing solely on going deep on one topic is that that one topic can go by the wayside. I've known people who were, in one example, arguably the world expert in performance on a long ago computer architecture. There came a point where no one cared any longer and I'm not sure to what degree he successfully moved on to other pursuits. Another example is Y2K. A lot of consultants ended up defined as being Y2K guys and they didn't necessarily successfully transition to something new. Not arguing that going deep is necessarily wrong but, if you do, you need to keep your eye on emerging areas that could benefit from your existing skills.
- catwell 7y agoYou can focus on breadth or depth depending on what kind of programmer (generalist or specialist) you want to be. Matt Klein (of Envoy) had a good thread about that on Twitter [1]. He focuses on depth whereas I tend to focus on breadth. Of course I have areas and technologies I know better because I have worked in / with them (computer vision, filesystem / DB replication algorithms, Lua, etc) but I try to expand my areas of knowledge so I can understand whole systems rather than become an expert at a specific thing. For instance, right now, I'm doing mostly Web front-end stuff, which is the part of the Web stack I know the least. [1] https://twitter.com/mattklein123/status/1130206792175169536 https://twitter.com/mattklein123/status/1130206792175169536
- khazhou 7y agoMost people lack both breadth and depth. So don't worry about going too broad... you probably won't get there.