Dear undergraduate hacker
Just to give you a vague idea of who I am: I just graduated with a degree in computer science with honors at a decent school. I'm now working as a full stack web developer at a startup. I did two internships at large tech companies and a bit more mildly impressive work.
I'm realizing now that I made a lot of mistakes with my education and I want a change in direction. We all know that making mistakes is good, but sometimes you will make one misstep after the other without realizing until you're far from the right path. Being in school doesn't give you enough time to reflect and I was even afraid to do so out of fear of sounding naive. I'm guess I'm glad I'm having these realizations now, but I still lost out on critical time. My perspective won't apply to everyone (most programmers do seem genuinely content with their career, and that's ok with me), but on the off chance it might resonate with a few people, here goes:
1. Nobody cares that you work at a prestigious tech company that gives you ~cool benefits~. It's true that nobody cares about most of what other people do with their lives, but do not let Google/Microsoft/etc. sell you hard on the career. This was what drew me further into CS: I didn't know what I wanted to do with my life and these predatory companies convinced me on going towards a seemingly good-looking lifestyle. I should have looked around more instead of just holding onto the first thing that looked semi-decent. I know that "software engineer" is on the top of every top ten careers list and that you have reason to believe you are subject to the same statistics of what constitutes an enjoyable job as everyone else, but you really need to do more self-exploration than that. How in love with the field are YOU - not what your peers/family/friends (especially most of whom aren't in it) think it's cool that you can land a job at a well known place?
2. I hated my peers in undergrad and I hated working on projects with them. These projects were frighteningly representative of what work-life is. I always excused my misgivings with group work as something that would pass in the real world. Just because you graduate you won't magically enjoy their company or your work with them: your peers don't really "grow up" and the code doesn't get that much better. (Side note, ask yourself: do you really care about good code? Good code can be great to read, interesting, and make your job a hell of a lot easier, but is it really something you want to be remembered by? To structure your life around?) If you can't make friends in your classes, consider if you actually want to like them in the first place. I'll admit that being better at things so-called-nerds said they were really good at was entertaining but it's a terrible reason to be in this field.
3. If you like CS because it's "math with a practical/creative edge", application development will kill that wonder dead. If you worry at all when other programmers talk about programming just being an exercise in gluing libraries together, in a lot of ways it is. There is little intellectual satisfaction to be had from contorting bytes.
4. Learning new programming languages is extremely fun at first but exasperating and repetitive after a while.
5. I'm not really sure I need as much money as I'm making to be comfortable. At some point I just became addicted to comparing salaries at various companies/jobs, but it seems to be having very little impact on my life. I'll admit that my attitude towards this will probably change, but still.
6. If you have any misgivings about capitalism or being involved with a business at all, don't push those feelings aside. (The company I work for is mostly employee owned and I still hate it!)
7. If you get into a deep discussion about programming and you're surprised by how many things you know that yo...
31 comments
[ 3.2 ms ] story [ 81.3 ms ] threadWith that being said, a lot of your remarks about bad parts of the industry are subjective at best, and just seem like an artifact of the situation you were in. I love CS, and do it as a hobby, and have not had anywhere near the same kind of experience you have had. I had a contemplative period like this as well, but figured out that we do the things we're interested in and enjoy whether we realize it or not. If you do something as a hobby, chances are you like doing that thing.
In any case, good luck on your quest to do something you enjoy better!
HN frequently encourages people to go deeper into programming/technology when I really needed someone to tell me to explore around. My intention was to do just that for someone else.
> Nobody cares that you work at a prestigious tech company that gives you ~cool benefits~.
If you're taking a job to impress other people, you're doing it wrong. The only people that really care about where you've worked are future employers.
> These projects were frighteningly representative of what work-life is.
Fairly true, except in the workplace you can count on other people to be marginally competent. In some cases the code is great, and in some cases it's awful. But in the vast majority of cases what counts is not whether it's "good" or not, but whether it works.
> There is little intellectual satisfaction to be had from contorting bytes.
Maybe you're referring to something else, but I find the process of constructing something functional to be immensely satisfying.
> Learning new programming languages is extremely fun at first but exasperating and repetitive after a while.
Never gets old for me. There's always something new and unique in each language.
> but it seems to be having very little impact on my life.
The more money I make, the more I can save, which means the faster I can become financially independent. Although I do enjoy my job, I wouldn't do it for free. I want to spread my time out across all my hobbies rather than tying 40 hours a week to one job in particular.
> If you get into a deep discussion about programming and you're surprised by how many things you know that you don't care about, really consider what that means.
Good point. It probably means you don't really care about programming in general. I love the fact that I know the quirks of python generators, or C++ keywords. I just love understanding systems in their entirely, from top to bottom.
> Find something you're actually passionate about and use programming to do cool things in that area.
Couldn't have said it better.
> Entitlement, lack of compassion, materialism, and (surprisingly) anti-intellectualism is the norm.
I haven't found this to be true at all. Intellectual pursuits are very commonplace in my tech workplace.
In other words, you may dislike your programming job, but you may not necessarily find a career track that'll make you any happier. Best of luck in your search though.
However I must admit, this is what I love. I like CS because it's like 'math with a practical/creative edge', and the experience I've had working as a software developer at 3 companies so far has only confirmed to me that this is what it's all about. I tend to choose companies with interesting problems to solve, and that's what I enjoy doing.
I enjoy working with other developers, both at university and in industry, on projects, and collaborating on problem solving. There are many aspects of the startup culture that I've seen myself, or read about, that I don't like, but I don't feel like I have to work in that area. When I get deep into discussions about programming, I'm surprised how many things I do care about, and often surprised when I find out that some of my peers don't care about them. I don't care about the cool benefits, I just want to work with amazing people, on interesting projects, and earn enough to not worry, and from what I've seen, I don't think I'm going to have a problem with that.
Students should read this warning, but if you do, and it doesn't ring true with you, don't feel worried about 'burning out' or losing interest, keep doing what you love.
There was a study a little while back that found on average, increased salary leads to increased happiness, but the growth in happiness stops around $70k.
Now, inflate that number a little to account for cost of living in the Bay Area (where many HN readers live), but I believe it. Once you can afford the important things, further increases do not bring the same compelling quality-of-life improvements as (for example) being able to afford a comfortable domicile and a reliable vehicle.
If I didn't have to worry about all of those things, nearly every aspect of my life would be improved. As you said, once we take care of the important things, everything else becomes merely a "nice to have."
Think about how someone else who felt the same way as the OP would write their thoughts -- it would probably come across as a complaint, whereas this post comes across as a mix of introspection and advice.
I'm sorry to hear you didn't make more of your university education, but don't discount the value of the skills you learned. Even if you don't end up being a programmer, you will hereafter always be able to speak with, collaborate with, manage, and direct a class of powerful wizards who manipulate the flow of information in society. This can be a powerful asset for you in whatever other career you end up building. Think of it as a superpower that will give you a distinct advantage in the world.
If you want to chat about this stuff, feel free to send me an email: skiptracer at gmail.
Overall you have good points though for people early in their careers/education. People should consider their motivations honestly before devoting a lot of time/money/effort to it and it's easy to be blinded by other factors. In the end, most people who make it through a CS degree and entry level jobs to excel in software careers seem to really enjoy programming itself. Others who get into it for money or family pressure usually end up as mediocre or below-average programmers (which is probably fine btw, not everyone needs to be awesome at what they do nor do they necessarily have to like it).
1. You don't really have to work for anybody so you can sort of do whatever you want. The costs associated with starting a software related business are almost zero. That is basically not true in any other field.
2. Programming isn't an end in itself unless you want it to be. People learn to wood work in order to make things, just like people learn to program in order to make things. I have mostly never learned anything CS related unless I specifically needed to learn about the relevant topic in order to make something, or check the security of it, or try and learn a faster way to make it. With the exception of some of the higher math stuff this method will teach you nearly everything you really need to know. It sounds like you have already taken up through linear algebra so the math part is covered.
So if you hate making things than I guess CS isn't for you. But right now I would say programming skills allow you to make more things in a wider variety of areas than any other skill set.
No one is forcing you to make a stupid app. You could be doing microcontroller programming in a subset of C or even assembly if you want to be involved in making almost every modern device. You could try and make something like google glass, or the oculus, or a lifesaving medical device. You could involve yourself in the world of 3d printing. You could do molecular simulations to push science forward. You could make videogames. You could work with bitcoins. You could probably work on rocketships if you hit gradschool for maybe 2 years.
You can start a business if you want and do more of the client facing stuff.
With programming the possibilities are really open right now.
At my last job I wrote firmware for an embedded device that served as a bridge between household appliances equipped with low-power radios, and our company's Internet servers. Right now I'm working on mobile applications for a large Silicon Valley tech company (and I work with both web devs and server people every day there).
The challenges, goals, tools, work environment, and sense of accomplishment between those two jobs were/are so different I can easily see why someone would flourish in one and be stifled in the other.
I truly love what I am doing as I am making a difference in the work that I do, and I know of others in the same boat as I am.
One advice, get the F*CK out of there and actively find something that you like doing. I am guessing that you are in your mid-20s. This means that you still have plenty of "runway" in your life to explore other things to do. Explore before that "runway" shortens to 0.
Good luck!
I did this with an independent major in civic technology. It included a lot of CS (enough to get a good foundation plus more advanced classes in applicable areas), political science, statistics, civic media, and some sociology and social philosophy. The major was much more interesting to me than pure CS. I also learned a lot about the specific area I'm now working in from multiple angles, far more than if I had just been studying other fields in my spare time.
1. You were never really in love with this discipline
2. You thought that things would "get better" as time passed
I'm not totally sure I won't end up feeling like you do, but I do think my odds are good.
I know that I love CS, really love it. Everything, from gluing libraries together, to understand the beautiful math behind it all. From the lowest levels of gates and electricity to the most abstract applications, I find it sublimely beautiful! I spend almost all my time thinking about programming, thinking about problems, wondering how I can do different things. Every day I learn about something (or many things) that expand my knowledge and add to the parts of this elegant world I can already understand.
Something I realized pretty recently is:
I honestly hope I can spend all my life doing this, because it's what I love.Even if you are enjoying the hell out of it I would encourage you to still try other things - the opportunity cost of taking a few unexpected things is negligible and you could gain a lot of value out of that rather than grabbing a few more (somewhat redundant after a point) CS electives.
Now I should state that swapping out of CS does not mean I no longer work with computers/programming. On the contrary, now I can use it to whip up solutions in every other field that most of those practitioners can't, and if there's one thing working with economists/mathematicians/statisticians/scientists teaches you, its that they can't program something efficiently to save themselves. In my darker moments I wonder whether all the supercomputer hardware at CERN/Universities/Government/Corporates is just bad algorithms/code that runs 5000 times slower on hardware 500 times faster...anyway...
I got out of CS at uni because it was very clear that the university was there for an industry. I loved the systems/art of programming, so I imagine it was a bit like going along and enrolling in a painting course with hopes of doing the Sistine chapel, only to find that most of "painting" was actually about how to cover the side of a skyscraper or a house. Same words, even very similar mediums...different realities. Not why I started working with computers.
Two other aspects come to mind. The first: the hyper-capitalism/money-making/app-writing/insecure ego/self-help-you-can-too!/superficial/start-up culture. I realise that hacker news is part of y-combinator, which is also part of american culture (yes, i went there), so you're going to get a lot of suck up children who really just want to be rich/popular/important, but my god I can't think of a more brain-dead boring topic filled with so many repugnant people. Is there anywhere that's like hacker news with the whole start-up/get rich quick element removed? Cause that would be lovely :P
And the second is that anyone who thinks that university or work is going to magically lead to or remove you from some sort of otherwise compelling or fulfilling life is smoking some powerful crack. Work is work, and its going to pretty much suck, and a lot of the labour-as-meaning-of-life-protestant-work-ethic-consume-be-rich-go-into-debt is basically social indoctrination to provide a nice supplicant workforce.
Life's big and complicated. Stress over the fact that you've got a lot of control over what you want from life, which means you can do a lot of things that other people say you shouldn't. But don't stress over notions that studying X at university/working at company X is going to lead you to ruin or fill you with regrets. Its really not that important in the grand scheme of things...
Your experience underlines a post I wrote recently about the underlying topic that exists here. People seem to concentrate on end goals, vs process. If you think you will start enjoying writing software, you probably never will. You won't wake up and suddenly find a new language that inspires you. In my experience it is the people that enjoy process, and challenges in the CS discipline that truly succeed. An appreciation for process, details and the ability to work in many different areas is something I cherish.
I would step back for a while. You might find that you do enjoy things more than you realize. Time away from something, doing something else can trigger a greater appreciation. Take a step back. You might also take a look at the alternatives. While you mention briefly the idea that you should "do what you love", I might be careful with that statement. Society has lied to you that it is always possible to do this.
Well, a lot more could be said...
The point is not to mistake boredom, lack of passion, burn out for hating your current career. There may be legitimate reasons for hating it of course.
An early stage human rights start-up in East London (still in the fun garage shed stage!), is looking for a developer or CTO. The start-up focuses on addressing a significant gap in the security of human rights organisations, journalists and activists - through the use of a mobile application. It builds on years of cutting-edge security operations in this field.
With the product features and business plan nearly complete we are looking for the right person to bring us to the next technical stage. Ideally you will be in London but remote working is also a possibility.
Interested? Drop a mail to secfirstmd@gmail.com