6 ms·
I've been in software for 14 years without a computer science degree and carry a chip on my shoulder because I missed out on algorithms and compilers in school.
by alexquez 8y ago
I've been in software for 14 years without a computer science degree and carry a chip on my shoulder because I missed out on algorithms and compilers in school. I'm mostly self-taught and have had the opportunity to run a SAAS company for six years now (CodePen).
I'm winging it like many other people in our industry. I wish I'd had two things to when I started my career.
1. A right of passage that endorsed my skills as a competent developer (or that educated me on what skills I'd yet to learn).
Something equivalent to what doctors have when they receive a medical license and become board certified.
After five years on the job, no one cares about your cute degree but the 21-year-old version of me who knew nothing and was a tiny bit terrified of being found incompetent cared.
You are born with a level of confidence (unsubstantiated and unproven), but you can also earn it by doing a substantial amount of work.
A right of passage within the software industry that showed a fundamental level of competency beyond the fizz-buzz test would've worked wonders for the young me.
2. A formal mentor.
I spent years flailing within technology. I learned the wrong things, dove deep into the wrong technology (Java Swing :|) and made obvious mistakes. In retrospect, I would have paid to work for a capable mentor when I started who could have validated my work and guided my efforts.
Alas, software development is free, unregulated and open to all. That is what makes it beautiful. That is what makes it frustrating.
- kohanz 8y agoWhile I think you make excellent points, I believe that impostor syndrome is actually quite common, if not moreso, amongst the highly educated.
- jameshart 8y agoI’m sure you meant well, but this response really comes across as saying “dont worry, you don’t have imposter syndrome - you’re too poorly educated for that. You’re actually an imposter.” The point is imposter syndrome affects people who are high achievers but don’t feel they earned the respect that gives them. In tech, that high achievement status can be orthogonal to the level of formal education, so regardless of how highly educated someone is, they can look at their peers and feel like they don’t belong.
- optimuspaul 8y ago> “dont worry, you don’t have imposter syndrome - you’re too poorly educated for that. You’re actually an imposter.” I didn't get that at all when I read that.
- kohanz 8y agoWith all due respect, I think you're reading something into my comment that simply isn't there. Perhaps I should have denoted 'formal education', because the OP is educated, just not formally. The only thing I meant (beyond what I said) is that while there are many good reasons to pursue higher education, if one does so with the goal of ridding oneself of impostor syndrome, that could very well turn out to be ineffective or perhaps even counter-productive. I'm simply relaying my own experience to the OP. I work in software with a post-graduate degree and am also licensed by a professional engineering body and while it's not with me all the time, I do endure bouts of impostor syndrome as well despite these things that should assure me. It makes sense; now I've got these extra letters behind my name that I'm supposed to live up to - and we know how our minds can take that and place unreasonable expectations on ourselves. My experience, especially in higher education, was that the more I learned, the more I realized how much I didn't know. I noticed this amongst my peers as well. Some of the people I knew that suffered the worst had PhDs!
- robohoe 8y agoI think this is because you work with some tremendously smart people and as such end up feeling inadequate in our own knowledge. You're pretty much required to work at a certain level as there is some expectation of your knowledge from other peers.
- efigle2501 8y agoNice story. CodePen is awesome. How about trying a different story for yourself from now on?
- alexquez 8y agoGlad you like old CP. I'm extremely happy with where I am. My statement romances the mentor I'd had found. Sheepishly my ideal mentor is me with 14 years of software experience.
- Clubber 8y agoI was fortunate enough to have an outstanding mentor. What a difference that makes. We worked together for years on some really cool DSS stuff. We were constantly trying to outdo each other and it made us both better. As far as the degree, I'm sure you've realized by now that drive can compensate for just about anything. Also, everyone has to prove to themselves that they are good enough. Once that happens, results are limitless.
- ams6110 8y agoI have a degree but honestly can't say I've ever really used anything from algorithms or compilers courses on the job. Nobody (meaning, very few people doing mainstream startup/SaaS development) writes fundamental algorithms, you use libraries and classes from the language you're working in. Most people don't work in compiled languages anymore, and if they do, they don't write their own compilers. Maybe understanding the concepts from these courses helps. But despite having a degree I often feel that I am (to quote TFA) not really “clever enough” or “good enough” or “well-rounded enough” or “deep enough” in their discipline. Almost everything I do day-to-day I did not learn in school, I learned by flailing around for a while, reading documentation, and gradually working things out. Yet I don't feel anxiety over it, because I get my work done, and can see that I accomplish more (in some case a lot more) than many of my peers. Yes, there are also some others who are clearly better than me, but that's life.
- jontayesp 8y agoDon’t most career fields come with important knowledge you learn as a junior, but don’t actually use on a daily basis? I assume doctors learn a huge variety of things in school, but practically don’t use more more than 50% of that knowledge on the job. But having this knowledge makes you better at your job overall. I never got a CS degree, but I wish I did. There are times I run into obscure issues where deeper knowledge of the compiler, os, etc would help me understand the problem better, or how to design my code better.
- always_good 8y agoThere's nothing in a CS degree that you can't brush up in a self-study. For example, I have a hard time believing my compilers class at UT serves me better than someone taking one of the compiler MOOCs I've seen people mention on HN from time to time. Especially since it was 10 years ago. The class cost me over $2,800 too. It might be tempting to think a CS degree would help you know more about things you don't, but I think it can be an excuse to not just dig into it yourself. It's not like CS majors graduate with an understanding of OS and compilers in the wild they'd have to actually debug.
- knightofmars 8y ago> dove deep into the wrong technology (Java Swing :|) For someone, such as yourself, who has been in software for 14 years I'm surprised that you'd write these words. Most people I've met with your years of experience realize there isn't a "wrong technology" there is a "right technology for the problem" and a "right way to use a specific technology". I suspect you're applying hindsight bias in thinking, "I could have gotten to where I am sooner if only I hadn't done the things I did and instead done these other things." For all you know you might have found a mentor who pushed you to be better at Java Swing and you could have been the person to "fix it" so to speak.
- Cthulhu_ 8y agoSecond, what were the alternatives at the time? I mean I'm sort of a web developer and work in React and such, but do I feel regrets about having spent a year and a half building an application in Backbone? No, because I know back then, React and Angular and such were non-existent. Besides, most software, especially front-end, has a very short half-life and it's not unreasonable to believe you'll rewrite the whole thing every 3-5 years anyway. Write front-end code like you'll throw it away, write core back-end like it'll drive your business for the next decade or so. At least the database. (Of course, as I found out later, Angular had been in development for years before work on Backbone had even started, but it wasn't a google project or well-known at the time).
- alexquez 8y agoPointing out the tech I used at the time is a bit of a red herring for the argument I was making. The point I should have made was that I focused on the technology instead of the fundamentals of software. I was obsessed with learning the tech that that existed at the time instead of learning how to craft software in general with the least amount of complexity. I wrote a website that got 10 visits a month with Spring and Struts. I had simpler options but was pretty convinced everything had to be "enterprise grade". Today, if you had to build it, you'd build a static site. I learned quite a bit from these mistakes. My argument does romance the idea of a mentor that was hyper-intelligent and cared about my career. Mistakes are always made. Mentor and mentee alike. C'est la vie.
- jkereako 8y agoEven folks with degrees in CS are still self-taught, they just got a guided head-start. All intellectual fields require constant study and practice.
- optimuspaul 8y agoLife-long learning, that is one of the key attributes that I look for when interviewing folks.
- flukus 8y agoI think it's the other way around for most, they gave themselves a head start in their teens and then got some guidance at university.
- kendallpark 8y ago> Something equivalent to what doctors have when they receive a medical license and become board certified. In the US this requires four 8+ hour exams, spread out over at least seven years of training; each exam requires months of preparation. I have a hard time imagining most programmers would elect to jump through those sorts of hoops just to feel more confident about their jobs. > In retrospect, I would have paid to work for a capable mentor when I started who could have validated my work and guided my efforts. I think this idea definitely has some merit. I was very fortunate that my first big job after getting my CS degree was on a very agile team that leaned toward the bleeding edge. I wonder if there could be a way for programmers to rate the development environment of certain companies.
- deleted 8y ago[deleted]
- Raidion 8y agoI think a better equivalent would be something like the FE exam that mechanical engineers take out of college. It's given right at the end of college, but could be given at any time for self taught programmers. Hard part is implementing the test to be (almost) purely problem solving and agnostic of language.
- CoolGuySteve 8y agoActuaries go through something similar with the SOA exams. It seems to be effective but maybe actuarial science changes more slowly than computer science.
- pbhjpbhj 8y agoAre you mentoring someone now - is it on a commercial or personal basis? There are a lot of certifications in computing fields, why don't they meet the need you felt (feel?) for objective acknowledgement of your skills? (From where I am they all look like primarily commercial efforts rather than efforts to provide objective recognitions of standards/abilities.)
- wolfgke 8y ago> After five years on the job, no one cares about your cute degree but the 21-year-old version of me who knew nothing and was a tiny bit terrified of being found incompetent cared. If you feel that you know nothing, this is good, since then you know that you have a lot to learn, which you will hopefully do then. I thus consider it as dangerous if one does not feel dumb all the time. > I spent years flailing within technology. I learned the wrong things, dove deep into the wrong technology (Java Swing :|) and made obvious mistakes. Also the mentor will just tell you about what is trendy to him/her at the time. So be honest: You rather look for a person to pass the responsibility on for the things that you did wrong.
- zaphod12 8y agoIf you want to take Algorithms and Compiler courses, Stanford, Georgia Tech and many others have great options online. I don't think it'll help at all - I've got a bachelors in computer engineering and computer science and masters in computer science and feel pretty similarly to you (and know plenty others in the same boat as I am) - but the option's there. I actually did my MS for this very reason. I enjoyed it very much and learned a lot, but it didn't help the imposter syndrome.
- base698 8y agoWhen you say self taught do you mean you bought a data structures book and read it yourself with no lectures?
- 52-6F-62 8y agoNot OP, but that's certainly one way some of us learn. Usually you combine methods— supplement knowledge from various streams to gain a fuller picture. There are also a ton of other great online courses and videos of lectures for free online (these days). REPL's are also great tools for running exercises to test your knowledge. It's hard to lie to yourself— if you care— you either begin to understand or you don't. If you don't, your work will suffer. I cared— but I was inclined to. You don't sit in the basement as a kid trying to get your mum's old 80286 to do something after you found the BASIC prompt because you want to play ping pong all day.
- nso95 8y agoI'm about to finish up my CS degree and I couldn't implement most algorithms and data structures without looking them up. I know nothing about compilers. Never taken such a course.
- linuxlizard 8y agoCompilers are a lot of fun; I did compilers in grad school. I regret not taking more EE courses. I would expect we all think about the classes we wanted to take but didn't. :-/
- w0m 8y ago100% agreed. 18 y/o me was an idiot; i'd have done thing significantly differently.
- always_good 8y agoFrankly, had I known I would be where I am today by my own whims, I would've majored in something like philosophy, not taken more compsci courses.
- kazinator 8y agoExcept for perhaps the most trivial ones, and ones that exist in many variations, you shouldn't implement algorithms and data structures without looking them up. I would add, without looking them up from more than one source.
- swat535 8y agoThank you for creating CodePen. Others have mentioned, it already but I feel like I must echo the same sentiment. I finished a 4 years CS degree years ago and I can honestly say that throughout my career I never had to create a linked list by hand. Quiet frankly, knowing how to implement a heap with your eyes closed doesn't mean anything. Running a successful SAAS for many years and scaling it on the other hand, is far more of an impressive accomplishment. Kudos to you.
- ahtu123 8y ago>I spent years flailing within technology. I learned the wrong things, dove deep into the wrong technology (Java Swing :|) and made obvious mistakes. In retrospect, I would have paid to work for a capable mentor when I started who could have validated my work and guided my efforts. I think this is inevitable. We're lucky to be living during a time that has been extremely fruitful and revolutionary in programming languages and technologies. I spent many years on Flash and Silverlight but I don't regret it. Most of those skills transfer to other domains easily. > Mentor- Yes. Even after 10 years in the industry I feel like I'd love to have someone to poke me in the right direction every now and then.
- always_good 8y agoAlso, using technologies I ended up hating and/or experiencing the limits/downsides of is what compelled me into new, wildly different ones. I think stagnating is the danger, not learning the "wrong" things. The latter is an important part of gaining perspective.
- ahtu123 8y agoHaving experienced so many platforms with 0% thought put into how does this work on more than one platform certainly gives me a huge appreciation of stacks that are built multiplatform from the start. I don't see myself jumping deep into any tightly-coupled-to-one-machine tools anymore for example.
- pascalxus 8y agoMost of the things taught in a CS degree or Math degree are simply too specialized to be useful. Sure, everything therein can be found somewhere in the industry. But, for the vast majority of us, we'll only use a tiny percentage of what we actually learn. On the other hand, there's sooo much you do need to learn as a SE that's not taught in a CS degree. If you drew a Ven-diagram between what you learned in school and what you actually need to do the job, you'd find very little overlap. We really need a new model for how we think about education.
- bitwize 8y ago> After five years on the job, no one cares about your cute degree but the 21-year-old version of me who knew nothing and was a tiny bit terrified of being found incompetent cared. True for the most part. But having a degree from the right school opens doors that you would otherwise have to devote years of self-study and aggressive marketing to, magbe, have a chance at prying open. If yoh want to build a career at Google that doesn't mainly consist of grovelling around in AdWords, step one is to have graduated from a God-tier school (e.g., Stanford).
- chairmankaga 8y agoHow would you find such a mentor? So far every job I've joined since finishing school in 2012 I've been the "smartest person in the room". It's been incredibly frustrating to not have peers to learn from technically. It was so bad that I left my city (Recruiters and the jobs felt very toxic to me) and became an expat, started self learning what I wanted until I could consult enough to sustain myself. Now I joined a large company for a large project in asia and I'm STILL missing people I can learn from. I'm reaching my 30's, and have only worked at small to medium places with near zero mentorship.
- slededit 8y agoSome people would question your experience, and there is a chance that you are failing to appreciate others. However you may also accidentally be the big fish in a small pond. If that's the case try to get to the bigger pond. If you get to one of the big tech companies and find even there nobody is competent enough to mentor you then your either a genius or oblivious.
- chairmankaga 8y agoThanks, you're 100% correct and when I recently explained my history to startups out here they have the exact same reaction. I've been jumping from small pond to small pond until now. This large company's project is outsourced to over 30+ people where none of the devs have even touched React and come from an Enterprise Java background. It's 6+ months and late, when really the product would take a team of about 8 to do in 4 months. I come in and suddenly I'm tech lead managing and mentoring others. I understand even this post feels like I'm unappreciative but it wasn't until two months ago that I had a teammate I could feel happy working with rather than me mentoring them. I don't consider myself great or a genius, but this pain of knowing you can only teach yourself so much has bothered me since my first job. Hence, how does one find a mentor?
- slededit 8y agoI was serious, if this is actually the case you literally have to go where people of talent congregate. As you increase in skill those places become fewer - you may have to move.
- smsm42 8y ago> dove deep into the wrong technology (Java Swing :|) Over my career, I have worked with so many technologies nobody knows about now... That's the part of the game. That's like working for a startup that didn't work out - of course, it's worse that being employee #3 at Facebook, but if you got to do some cool stuff, got paid and learned from the experience - you are still not too bad. The experience will be useful the next time, often in ways you can't now even predict. Including "no, this doesn't work - we tried it at $JOB-2 and it was a complete disaster" :)