This sort of contributes to giving self-taught programmers a rather bad name. The writeup is good, but the idea that Big O is "scary" is just absurd. It's an elementary concept that every working programmer should be familiar with, regardless of whether they're self-taught. Algorithms are not "scary". If you can't reason about algorithms, you may not be a very good programmer yet.
To be clear, I really appreciate the writeup. I just wish it had been framed better. It should be clear that this is for beginner programmers, regardless of whether they have a degree or whether they're self-taught.
Ahh yes. Let's berate the OP for being intimidated by a topic and then diving in and learning it on their own. This will really encourage others to learn on their own and contribute back.
Well, whether we like it or not, self-taught programmers are held to a higher standard. It doesn't help us to further the stereotype that self-taught programmers are afraid of the basics, haven't attained a general education in computer science on their own, or are less reliable than their peers who have degrees.
Not trying to berate the OP. I'm trying to say I wish OP had framed it better.
Being familiar with big O notation is not that same thing as being familiar with a few basic complexity classes. I wouldn't be surprised or disappointed if a self-taught programmer was intimidated by big O notation, but I would be surprised if they were unfamiliar with the concept that hash map lookups are much faster than array searches, or that searching a sorted array is much faster than an unsorted array. You seem to be using "big O notation" to refer to fundamental competency about basic data structures. It's even quite possible and understandable for a self-taught programmer to, over time, figure out that certain big O classes refer to certain algorithms while still not understanding the meaning of the mathematical notation.
but the idea that Big O is "scary" is just absurd.
To you. I never studied things like these in school and getting to a point of "Oh that's what that means" was long and arduous as it pertained to a lot of scientific literature.
Plain English, it seems, isn't in the tool set for a lot of very smart people who, coincidentally, feel that it's their duty to Explain All the Things. It's unfortunate that so many of them are deluded by the "x should be elementary" mindset or the like without regard to the language they use or the specificities of notation (Big-O in this case).
It's unfortunate you've read my post as a claim to avoid actually learning these.
I was pointing out that the "x is elementary" attitude doesn't help the process and I thought (from the video at least) some empathy in communication is warranted. It's ridiculous to expect clarity when no such thing exists in the language used to describe an idea in the first place. The OP went to the trouble of making such a post. Maybe it wasn't perfect, but it gets the ball rolling.
Whatever inadequacies can be corrected with feedback and I for one would like to see more people engage in humane explanations for things pertaining to their expertise.
Big-O is "technical". Understanding of it comes with clear explanations.
No where did I claim anything contrary to : "The correct way to "understand these things" is to learn the math, the theory, and do the exercises." What I claimed was that language can soften the barrier to learning these as I imagine it did for you.
Well, I must still be misunderstanding you because I spent 30 minutes writing a whole comment explaining why Math is important then got to the bottom of your comment and realized we both believe the same thing (that these subjects are important).
What I will contend is that pity parties about scary topics are unhelpful and rigor is important - more so for self-taught people. Like you, I advocate humane teaching. Humane teaching, to me however, is more about adapting to learning styles while maintaining the rigor and difficulty of the material (without watering it down) - this article watered it down.
Clear and humane explanations are out there; this article was not one of them. The intention was noble and I respect them for that but I agree with the top commenter in that the pity party needs to end and more self-educated individuals need to be role models for those that do find it scary so that we can all (as in self-educated people) strive to understand difficult concepts instead of "being okay" with not fully understanding it or the language it was meant to be understood in.
Much as autodidactic scholars hold themselves up to very high standards when reading about an author, they read the author's works in the original language they were written in - not in its translations (this is slight speculation because I don't know any autodidactic scholars personally, but I have read some of their articles).
Watering down is unacceptable. No argument here. What I do appreciate though is that advanced topics can be made reachable with a step stool, at least at first, before the full rung up the ladder.
That "being okay" with not fully understanding a concept grates me to no end too.
It's honestly incredibly condescending. That said, there are ways to be more clear without being condescending and without accepting that "okay" is good enough.
Take that math, for example. I've lost count of how many people I've run into who hate Calculus and the like because "it's so hard!" This tells me that the approach to teaching it was all wrong. I hated math too, cause it was big and scary, until I came across and awesome teacher who actually sat down with me and went over the basics with very careful attention to the language she used. There are approaches to teaching like this online I'm sure, but they're very few and far between.
As an aside, you can't be self-taught in psychology. It's like being a self-taught doctor: Being educated in psychology is predicated upon you having a degree in psychology, because it's a very certification-heavy field.
I would actually advise you to not brag about being "self-taught in psychology" because it's a very strong indicator that you don't know what you're talking about.
So...you're claiming that because something is certification heavy I can't be self-taught!?!?!?! Jungian psychology, freudian psychology, alchemical symbolism; ALL disciplines of personal understanding and understanding inter-personal relationships that have spanned hundreds of books on my bookshelf and years worth of self-application to become a happier more effective human being. I guess none of that was worth it because I don't know what I'm talking about!
Oy I might as well stop reading books then because claiming I'm self-taught in anything will make me look bad! No offense, but your comment made you look like you don't know what you are talking about. How can you seriously say to someone they shouldn't call themselves self-taught/educated in anything based on your criteria?
What the fuck would you call self-education then if reading books, becoming more intelligent, applying it to your life, and improving quality of said life isn't self-education? Self-education is something everyone does, even people that have been through a formal education. The difference is that they are choosing their subjects of study instead of having them chosen.
By the way, your analogy would be stronger if I laid claim to "psychiatry" rather than "psychology" - psychiatry is more akin to being a doctor; I do not ever claim to practice what I know on other people just as people that love studying physiology and medical text-books don't practice on people!
Oh, also, I was not bragging, I was qualifying myself for the commenter as someone who is self-taught so I wouldn't appear to be someone that doesn't know what they are talking about.
I think the "scary" part is the notation. Any competent programmer, whether schooled or self-taught, is familiar with the concepts if not the notation.
Thanks for the comment. I don't feel as though self-taught programmers have a bad name. I feel like they can lack some skills because the importance of them aren't lauded in their social circles. It wasn't until 5 years into my professional career that I was fortunate enough to work with someone with a computer science background, so the topics of Big-O never even came up.
I think computer science has a bad wrap for being useless brain-teasers used only in interviews (within a subset of the target demographic of this article). Through the bits I've managed to pick up, I feel like they contribute to a better understanding of programming on a broader spectrum.
While you may not see a body of knowledge that many people expect you to know (that you don't know) as scary, I can assure you that many people do. There are many similar topics that induce some amount of fear in me still: issues around multi-threading and race conditions, cryptography, deep understanding of networking stacks, and compilers to name a few.
I'd also like to point out some of the phrasing you've chosen. 'the idea that Big O is "scary" is just absurd' -> 'If you can't reason about algorithms, you may not be a very good programmer'. This is the source of fear among self-taught programmers (and the source of my own fear in the above examples). We all want to be good at what we do, so let's try to lift each other up! :)
I understand where you're coming from, but unfortunately employers read articles like these and use them as justification to solidify their notion that self-taught programmers are less knowledgeable or less reliable than their peers with degrees, and hence should be paid less or not be hired at all. I've experienced it firsthand. You may argue "that's not a place you'd want to work at anyway," but unfortunately in a down economy one does not always have the luxury of rejecting work on principle. If you've ever looked into the eyes of your cat dying of cancer and felt ashamed that you didn't earn enough money to bring him the proper care to extend his life, then you'd possibly understand that prejudice against self-taught programmers who didn't have the opportunity to attend a university can be a real problem. Playing into the stereotype that we're all afraid to learn and happened to get lucky in getting a job isn't helpful.
The work you're doing is wonderful. The problem I had with it is that a simple modification to it (not phrasing it in a condescending way toward self-taught programmers) would've made it so much better.
You keep repeating this, but that doesn't make it true.
Where I've worked and hired people -- in San Francisco and Silicon Valley -- there is little emphasis placed on formal eduction. Virtually none. Some companies have a reputation for liking degrees. Google, for example, but they are an exception.
I don't think a self taught programmer, who takes his craft seriously and learns not just practical how-to but also data structures and algorithms, is at ANY disadvantage in today's job market.
Well, you work in SF / SV. There's a whole Earth outside of those places. And those places are largely prejudiced against people who don't have degrees. I've experienced it firsthand.
"Well, move!" Except it's not that easy when you have family.
To be clear, I really appreciate the writeup. I just wish it had been framed better. It should be clear that this is for beginner programmers, regardless of whether they have a degree or whether they're self-taught.