
Dear undergraduate hacker - koof
This is both a warning and a cry for help.<p>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&#x27;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.<p>I&#x27;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&#x27;re far from the right path. Being in school doesn&#x27;t give you enough time to reflect and I was even afraid to do so out of fear of sounding naive. I&#x27;m guess I&#x27;m glad I&#x27;m having these realizations now, but I still lost out on critical time. My perspective won&#x27;t apply to everyone (most programmers do seem genuinely content with their career, and that&#x27;s ok with me), but on the off chance it might resonate with a few people, here goes:<p>1. Nobody cares that you work at a prestigious tech company that gives you ~cool benefits~. It&#x27;s true that nobody cares about most of what other people do with their lives, but do not let Google&#x2F;Microsoft&#x2F;etc. sell you hard on the career. This was what drew me further into CS: I didn&#x27;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 &quot;software engineer&quot; 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&#x2F;family&#x2F;friends (especially most of whom aren&#x27;t in it) think it&#x27;s cool that you can land a job at a well known place?<p>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&#x27;t magically enjoy their company or your work with them: your peers don&#x27;t really &quot;grow up&quot; and the code doesn&#x27;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&#x27;t make friends in your classes, consider if you actually want to like them in the first place. I&#x27;ll admit that being better at things so-called-nerds said they were really good at was entertaining but it&#x27;s a terrible reason to be in this field.<p>3. If you like CS because it&#x27;s &quot;math with a practical&#x2F;creative edge&quot;, 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.<p>4. Learning new programming languages is extremely fun at first but exasperating and repetitive after a while.<p>5. I&#x27;m not really sure I need as much money as I&#x27;m making to be comfortable. At some point I just became addicted to comparing salaries at various companies&#x2F;jobs, but it seems to be having very little impact on my life. I&#x27;ll admit that my attitude towards this will probably change, but still.<p>6. If you have any misgivings about capitalism or being involved with a business at all, don&#x27;t push those feelings aside. (The company I work for is mostly employee owned and I still hate it!)<p>7. If you get into a deep discussion about programming and you&#x27;re surprised by how many things you know that you don&#x27;t care about, really consider what that means.<p>8. If you are trying lots of CS electives in school and you&#x27;re not really enjoying any of them, don&#x27;t fall into the trap of thinking that you just haven&#x27;t gone deep enough yet.  Get domain knowledge in something else. Having &#x2F;skills&#x2F; is nice but you probably want a (more complicated than just business logic) knowledge base to apply it to. Find issues you&#x27;re actually passionate about and use programming to do cool things in that area. Take courses in something completely unrelated or something you don&#x27;t think will be useful, it&#x27;s better than clawing at nothing.<p>9. If you can&#x27;t come up with an idea for an app because you can&#x27;t stand the idea of making something so meaningless, just remember that you will be making someone else&#x27;s trivial app.<p>10. Startup&#x2F;tech company culture is vile. Entitlement, lack of compassion, materialism, and (surprisingly) anti-intellectualism is the norm.<p>11. If you think you can survive in the software industry by simply escaping into your other interests&#x2F;friends&#x2F;relationships: you can&#x27;t. This was probably the biggest reason I didn&#x27;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&#x27;ll realize just how important it is to actually &quot;do what you love&quot;. 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&#x27;t take your unhappiness for granted.<p>As for me, I&#x27;m not sure exactly what I&#x27;m going to do to get out of this just yet, but I&#x27;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&#x27;s so much more you can do. Don&#x27;t be terrified of not getting a job, you&#x27;re pretty much guaranteed to get one with that CS degree even if you weren&#x27;t dedicated to it 100%.<p>I hope this gave perspective to someone, but any advice a wiser person could give me would be much appreciated.
======
danpalmer
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.

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

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

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

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

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

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

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

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

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

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

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

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

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

------
erikj54
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/](http://codeforamerica.org/). OR go teach CS to
other students in High School:
[http://www.teachforamerica.org/](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.

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

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

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

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

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

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

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

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

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

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

------
diamonis
maybe check out Cal Newport's blog
[http://calnewport.com/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.

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

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

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

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

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

