8 ms·
> I knew nothing about data structures or algorithms but I could write a Ruby program.Now, three years later, I am taking online classes to learn about those is
by Ologn 11y ago
> I knew nothing about data structures or algorithms but I could write a Ruby program.Now, three years later, I am taking online classes to learn about those issues. The more advanced I got, the more I needed those "basics."
Data structures are not basics. Self-balanced binary tree graphs are not basics. More basic than that would be to learn what a graph is - Euler's bridges, Dijkstra's shortest path. More basic is the initial introduction to the concept of the graph and the set in discrete mathematics (as well as other discrete subjects like logic, combinations, probablility etc.)
Algorithms are not basics. Bresenham's line algorithm is not basic. More basic is theory of computation - Turing machines, lambda calculus, mu-recursive functions. Automata theory, complexity theory, computability theory. Basic does not necessarily mean easier, sometimes the abstractions can be harder to grasp. What is the complexity of your algorithm, what's the worst case big O notated case? How is big O notation determined? Can you even know what an algorithm is, or compare algorithms without knowing these things? Then more basic than these things is the math such as calculus you may to determine some algorithms.
Frankly, if when "looking back at myself at 18, there is no way I would have made it through a CS course. I had no motivation for school" , and then you study Ruby for three months and get a job and are now taking online courses - I would be very skeptical of how deep your knowledge is.
You're honest enough about what you did. There's also nothing wrong with being in a situation where you don't have the opportunity to study CS intensively for four years under professors and grad students who have published papers in the field (although "no motivation" sounds worse than "no opportunity at the time"). There's nothing wrong with being lucky enough to bootstrap yourself to your current situation, there's everything wrong with fooling yourself that in five years, that kid in his third year of CS right now, who is dedicated to studying the things I mentioned, and who will study it next year, and who will then get a job and work for four years. In five years he will be ahead of you. He has a foundation that you don't. He will have a confidence you won't. As an interviewer I will be able to tell this.
My advice would be to look at local public colleges and see if any are good. See what their CS programs are, how they deal with night/weekend students for CS majors (some required classes may be on a weekday at 1 PM) etc. See what the pre-requisite graph is. Then take one class a semester, at night or on weekends. It will be one or two nights a week. Maybe take an easy non-CS class first like art appreciation or something. Note they often put one of the hardest courses for CS (like Calculus 101) as an initial pre-requisite for all CS classes to weed out "unmotivated" people from burdening the school CS program. Keeping on the topic of the weed-out class though - if you struggle over Calculus 101 like we CS majors did, to where you're even thinking of dropping out - wouldn't that be a sign that we were learning things in school you didn't know? It's not a laugh a minute to do Cook Turing reductions of NP problems in order to show similar properties of problems - but it does help in understanding fundamentals of CS.
It is better to think about this sooner than later. People do these things when they're in there teens or early 20s because it's easier to do then. You really don't want to have this revelation after you have a child or two, and are having trouble finding good work because of no diploma and lack of fundamentals. One bonus is the diploma is not the only payoff - even halfway through school you'll be a better programmer, more attractive to some employers, will have met interesting professors and students (if you put yourself out there) etc. You get out what you put in - professors like students who pay attention and do well, and can be helpful.
- MangezBien 11y agoI forget how much I hate Hacker News sometimes. Thanks for reminding me. > (although "no motivation" sounds worse than "no opportunity at the time") 18 was ten years ago. I was playing college football, thinking I was going to go pro. I was an idiot, but I got a college degree. I then went on to have a career in a different field, grew up a little and taught myself to code. I've been working in the industry for three years. I have a long way to go. I spend every evening either a) doing homework for an online course I'm taking from Rice (through Coursera), b) Going through a self-directed course I've made consisting of various text books/academic papers, c) actually writing code. Seriously, fuck you for acting like the only way to become a respectable or successful developer is the path you picked.
- Ologn 11y ago> Seriously, fuck you for acting like the only way to become a respectable or successful developer is the path you picked. Can you name me the respectable, successful, known developers that did not get a college degree? I mean, I can think of a few who were in the math/CS program of a top-tier school, who started a company on the side that took off, and dropped out since they were already on a rocket ship. I can also think of a few like John Carmack who just dropped out, but would still fit that category. Although...Carmack has been very straightforward about what he knows, does not know, and is learning, and sometimes I'm surprised that he is just learning a topic I had already studied indepth as an undergraduate. While people like this are few and far between, I can name many more successful and respectable programmers who have a college degree. Who are the majority. I look at this equanimously, while you seem to take it very personally. In my experience, those who spent four years at college studying calculus, computational complexity, backtracking, 1st/2nd/3rd normal form, how floating point numbers are stored in memory etc. are usually better than those who have not. That doesn't mean someone who slacked through school for four years is always better than someone who did not go to school for four years. It just means more often than not, someone with four years study of foundational computer science is better than someone without it. You said you've been at this for three years - so 2012 or so. The tech economy (and to a lesser extent the broader economy) has been booming, as can be evidenced from stories here on HN. You seem to be getting upset...over a comment on HN! Let's see how you do when the economy tanks like it did in 2008-2009. Let's see how you do when tech jobs crash with the dot-coms like they did in 2000-2001. When suddenly the few job postings which appear will say "BSCS required". Why wouldn't they, because in those times, they'll still be flooded with dozens of resumes with people with BSCS's. By then you may have a mortgage, a car, two kids. Your argument is not with me. Here's a line from a job posting on SF Bay Craigslist - ( http://sfbay.craigslist.org/sfc/egr/5278943482.html http://sfbay.craigslist.org/sfc/egr/5278943482.html ) "Senior Application Engineer @ Slack...Here are a few extra things that would lift you up a couple of notches in our eyes: * Academic background in computer science (BSc or MSc)" That's the #1 thing they have on their "nice to haves" list. I can assure you - when we go from these go-go unicorn times to a 2000-2001 or 2008 recession, at a time when you need work the most, I can guarantee you that their #1 "nice to have" will move up into the required column. When the economy takes a dive like it does every eight years or so, and you have a mortgage and two kids, and you're a fifty-something unemployed coder with no degree and gaps in his technical knowledge who refused to take the bull by the horns at a time when you could have (two night class a year over twenty years would get you a degree by the age of 48), you will look back in enormous regret that you did not spend 90 minutes twice a week going to night class to earn a BSCS.