Earlier quoted context omitted.
That was similar to my experience on a CS course - you were expected to do a lot of development, but nobody really specifically taught you about it and you were expected to pick that up by yourself as you went along.
That's how my CS program was (late 90s) as well. You were expected to be somewhat proficient already in C/C++ programming going into the major. Much of the program was mathematics courses. It was brutal. They eventually saw the high drop out rate and re-configured the major. I envy the kids who get to go through the major now. The courses look much more interesting and it's comprised of more actual software engineeri…
No CS Degree – Interviews with self-taught developers
201–210 of 480 posts
Re: No CS Degree – Interviews with self-taught developers
#202Earlier quoted context omitted.
No, you don't need a degree. All you need is a resolution to learn the things that you're missing. I covered C++ in all its hairy glory, assembly, SIMD, data structures and algorithms (implementing them, not just using them) and concurrent and lock free algorithms and data structures. Some of the data structures I created perform better than anything in the published literature - but I couldn't be bothered to write p…
I find it odd that you did all this extra work, yet couldn't even be bothered to write a paper about it and still haven't.
Re: No CS Degree – Interviews with self-taught developers
#203It's fun when people assume a CS Degree means you are a developer. Practically all development is self-taught, a CS degree is only handy for those moments where you dig into some abstract theory, which in most development jobs hardly ever happens. You mostly spend (or waste) time on tools, frameworks and interaction (both with humans and other systems). Lots of common development is rather mundane compared to all the…
CS is more than abstract theory. It gives you a foundation that you otherwise are unlikely to get. Self-taught means learning things useful for your existing job or things you find interesting. I'm work almost exclusively on the frontend, but my CS degree gave me enough foundation that I'm fairly familiar with compilers (I wrote one in college for a required course). I don't necessarily enjoy writing compilers. But t…
Re: No CS Degree – Interviews with self-taught developers
#204Earlier quoted context omitted.
This is absolutely true, however in reality (= in practice) very few non-CS degree devs _will_ reach the same level of knowledge. When you have to learn all that stuff to get your degree, then you just have to learn it. Period. Also people who are full time students have more time to spend on these topics, but when you are actually working 8h+ per day and your career is mostly around JS frameworks it becomes much har…
I don't disagree with you, but I don't completely agree with your implications either. From my experience, most people with a CS degree will not attain that level as well. Even at the masters level, a number of people will not understand. It's sad. I really feel this is a failure of universities not forcing students to learn, but I know there are a number of politics etc that factor into how hard they can make course…
The two best things a CS degree can do is expose you to ideas you wouldn't otherwise know about, and to force you to work on hard projects that require a combination of multi-level analytical thinking and research.
Both of those are excellent training for at least some aspects of being developer.
But that doesn't mean the details are inherently useful. There are very few situations where you will be expected to write a compiler. So in that sense compiler theory itself is optional - far less useful than the experience of having to handle a complex set of data structures and relationships, which could in theory come from other kinds of projects.
Academic CS also tends to miss out a lot of useful practical skills. It won't teach you much about management (from either side), salary negotiations, office politics and co-worker relationships, or business theory.
It may not even teach you how to write good clean code that's easy to read and maintain.
So IMO the ideal CS degree doesn't exist. The ideal degree would be a good mix of theory with plenty of industry practice - possibly with some standardised requirements that would lead to a Chartered Developer qualification that was better at guaranteeing a working blend of practical skill, theoretical understanding, and analytical talent than current degrees seem to be.
Re: No CS Degree – Interviews with self-taught developers
#205Earlier quoted context omitted.
> But the fact remains that I can write a compiler. I can program in C or C++. I do understand pointers. None of this may hold any real value, but I wouldn't be able to do any of them if not for the degree. I liked your initial point, but the argument weakens... People absolutely have learned all the above things (and very well), on their own, outside of a CS degree, and I bet you could've.
I wasn't advocating that people don't. There are absolutely vastly better compiler programmers than I am that have never taken a formal class. My point was that I wouldn't have learned it because I don't enjoy it. And sometimes, professionally, we get to do stuff that isn't fun. The nature of being self-taught is heavily biasing the things that interest you. College forces you outside of the box. Outside of the box h…
Re: No CS Degree – Interviews with self-taught developers
#206Re: No CS Degree – Interviews with self-taught developers
#207I’m a programmer who studied information technology (with a number of programming courses, but zero true CS coursework) first at community college and then at a budget brand state college. I’m now a senior developer/engineer and frequently work on projects alongside CS graduates from prestigious schools who seem incapable of completing even the most simple coding tasks - this is the case nearly 100% of the time in my…
> equently work on projects alongside CS graduates from prestigious schools who seem incapable of completing even the most simple coding tasks It's possible there's selection bias going on. The wheat end up at the Apples and Googles of the world and the chaff end up working with you. This isn't intended to be an insult. People who attend ivy leagues are given such a huge leg up that even an average graduate probably…
Re: No CS Degree – Interviews with self-taught developers
#208They are more ok with doing 'not fun' stuff, because they have suffered doing a bunch of homework. At work, maybe a percentage of the job is fun, and some things you need to power through. Tuning logs, painfully stepping through the code for the 110th time to find the erratic bug, or boring documentation, also part of the job.
They are less inclined to just copy-paste a solution that you found on StackOverflow and more agreeable to go into the R&D mode of finding the right algorithm. This can be a blessing and a curse.
People that have been through several years of education are more inclined to follow a schedule. We are very relaxed at Silicon Valley and yes some people do their best work from home, but sometimes you just have to be here. College helps form some of these habits.
Last, a degree comes with a lot of soft skills that Universities just throw in sometimes. Communication skills, the ability to summarize properly, grammar and spelling .. not required for a coder but definitely useful for someone that wants to grow into a career into software, eventually you need to interact with Product Managers, Business, Customers, and those unrelated-to-the-job skills start becoming very handy.
Re: No CS Degree – Interviews with self-taught developers
#209Make peace with this fact: you can most definitely build businesses and add value to any organization. But you won't be able to optimize Twitch's video codec or any other very low level, uber-specific, high impact code. Business need both types in this world. No shame in that, but don't lie to yourself into thinking that you can do _both_ with no CS degree. You can't.
Some PhDs and math students yes (at least, with regards to the algorithmic portions), but otherwise you have to learn the low-level esoteric stuff on your own, or be lucky enough to have a specialized optional course at your university.
And the cutting-edge will rarely be available to undergraduates anyway. All my CS graduate colleagues learned about codecs was how to compute a DCT by hand - they certainly didn't learn the modern 4x4 and 8x8 spatial block transform approximations as used in h264, or any motion vector calculation algorithms, or the x86_64 SIMD intrinsics, or any of the modern entropy coding methods.