Hacker News new | past | comments | ask | show | jobs | submit login
Dear undergraduate hacker
63 points by koof on Oct 19, 2013 | hide | past | favorite | 31 comments
This is both a warning and a cry for help.

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 you don't care about, really consider what that means.

8. If you are trying lots of CS electives in school and you're not really enjoying any of them, don't fall into the trap of thinking that you just haven't gone deep enough yet. Get domain knowledge in something else. Having /skills/ is nice but you probably want a (more complicated than just business logic) knowledge base to apply it to. Find issues you're actually passionate about and use programming to do cool things in that area. Take courses in something completely unrelated or something you don't think will be useful, it's better than clawing at nothing.

9. If you can't come up with an idea for an app because you can't stand the idea of making something so meaningless, just remember that you will be making someone else's trivial app.

10. Startup/tech company culture is vile. Entitlement, lack of compassion, materialism, and (surprisingly) anti-intellectualism is the norm.

11. If you think you can survive in the software industry by simply escaping into your other interests/friends/relationships: you can't. This was probably the biggest reason I didn't realize I had so many problems with software development: I was too distracted by the rest of my fairly enjoyable college life (except of course for the actual courses I took, almost all of which were CS electives). When you start working and work becomes most of what your life is, then you'll realize just how important it is to actually "do what you love". Love is not forced, and sticking around longer to see if love comes back rarely works. More is not going to fix things. Expand your horizons in every part of your life and don't take your unhappiness for granted.

As for me, I'm not sure exactly what I'm going to do to get out of this just yet, but I'm imagining that it means I should go to school in some capacity. If there was one thing I could tell every undergraduate CS major, it would be to double major in anything else and do as little CS as you feel you can get away with. There's so much more you can do. Don't be terrified of not getting a job, you're pretty much guaranteed to get one with that CS degree even if you weren't dedicated to it 100%.

I hope this gave perspective to someone, but any advice a wiser person could give me would be much appreciated.

It's good to hear you're finding why you aren't happy in your work, and figuring out what to do, I wish you the best of luck and hope you find something you really love.

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.

I'm sorry to hear you had this struggle to identify with what you like, but you seem like you've worked it out to some degree. It sounds like you just didn't enjoy CS and got stuck in the field. That's fine, but it's not indicative of the field as a whole. If you hate something fundamentally, you find everything about it wrong in your mind.

With 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!

Thanks for your perspective. I don't claim to speak for everyone. I thought I was enjoying programming with just a few reservations that I could live with, but ultimately these problems became to be too much. The echo-chamber of love for the field, or "if you don't like it you just aren't tough enough" kind of talk really made me just feel like a whiner, especially considering I was pretty decent at it and received a good amount of praise/money for what I was doing.

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.

Interesting thoughts. As a professional software engineer (~7 years working) I disagree on a few points.

> 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.

My TLDR for the post was "I don't like programming"

Computer science seems like the dominant choice for me when faced with a decision mostly based on ignorance, in the terminology of decision theory. (It's at least as good as any other option and is better in at least some areas.) I enjoy the benefits of more course freedom than engineering and relatively good job prospects. If it turns out that I despise coding for a job, I can change directions via grad school as I'll be taking more mathematics courses than the minimum requirements; moreover, it may be the case that I would've hated doing X for a job for most X, but it's not practical to actually try most X before arriving at a more definite conclusion.

My advice to you is this: find a way to focus on the positive in life, not the negative. Your post seethes with negativity, resentment, and a false sense of superiority. If you take that attitude into whatever you do next, you'll probably find yourself in the same situation.

Huh. It's funny you say this, because I got the opposite impression from the way the post was written. To me it came across as being written by a deeply positive person putting all their negativity in one place. The way they got to where they are now was by staying positive in the face of many small persistent negative things.

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 guess I don't understand because...

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.

This. There is so much more to software engineering/CS than building web sites (not that there's anything intrinsically wrong with that, either).

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.

As someone currently pursuing a CS degree, thanks for writing this advice out. Here's my initial judgement:

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'm really lucky to have something that I want to spend every day working on.
    Almost no one else gets that, especially so early in their life.
I honestly hope I can spend all my life doing this, because it's what I love.

I was in the same boat for a while, I really enjoyed everything and couldn't get enough and was immensely satisfied. I was feeling so great about it initially so when things started to go south, I thought I was in a rough patch and would make it out back to those initial feelings, or that they were just issues with my education/specific situations I was in, and so on.

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.

While I agree that you need to think deeply before making career choices, I disagree that you're necessarily on the wrong track if you end up in a job that you find boring/meaningless. It's normal for people to discover that all the decent job opportunities open to them have some serious cons (especially in a bad economy with fewer options), and it's often a matter of picking the least of all evils.

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.

Seriously. There is no nirvana out there, no matter what degree or field. Be happy with yourself and with your work.

Your post focuses on what others are saying. Why are you so worried about why everyone else likes CS? "You can't stand the idea of making something so meaningless". Get out of the valley, people all over the world are using software and technology to solve real problems. If you are looking to "do what you love", why not instead focus on the impacts of your contributions....you seem to highlight this as important. Here is a neat project to apply for: http://codeforamerica.org/. OR go teach CS to other students in High School: http://www.teachforamerica.org/.

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.

This is why I'm doing mostly stuff unrelated to CS in school (linguistics, philosopy, etc..). I don't feel it's a good use of my time to take useless courses, though I am thinking of double majoring in CS and Linguistics. I agree with the OP about startups, they're mostly dull, stressfull, and immoral, and I have worked at one that was probably better than most and still found it basically immoral because of how they wanted to treat user data.

I found a nice compromise: my school offered a B.A. in Computer Science. I already knew how to code very well, and this was really great for me because I had to take the fundamental academic CS courses (mathematics and theory) but was able to skip out on most of the applied electives I'd already been well familiar with (I didn't exactly need to take a database class).

This was what I really wish I had done. I tallied up all of the electives I didn't need/benefit from on top of the B.S.: it came up to around 12 courses, enough time to fit another major and more. A B.A. would have cut into that even further, but I was worried about the perceived harm it would have on me in the job market, even though now I realize that was such a false fear.

I was worried about the same thing, and I thought a lot about switching. Ended up keeping it because I enjoyed my other classes more, and got lucky in that nobody cared.

I dropped out of CS in the first year, switching to design, and it was a great decision for me. I did make the mistake of trying to work as a UX designer and programmer for a year after school, and thanks to that I share all of your misgivings about the industry, but after a lot of searching and networking, I've been able to carve out a career for myself on the periphery of the tech industry that suits me well.

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.

The suggestion about finding another area and using programming in that area is very good. If you want to do that, it is probably worth looking into interdisciplinary, joint, or independent majors. These make it possible to still study some CS and other areas without double majoring. Unlike most majors, you might also be able to avoid classes that are useless. Most schools seem to have a major along these lines.

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.

Well you sound bored and looking to do something different, meaningful and help build a product from the ground up which will save lives of some of the most vulnerable people in the world every day?

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

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.

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.

I can't speak for the rest of the country, but where I live $70k is about what I'd need to maintain a middle-class lifestyle, make meaningful payments towards debt, save up for a down payment on a house, stop worrying about financial emergencies, start building a savings account, and still have a little bit of spending money.

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."

It sounds like that you are deeply unhappy about your work situation. Sorry.

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!

maybe check out Cal Newport's blog http://calnewport.com/blog/ and/or his book "So Good They Can’t Ignore You: Why Skills Trump Passion in the Quest for Work You Love" for a sense of perspective on finding a job you love. His philosophy, to paraphrase inartfully, is that we've been fed a load of bunkum about passion being the be and end all of a career; that passion actually comes after the fact of putting in the grunt work of becoming successful.

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.

This seems like a really expansive way to say don't do something if you don't enjoy it, which I think is good advice for anyone, not just undergraduate hackers.

Yes and no. My problem is I thought I loved what I was doing, but there were just little issues with it. Everything has little issues, sure. I never let myself realize until recently that these were problems that were actually harming my quality of life/mental health and that I had lost my love for it. There is a lot of pressure to love the field no matter what, and I think it's unfortunate that reflection isn't encouraged very often around here.

My $.02 for you at this point would be: forget the stress of the software industry. If you want to work in another industry, then do so. If you really love programming, you'll probably be drawn to it again. If so, then do it for fun and see where it takes you. You'll probably find though, that most others careers also suck in many ways, and if you like programming, then being a pro programmer isn't that bad of a route.

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).

It resonates for me. I started university in computer science. I even got relatively good grades for that first year, but I decided I had to change, and ended up doing economics and philosophy (both of which have their own problems worthy of another thread).

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...

I'm a computer science Ph.D. student who works with that software that runs on the supercomputers. Yes, the code is bad, but no, it is not slow. In fact, the people (often not computer scientists) who write it are often really, really good at getting every little ounce of performance of it. And yes, they are pragmatic about it -- good performance is more important than good code. Sadly, this is often why they are producing software that's getting work done while many CS students aren't. The CS students are too focused on the code and not on what the code is used for.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact