21 ms·
The author likes to point out how developer career online advice, blogs, rants etc. aren't applicable to low level programming roles, with a patronising tone bu
by antegamisou 3y ago
The author likes to point out how developer career online advice, blogs, rants etc. aren't applicable to low level programming roles, with a patronising tone but they're right nonetheless. Although embedded people will say the same about system guys, TCS researchers about all types of SWEs and so on.
However they seem to be falling into the same pitfalls with the frontend rockstar programmer-influencers; omitting and even undermining the importance of formal computer science education.
Especially if we're talking about getting into non-web development/IT roles, it's quite a lofty goal to expect mastery in programming complex software without some structured curriculum that will help you obtain the fundamentals to do so. And no, Coursera unfortunately won't make the cut most of the time.
Get a degree in Comp. Sci/Comp. Eng or at least some STEM degree and then a Masters. I understand the US-centric view of tertiary education being a risk due to large capital investment but in the rest of the world where it's affordable/free, most would hesitate to hire self-taught developers, even in web development positions.
The degree may not be enough for systems programming competency and this is where advice in the article about open source contribution comes to play, but I'd say it's kind of necessary unless you're some bunniefoo type of brain or idk.
- kubrickslair 3y agoI think it's worth noting that some of the most celebrated programmers have been self-taught – think Aaron Swartz, John Carmack, George Hotz and so on. Among leading academics also, it's not unusual to find those without formal undergraduate degrees in CS. Many come from mathematics backgrounds, including several Turing Award recipients. In the world of software development, degrees have often held less sway, and I think this trend will only become more pronounced. Too much focus on CS degrees I feel does not account for the inherent nature of the role - and I say this as a CS grad from a top school.
- eatonphil 3y agoAnother datapoint, Anders Hejlsberg (author of C#, TypeScript, etc.) didn't graduate from university. https://www.thecrazyprogrammer.com/2022/08/anders-hejlsberg-biography.html https://www.thecrazyprogrammer.com/2022/08/anders-hejlsberg-... However, I'm sure that the ideal (if not the norm) in systems programming companies is that you did finish at least a bachelor's degree. So it's not like you betting against formal education is a good idea.
- anta40 3y agoTorvalds, a hardcore system programming guy got a Master degree: https://www.cs.helsinki.fi/u/kutvonen/index_files/linus.pdf https://www.cs.helsinki.fi/u/kutvonen/index_files/linus.pdf For example... :D
- SuboptimalEng 3y agoI feel this is a weak argument. Like saying Bill Gates and Zuckerberg dropped out — but they dropped out of Harvard. IIRC, George Hotz studied at CMU for a semester, took 4 difficult classes, got a 4.0, and won a CTF competition before dropping out. My take is that the normal programmer (frontend, backend, systems, etc.) would benefit greatly from a CS degree.
- bena 3y agoGates was also taking upper and graduate level courses as a freshman/sophomore. And technically, Gates is on an extended sabbatical from Harvard. He took leave to see if this software thing would pan out. If it fails, he still has Harvard as a fallback plan.
- kubrickslair 3y agoYes, but George Hotz went to CMU after already accomplishing more than many of us might accomplish in our entire careers. So the broader point on pigeonholing still stands. I agree that for the average programmer, the CS degree still helps, but these outliers remind us that talent can blossom in many ways!
- saiya-jin 3y agoI used to think that too when I was younger a way less experienced. Suffice to say, not so much anymore. The reason, apart from US which is unique in this in worst possible way, is something else than just pure code hacking skills - these are not that important. What even the crappiest school will teach you way better than no school at all - discipline. Wading through tons of useless topics (at least in my case), its hard to be self-centered primadona. Real work looks much more like meetings, wading through tons of documentation, accepting mundane tasks since they improve things overall but are not fun at all. Brilliant self-thought people usually require fun and challenging work or they quickly move away, which most work isn't, even in software. I'll take OK disciplined guy over stellar one which needs management babysitting re what I mentioned, any day. YMMV. But yeah what is actually taught in school, at least in my era, was basically useless at work. The stuff that helped were my projects where I picked/created topics that actually helped me to get better at given area.
- hnfong 3y agoI'm not sure school teaches you discipline rather than filter out the people who don't have discipline by making them unable to graduate unless they ingest all the useless crap taught there (together with the useful stuff). If you can't teach an employee to be more disciplined when you can put their job on the line, I don't know why you'd think that even the crappiest school knows some secret to teaching discipline that you don't. Of course that means if you're hiring and need somebody with "discipline", maybe hiring a CS grad makes sense. But if my hypothesis is correct, a high school student probably wouldn't benefit from going to university to learn "discipline". Not that I think putting up with crap is something I'd want to actively learn.
- sho_hn 3y agoIt's a bit self-aggrandizing to make decisions based on comparing yourself to exceptional people, though. It may be that John Carmack didn't need to graduate, but that the average programmer could still benefit from structured learning and a suitable environment. I have a particular perspective on this: I well into my own career now. I'm presently chief architect at an automaker, and a decent enough systems/embedded programmer - you've probably used some code I've written today at some point. And I didn't even graduate high school. I've often had a chip on my shoulder about this when I was younger. I am particularly sensitive to "so what school did you go to?" class distinctions when I encounter them. I fully agree people in tech should get a chance to be evaluated regardless of their academical background, and I definitely don't insist on one when I hire. That said, there's an even mix of great people around me who have spent extensive time in education and academia, and those who have spent none at all. The ones who did rarely regret it, and often found ways to use the environment to its fullest. I got lucky, too: I fell in with open source instead of, say, online gaming as a teen, and spent my "idle afternoons as a lazy kid" fixing bugs in browser engines and other things that turned out to be useful. Because that online environment was motivating and because I had some fantastic mentors. I'll forever be grateful to my past friend who sent me his yellowed old copy of Wirth's "Algorithms and Data Structures" - with code examples in Modula-2! IMHO: Forget about exceptionalism, what matters is what you spend your productive hours in the day on and who you do it with. For many their best, easiest way to get something like that in place is likely to attend a university. There are alternatives, but make sure you seek out some version of this.
- mcguire 3y ago"Among leading academics also, it's not unusual to find those without formal undergraduate degrees in CS. Many come from mathematics backgrounds, including several Turing Award recipients." Before 1975, computer science degree programs were pretty thin on the ground. Most of the Turing Award winners have degrees in physics, mathematics, or electrical engineering, which were closely related to CS. Fortunately, today, you can become interested in CS topics and easily find a CS program without going through one of the other disciplines.
- kubrickslair 3y agoI think it’s a little more complex. Reflecting on a decade ago, my then relatively young PhD advisor, along with many colleagues, came from a myriad of backgrounds – applied math being a standout. And some of them ended up doing really remarkable work - almost everyone has used some work that came out of our lab. So I think pigeonholing on CS is not a good idea. My stress on achievements was just to underscore this point.
- mcguire 3y agoI don't know. I graduated with a BA in CS (which is no longer available), and am pretty happy to have skipped the chem/bio/physics requirement; those are a lot of work for very little gain as far as I can see. I've gotten much more use out of the formal logic and automata theory classes (which weren't taught by the CS dept.).
- crabbone 3y ago> Coursera unfortunately won't make the cut most of the time. This is a truly bizarre take... Coursera offers much of the same courses you'd get in a BCS or sometimes also a MCS degree. Add to this that most colleges are downright awful, with hilariously incompetent professors / TAs... and virtually none really prepares students for working in programming industry, (nobody teaches version control, project management, infrastructure, editing tools, quality control). There's very little a programmer can get from going to college in terms of useful knowledge. In my opinion, it's better to pick up a few books on some theoretical aspects couple years after you have enough of practical experience with programming in industrial setting. Coursera would help here. College would be hugely problematic due to being a huge time sink (inconvenient and rigid times for lectures, workshops etc.), hugely expensive, and, in most cases, outright lower quality. Degree is good to show something to HR, especially if you have nothing else to show... other than that? -- not so much.
- jebarker 3y agoOne thing university can do is help minimize procrastination. If you have financial and socially visible skin in the game you have a reason to show up and do the work as prescribed. I personally find it hard to stick with Coursera courses but never had a problem completing university courses. YMMV
- epolanski 3y agoI really disagree with your point of getting a degree. Don't get me wrong, I don't personally think that a CS degree is useless (or an engineering one). I hold a masters in chemistry and if I could go back and make it a cs one it would've been better all things considered. But I think the following: - getting a degree says very little about how much a person learned or absorbed. So much depends both on the quality of teaching (often low even in ivy league colleges where you're taught by assistants, ugh) and the learner. I've met many engineers with a degree obtained cum laude and they just didn't have fundamentals. They would know everything the day of the exam and have no clue about the topics just few months later. They got the degree to find a job, not because they cared. On the other hand some of the most impressive devs I know where self taught. Even among core Linux contributors plenty do not have any degree. - internet has nowadays an endless amount of resources, nothing can stop a motivated and disciplined person from getting good at non-natural sciences such as maths and cs.
- tayo42 3y ago> if I could go back and make it a cs one it would've been better all things considered. I wish there was a better way to go about this. It sucks I wasnt mature enough to take advantage of college or have the foresight to know what I wanted to do with my entire life when I was 17 and started. Now to get credentials, Im looking at 2-3 years of 30 hours a week of work and thousands of more dollars.
- the_only_law 3y ago> Now to get credentials, Im looking at 2-3 years of 30 hours a week of work and thousands of more dollars. Yeah this is my problem. I could get so much more out of education than I probably would have when I was 17, but It’s impossible to work a decent full time job and go back to school. The schedules simply won’t allow it. Part time work pays shit, and I somehow have to afford not only tuition, books, fees, etc., but a cost of living that only gets more and more expensive. You can trade money for time (or really spread money with time) in this case, but I have no interest in spending 10+ years just to have wasted what left of my “youth” in exchange for an undergraduate degree. Time IMO is more valuable than money, because there’s no chance in hell you can ever get it back. I’m also not interested in getting a degree just for the sale of having a degree, or even as an economic mobility vehicle. Technically if that’s all you want there are programs out there, but tend to come with too many stipulations for my taste.
- glommer 3y agoauthor here! I had a whole paragraph on the importance of a formal education. But removed because the post was too long. it's very important!
- glommer 3y agofor posterity, here's the deleted piece: Don’t neglect academic knowledge. One of the unhelpful discussions I see online is the suggestion that you may not need to have academic knowledge to be a “developer”. After all, can’t I just watch some React tutorial, code a couple of websites, and be done with it? That usually takes the form of the infamous “In real life never have I have ever inverted a binary tree”. Well, I did. Many, many times. I implemented binary trees, B-Trees, red-black trees, tries, learned indexes, linked lists. And I am not saying this to brag: the challenge here would be to find a single systems developer who didn’t. Much of what you do at system level is adapting data structures to new environments, where just using standard data structures won’t do. Big-O notation is another example. They are part of systems level discussions all the time. By “academic knowledge”, I don’t mean you have to sit for 5 years in a university classroom. I mean the kind of knowledge that you acquire by going through the books and exercises one goes through in the “boring” courses in university. If you can learn that by yourself, that’s all good too. I have a great friend with whom I worked for years that never went to school, but he could run circles around everyone in the Linux Scheduler. In my experience, though, few people can, and sitting through 5 years of university does help a lot. Unfortunately.
- busterarm 3y agoI'm about 20 years into my career as a self-taught software engineer. I mostly work with companies that only hire out of MIT, Cornell, Stanford, Waterloo, etc. By and large my experience with these graduates is that their awareness of the field does not extend much beyond what they learned in school and what the current hype technology is (today it's ML). If you got enormously lucky, they worked or interned somewhere special and were able to expand their skillset. Consistently, the absolute best developers I've worked with tend to be self taught and especially people with Computer Music degrees. It turns out that learning DSP is a skill that pays huge dividends elsewhere in this field. I've also worked with CompSci Ph.D.s that can't build their way out of a wet paper bag. As far as the degree programs go though, Waterloo is excellent. I would even say above the rest. Even MIT. I am consistently impressed with their graduates that I've had the privilege to work with. And as for my own journey, I have my weak spots. I also tend to read more papers and technical books than most of my peers by a significant margin. I think that's my edge.
- commonlisp94 3y ago> I also tend to read more papers and technical books I have only met one self-taught person who reads anything like this. My experience is exactly the opposite. Most self-taught programmers are great at programming and solving business problems, but tend to be less technical and think academic stuff is a waste of time.
- busterarm 3y agoFunny. It might be the companies that I've worked for but I tend to find with _all programmers_ is that we're all too often focused on the individual problems at hand and their complications and we fail to recognize them for the simple, well-described academic problems that they actually are. Often there's some self-imposed and pointless complication that prevents us from reducing the problem we're working on and we'd be better off changing the constraints than going down the road we're already on. The academic stuff is invaluable, but people only get a small nibble of it in their degree programs. That's why I value the knowledge over the education/process.
- commonlisp94 3y ago> US-centric view of tertiary education being a risk due to large capital investment I can't help but think European perception is a little exaggerated here. Yes, the live on campus and party at age 18/19 experience is expensive. But, getting a state school degree on a budget, and maybe a year of community college? You're looking at 10-30k. The bigger risk is opportunity cost since degrees start later and take longer.
- alkonaut 3y agoI partied for 5 years and got a masters and that cost me around $20k in loans (Of which zero was tuition, it was basically mostly the rent, books, food, and drinks). If given the choice I'd do it again of course. Even if what I ended up doing had nothing to do with what I studied I'd do it again. Even if you told me that if had started a developer job at 18 I'd now be making twice what I'm doing today at age 45, still do it.
- maccard 3y agoIf you're 45 now, you studied probably in the late 90's? In many cities today, rent for 4-5 years is going to be 40k. I live in Edinburgh, where we have a large student population. Getting a room here is going to be the guts of £8000/year, before you've eaten anything.
- alkonaut 3y agoYes 1998-2003. Rent was sub $200 for most of that time, and tuition/fees $0. This was in a Swedish city of less than 100k people. Same rent now is still under $300-$350 I believe. I actively chose among smaller cities because I had no desire to pay $500/mo in e.g Stockholm as I would then need to work. The most expensive rent was a flat I shared in 2001 near Glasgow cathedral. About £300pp/mo I think it was (£900for a 3 bedroom). I lived on around $750/mo of which $300 was a govt grant and the rest was the loan. This felt pretty easy to live on, did not have to work weekends to make that work, though worked summers for some extra money for things like travel. If I were to do it again I’d definitely do the same: pick a university where I could keep costs such that I could drink on weekends instead of work.
- jstx1 3y agoIf you're not 18 and starting from scratch, you can learn these things without getting a degree. The overall point that I agree with is that you shouldn't neglect fundamental knowledge in the field regardless of whether you have formal CS education. > And no, Coursera unfortunately won't make the cut most of the time. Some of the best universities in the world have computer science materials online (on Coursera and youtube), I don't get how that's inadequate. > most would hesitate to hire self-taught developers, even in web development positions. Not true for experienced candidates. If you have no experience, you rely on your degree to get the first job; and if you don't have a degree, it can be difficult to bootstrap that process but the further you get in time from your education, the less relevant it is.
- zer8k 3y ago> Get a degree in Comp. Sci/Comp. Eng or at least some STEM degree and then a Masters. I understand the US-centric view of tertiary education being a risk due to large capital investment but in the rest of the world where it's affordable/free, most would hesitate to hire self-taught developers, even in web development positions. I can agree that having a BSc would be an asset. Most employers understand Master's contribute almost nothing unless your particular niche is something in systems (compilers for example). However, systems advisors are few and far between these days. You're much more likely to find one of the millions of AI/ML MSc's. Maybe for a research position or something it doesnt matter as long as you have the paper. Even then, you could make an argument for systems programming that a BSc is STILL sufficient. My systems programming classes at the graduate level were basic bullshit. Nothing I couldn't have gleaned from reading either "Modern Operating Systems", The Dragon Book, Engineering a Compiler, or any number of the MPI books. Lastly, I have the requisite credentials. I work side by side with self taught engineers. Very few companies will not hire a non-degreed person if they can show good work. The idea of "work in open source" is dumb and lame. If that's your cup of tea - great! 99.9% of people don't have enough passion about a single tool, and a single code base, to slog through it to get "noticed". Better to implement your own toy stuff and just talk about it online if you really care. The author's 10x cyber web developer ninja nonsense is a very 2000's way of thinking about "getting noticed". My best advice to people is usually to get a BSc so you have a strong foundation in Math and Computer Science taught in a structured, standard way. I also advise people to not spend more than ~$20,000 or so getting it. At that point you're usually young enough that the opportunity/time cost is extremely low and ~$20,000 can be paid off pretty quickly even if it blows up in your face. ABET accreditation is an amazing thing. Aside from the "prestige" you're learning the same stuff MIT is. Personally, I paid all-in about $27,000. Worth every penny at that cost. Everything else, like all things in life, can be boiled down to "just do it". I also work with a lot of MScs. There's a reason they report up to me and it's not because I have more "pedigree". Study theory all you want. At the end of the day an application/idea/paper/etc implemented is more important than waxing poetic about theory.
- vbezhenar 3y ago> in the rest of the world where it's affordable/free, most would hesitate to hire self-taught developers, even in web development positions. I live in a country with free education and nobody cares about developer education, if said developer has some experience. I, myself, dropped university in the last year (it was my mistake at that time, but whatever) and the only real issue it caused in my life is that I can't easily get work permission in Europe (and many other countries) if I would decide to immigrate there. And even then it's possible to compensate lack of degree with work experience, I just don't exactly know how it works, because most of my work so far is kind of "self-employed freelancer", so I have no idea how I would prove my work experience to the visa office. That said, getting proper education is not a bad thing, it's just not very essential, at least in my experience.