I think one of things that "millennial" self-taught programmers have trouble understanding is OS. While the need to implement OS functionality is now a niche (like process scheduling), I have noticed that "millennial" self-taught programmers have gaps in knowledge with respect to threading, mutex/semaphore, consumer-producer pattern, synchronization vs. lock-free (blocking vs. non-blocking), concurrency and paralleli…
Just curious, why the "millennial" descriptor? Is having trouble understanding the OS something unique to only "millennial" self-taught programmers?
The Imposter's Handbook
211–220 of 237 posts
Re: The Imposter's Handbook
#212Earlier quoted context omitted.
I have a CS degree, and while nobody sits around talking about data structures and complexity that's not the point. It gives you a foundation of knowledge that you automatically and subconsciously apply to every job you do. A CS degree prevent you from making a lot of obvious (if you have a CS degree) and costly mistakes. It sort of gives you a crystal ball. You can see that some code isn't going to work when a db ta…
> A CS degree prevent you from making a lot of obvious (if you have a CS degree) and costly mistakes. I couldn't disagree more. I do not have a CS degree and have lead many teams of folks with a combination of having and not having them. It's a huge mixed bag and I'm not confident you can make a general statement in either direction. Yes CS can prepare you by knowing some of the basics but I've run into countless peo…
Re: The Imposter's Handbook
#213Earlier quoted context omitted.
> A CS degree prevent you from making a lot of obvious (if you have a CS degree) and costly mistakes. This. Many years ago, our code was shitting the bed, a month before a major milestone deadline. Turns out that someone wrote an N^2 algorithm and only tested with N=5. I don't have a CS degree--just a few semesters of combinatorics and graph theory. When I was programming, I always felt that was a huge liability. I'd…
And a CS degree teaches you nothing about how to appropriately test a given system and whether N=5 is sufficient, but industry experience will.
Re: The Imposter's Handbook
#214Earlier quoted context omitted.
Comments like these can only really have two causes: - You've bought into the anti-intellectualism wave that's going on in the US. - The universities near you are really poor. Is it really the case that you learn so little on these universities that you literally have no advantage over those who didn't attend?
I think it's more many people vastly underestimate just how much they and others got out of their education. Sure,everything is a bell curve, but spending the majority of your time thinking of little else beyond software concepts for 4ish years will fundamentally change how you think and reason.
Re: The Imposter's Handbook
#215I think one of things that "millennial" self-taught programmers have trouble understanding is OS. While the need to implement OS functionality is now a niche (like process scheduling), I have noticed that "millennial" self-taught programmers have gaps in knowledge with respect to threading, mutex/semaphore, consumer-producer pattern, synchronization vs. lock-free (blocking vs. non-blocking), concurrency and paralleli…
Re: The Imposter's Handbook
#216I have a degree in CS and I've never found myself in a situation where anyone would discuss bouble sort vs merge sort. Neither have I been in a situation where big-o was relevant beyond the basic concept of not doing obviously stupid shit. What you've really missed is things like best practices, design patterns and concepts like SOLID, but a lot of people with CS degrees missed some of those as well. If the book cove…
Worst-case list comparison for two lists of length m and n respectively, is O(mn). For 10 million in each list, that's a bigger number than you can reasonably expect to iterate through using brute force. So brute force won't do: it is imperative that you understand how everything that touches all the data scales.
"Not doing obviously stupid shit" means understanding the implementation of data structures and how they scale, understanding how nested loops multiply runtime, how recursion levels multiply runtime. It turns out there's actually a 1:1 correspondence between knowing big-Oh and not doing obviously stupid shit.
That's why it's one of our in-person coding questions: after the candidate has written up a solution to the problem, they need to be able to analyze what they wrote and understand how it scales to different n. If they don't have an intuitive understanding of the performance of code, the chances are they'll do obviously stupid shit.
(Personally, I learned about big-Oh long before I went to college, and I believe it's probably the single most useful thing to learn in CS, right up there with compiler theory (my previous job was a compiler engineer, so I may be biased). With best practices / design patterns etc., it's extremely hard to substitute for experience; I see juniors misapplying software design concepts on a weekly basis.)
Re: The Imposter's Handbook
#217Earlier quoted context omitted.
I agree with you for the most part, but I think if his sentence read: > A CS degree can prevent you from making a lot of obvious (if you have a CS degree) and costly mistakes. I think most people can agree that it doesn't provide any guarantee, but it definitely gives you a boost in the right direction. (For the record, I don't have a CS degree)
Yeah a simple word and I would have taken the post entirely differently :)
Re: The Imposter's Handbook
#218I think one of things that "millennial" self-taught programmers have trouble understanding is OS. While the need to implement OS functionality is now a niche (like process scheduling), I have noticed that "millennial" self-taught programmers have gaps in knowledge with respect to threading, mutex/semaphore, consumer-producer pattern, synchronization vs. lock-free (blocking vs. non-blocking), concurrency and paralleli…
Everyone has gaps in their knowledge. There are two devs where I work, and we are both better than average in my opinion. I know Django inside out and deal with server deployment, while the other guy knows more front end and HTTP / web stuff. We both know how to use a database properly and not to over engineer stuff. We compliment each other pretty well.
I'm just describing what I often see the self-taught "millennial" programmer is missing with a minimal number of data points. Doesn't mean all of them do, but hopefully by me listing it here a book such as the above can tackle these topics. I hope somebody reading this doesn't take offense of my laundry list; it's just intended to show what I think would be useful to cover in such a book given their importance to app development.
I'm no way knocking self-taught programmers. They learn a lot faster than those who went the formally trained route. One of my interns who was trying to get a master degree in CS I showed how to link to a library 3-times, and he still couldn't get it.
Re: The Imposter's Handbook
#219Earlier quoted context omitted.
Just curious, why the "millennial" descriptor? Is having trouble understanding the OS something unique to only "millennial" self-taught programmers?
In my experience, Gen X and Boomer self taught programmers spent a lot of time hacking at the application or system level and have less holes in that area. They have other holes in their knowledge base, just not those ones.
Re: The Imposter's Handbook
#220I am curious, do people actually pay $30 for an ebook without even being able to see a(propsed) table of contents of a sample of the writing? This is unusua. With both Amazon and LeanPub you can at least gauge the writer's style or get a feel for writing quality by looking at a sample chapter and a table of contents. I'm skeptical that all of those people praising the book bought the book site unseen.
apparently this is the ToC for "pre-release #2" http://i.imgur.com/ssYr5ki.png seems like pretty simple stuff; couldn't all the information be found with one internet search away?
I should instead resort to doing a separate Google search for the TOC?