
Ask HN: I just don't care anymore. Any advice? - iQuit
I've recently realized that college is killing my desire to do anything programming related. However, as I'm a full-time student without a job, dropping out and not working at Burger King boils down to getting lucky (although I've had a few headhunters call me, so maybe that's a start).<p>The reason I'm so underwhelmed is that in highschool, I really took off with a passion for computer programming. By my senior year, I was fairly fluent in Python and PHP, and I was spending time reading and working my hardest to finish the exercises in Structure and Interpretation of Computer Programs. In addition to that, I started working (and have kept on working) at mastering C, Common Lisp and Haskell. It was somewhere between starting to read "Godel, Escher, Bach" and learning the basics of the theory of computation that I also fell in love with mathematics. I was pretty apathetic towards everything related to highschool, but I could take AP classes and get an 'A' with no effort while spending the rest of my time studying things I cared about, so it didn't seem all that bad. When applying to college, I had scores to get into/get noticed by a couple of nice-to-decent range schools (Columbia, RIT, Rose Hulman; my GPA/scores were consistent with the bar for Duke, CMU and others). The problem is, while I had put in minimal effort to get a really high GPA and nice test scores, I wasn't the minority captain of the football YMCA church team thing, so I didn't really stand a chance of getting scholarships at nicer schools. Since I have to pay for everything myself, I decided to enroll at the state university which gave me a nice chunk of cash to attend. Problem solved, right?<p>Fast forward to college, where my first programming class considers 'for' looping and arrays to be advanced techniques, and where showing that you know more than what is taught is actually considered <i>cheating</i>, and I'm burnt after the first semester. The thing is, there are so many things that I don't know (and so many of them are things that I want to learn), so the idea of just 'dropping out' is absurd, since I'm sure there are people here who can help me learn the material even better than if I was doing it on my own. At the same time, every class is a boring trudge that promises me that it's the last boring class I'll have to take and then it'll all be exciting from here and blah blah blah blah. The litmus test I used recently was "If I didn't have a scholarship, would I pay to take this class?" I realized that I probably would not pay for a single CS class offered here. I made it through last semester fairly unscathed, but this time around I feel an extreme apathy setting in. My grades are just at the beginning point of slipping - they're not quite terrible, but they're not the high 'A's I'm used to. This is purely due to my lack of interest.<p>What should I do? Should I just drop out? That seems like a bad idea, since at this point I know enough to know I don't know that much at all. Should I switch to something non-CS, and then just study CS on my own while occasionally popping in and picking the brains of the faculty? I'm sure some of you who've been through this exact dilemma are scoffing at me not finding the obvious answer myself through "soul-searching", but I really haven't found anyone who feels the same way I do to discuss this with. I've gone for too long without asking for help or advice.
======
jeffmould
First and most critical piece of advice. Don't drop out if you can financially
afford to stay in. You will grow to regret it later.

Second, talk to your professors, adviser, and the dean of the department about
your situation. Let them know your skill set so that advanced answers do not
come across as cheating.

Third, most major universities allow you to test out. I have completed almost
30 hours towards my degree by testing out of classes and using previous work
experience to apply for credit. Testing out usually involves either taking the
final exam for the class, doing a major project, or a combination of both. I
would highly encourage you to talk to your professor.

Fourth, the classes will get harder and more challenging. Talk to your
adviser, professors, and the dean of the department. Determine what your
options are for classes and take the most challenging classes as electives.

Fifth, look into a minor that may provide a release from the rut you are in.
Even if the minor is something like underwater basketweaving it can provide a
break and also provide a way to gain experience in an environment outside your
comfort zone.

Finally, see if your school offers any independent study programs or credits
for internships. It sounds like you have good skills that could be applied to
real-life scenarios while at the same time accomplishing your goal of
completing your degree.

~~~
aamar
Overall very good advice, but your school may not have professors or advisers
who have the time to give helpful guidance to undergraduates.

Consider auditing a more advanced class that's related to your interests, with
permission of the professor, and do as much of the work/reading as you can.

In my experience, sitting in on one inspiring or interesting course can make
surviving four others bearable or even expose surprising corners in previously
dull material.

------
patio11
If you're underchallenged, dropping out will make you underchallenged and
unemployed with no prospects of securing gainful employment in the immediate
future. People who are both better credentialed and better skilled then you
are _also_ looking for work right now. You do not want to compete against them
on the basis of "I was something of a PHP hotshot in high school."

Your classes are not the only avenue you have in life. Phone it in for the CS
classes if you have to. (I did that for I think the first two years of my
undergraduate degree, because even at a quite good school that was mostly
"We'll teach you Java syntax! This is how you do a variable assignment! Study
that for the next week and we'll do complicated stuff like doing _two_
variable assignments!") If there is _nothing_ in the department worth studying
(which I kind of doubt), transfer to a better school and apply for loans.

You're probably a good candidate for a double major in CS and a field which
will teach you something useful. This is a good strategy for future employment
prospects and, trust me, you can find something interesting and challenging. I
did Japanese and it changed my life.

Your college classes are not your sole outlet for personal growth, by the way.
Society has agreed to give you 21 hours a day, five days a week, for the next
three or four years, free of any expectation that you have to show up anywhere
and put in eight hours of work. Use that time well. Think you know
programming? Build stuff. You'll find out how much you have yet to learn.

~~~
iQuit
>"I was something of a PHP hotshot in high school."

That's not at all what I mean to imply. I wasn't trying to come across as "I'm
cocky because I know a few things" so much as "I'm depressed because I'm
learning even less than what little I learned on my own in highschool"

>"We'll teach you Java syntax! This is how you do a variable assignment! Study
that for the next week and we'll do complicated stuff like doing two variable
assignments!"

Exactly.

>You're probably a good candidate for a double major in CS and a field which
will teach you something useful. This is a good strategy for future employment
prospects and, trust me, you can find something interesting and challenging. I
did Japanese and it changed my life.

I've already started on that route.

>Think you know programming? Build stuff. You'll find out how much you have
yet to learn.

I agree completely with you on this. After doing so, I really do realize my
limitations, and I know that there is so much more I have to learn. It's just
that to learn anything in any useful depth requires mostly self-study (since
school is slowly-paced and bent towards getting you a low-rung C++ job when
you graduate), which I enjoy more anyway. But when you realize that, you
wonder what the courses are there for.

------
boyter
You do realise that college/university isnt so much about being spoon fed
information but learning how to figure it out for yourself.

Keep up your grades (they will be worth more to you then you think later on)
and start reading the papers your professors are writing. Ask them about them.
Understand them. Doing this will open up all sorts of doors. I landed a job
writing code for a Doctoral student by doing this.

Not only will you be learning more you will stand out in your professors minds
because you took the initative to learn what they do outside of teaching
students "for loops". This is the point of being there. Learning for learnings
sake, not just to get a piece of paper at the end.

~~~
iQuit
>You do realise that college/university isnt so much about being spoon fed
information but learning how to figure it out for yourself.

If I came of as wanting this, then I apologize. In fact, all I really want is
challenging, fast-paced course where I can do just that. Instead, I take
courses where what you haven't learned in class is 'illegal', and what you
actually have learned is very little.

~~~
boyter
Ah I see. Remember that the course is designed that way so that everyone is on
an equal footing (which makes marking easier).

In your case I would say stick with the course. University/College isn't about
learning things from the subjects (you will find later most is useless) but it
proves you are willing to stick it out and finish which does mean something to
an employeer. If thats all you want then fine. However it seems you want to
learn for learnings sake. In which case as I said, find out what your
professors are doing and learn from them. Its the best place to learn.

Perhaps use your time to learn something you know nothing about. CPU design?
Compiler design? AI? I spent my spare time learning how to Decode Captcha's
because I thought it was interesting and looked like magic until I learnt how.
Thats the point of being there.

Best of luck with it! Having been in the same situation I can understand the
frustration. I found improving my social life and learning on my own projects
helped me a lot in the first year. Then I did as many here have suggested,
branched out and took Chinese Language (in China) which challanged me and kept
my focus.

You can also take harder courses (if possible). Taking things like Theory of
Computation and Algorithms and Data Structures were some of the harder but
more satisfying courses I took while a student.

~~~
iQuit
>Perhaps use your time to learn something you know nothing about. CPU design?
Compiler design? AI? I spent my spare time learning how to Decode Captcha's
because I thought it was interesting and looked like magic until I learnt how.
Thats the point of being there.

I'm really starting to like Lisp, which leads to AI. I might look at something
along those lines.

>Taking things like Theory of Computation and Algorithms and Data Structures
were some of the harder but more satisfying courses I took while a student.

Rest assured, I've been waiting with baited breath to take those courses. It's
just that getting to them requires about 3 or 4 boring classes.

Thanks for your advice!

------
noodle
if i were in your shoes, this is what i would do:

1) do the due diligence and research to determine if the CS classes got
harder. see if i can test out of or just generally skip some of the classes,
if it isn't too late. talk to your advisor.

2) consider taking on a double major while you're wading through the terrible
CS classes. math, physics, engineering, philosophy, etc.. something that
interests you. if CS ends up getting harder, you can always trim it back to a
minor.

3) do more stuff on your own time. college affords you tons of free time,
especially if you're coasting through easy classes. build a startup. start a
business. contribute to open source projects.

------
yannis
Being more than twice your age I can assure you of one thing. You will get
these feelings in College, in your job and in your business. Even with your
partner wife etc. You need to find a method that works for you to cope.

During College I got terribly bored of lectures and was quite ahead of my
class mates - and wouldn't be surprised some of the lecturers. I decided to
infrequently attend lectures and studied for _exams_ and _assignments_ only.
Piece of cake really to sail through. My social life improved by 1000%. I
loved and love learning. I would go into the library and borrow all sort of
interesting books from anthropology to physics (even dated one of the
librarians). I was fortunate to study in London. Visited all the museums - the
patent library (amazing). I worked part-time in a fish-and-chips shop (was a
great experience to learn customer service). It was like physically surfing. I
even took diving classes and went diving in a reservoir in Scotland. Really if
you want not to be bored is easy. Refocus - you are there to earn a _degree_
that is your target. Learning is a different and _solo_ activity.

It is much more difficult if you get these feelings in your work. Again you
can channel energy into other activities, you can put research into areas of
your job that others consider routine. Changing a job would merely put you
into a similar spot once the novelty wears out. Divide your efforts into

    
    
      - must do
      - this is my life things
    

The _must do_ you do for survival and you handle them as best as you can. In
the _this is my life things_ you add the variety.

------
pedalpete
Expanding into non-CS fields I believe is a great idea, as CS is a science,
lots of great cross-polination of knowledge could be amazingly helpful one
day. Pick something you find interesting and go for it. Even if it is not
science related, many fields are in need of good programmers to move them
along to the next level, and the more you know, the more valuable you may be.

However, you mention that you aren't getting the high 'A's anymore. If all
your classes are so trivial, why not? I assume you've spoken to your
professors, or the dean of CS? If not, i'd do so. They may be willing to bring
you into some more challenging environments if you show an interest and the
capabilities.

I dropped out of Uni, and have absolutely no regrets. But you sound like you
would be really into it if it were more challenging, so maybe stick with it.

Is there a local tech company that you find is doing interesting work? If so,
before dropping out, you might be able to work a program where they bring you
on as a co-op with the University. That way you get the challenge along with
true work experience, the business gets a deal, and gets to see how you work,
and the university gets... I have no idea what the universities get, but in
Canada, co-ops are pretty common, I assume they are in the US too.

~~~
iQuit
>However, you mention that you aren't getting the high 'A's anymore. If all
your classes are so trivial, why not?

Because I look at the fact that we've done the same type assignment for 5
weeks now in CS class and decide I just don't care. Normally you'd think "Oh,
it's easy, just finish it up!", but after the third of fourth time of doing
the same thing, I just can't make myself do it. "Write a class that contains 3
variables name x,y,z. For next week, make sure they're named pizza, ham, eggs"
and so on.

>"They may be willing to bring you into some more challenging environments if
you show an interest and the capabilities."

That would really change my outlook. I'm not normally very outgoing, but I
guess I could go ask a few of the professors.

~~~
tienshiao
Unfortunately, there is a certain amount of tedium to life. Whether that is
doing the dishes night in/night out, chasing down invoices, doing your taxes,
provisioning servers, some things just need to get done. Unless you can pay
someone else to do them, then there is the tedium of managing those people,
paying them, etc.

Anyone can excel at the things they like. It is highly unlikely you will make
it through life isolated to only the things you enjoy. Ultimately, you'll need
to learn to take care of business whether you enjoy it or not.

You're almost certain to need credits outside of your major. Even if you enjoy
learning, there will be some classes you are going to need to grind through.
"Bank" your easy A's now, save those grade points for a rainy day.

------
ajuc
For me the best thing you can get from university is the people you can talk
with. Many smart people with good ideas. Ignore stupid/incompetent profesors,
learn from the smart ones, talk with smart people and try to do sth great with
them, later you won't have time to try new things.

If there is some students' educational club (I don't know how to say this in
English - students teach students about what interests them) - go to it, ask
if you can help, start new class about functional programming or what
interests you, if there aren't any - you'll learn much more from trying to
teach others than you could learn by reading the book.

I've met many great people that way, and made connections so in my 5th year of
studies I got programming job , becaus people already working there knew I was
good.

PS - if you become used to "B"s then "C" will come, etc. I was "A" student
without effort at first year, and have great difficulties later because I got
used to having "A" with no effort.

------
kentuckyfried
Even if you're bored and feeling unchallenged, you should stay in college and
perhaps take the initiative to self-study on more advanced topics, or better
yet, broaden your skill set with other things that you're interested in.

For example, I can tell you that it's very rare to find somebody who has
strong software skills AND a solid background in mechanical engineering/civil
engineering. Which explains why finite element software, alot of it feels like
its stuck in the Stone Age. That's a field that could use a ton of help from a
user-interface standpoint.

That's just one example, I'm sure there are many others. College is one of the
best chances for you to learn something without being hampered with alot of
responsibilities like a full-time job or other obligations, so make the very
best use of it that you can.

------
keeptrying
Have you talked to the faculty about this? If you can show your professor that
you know everything he is teaching, I'm sure he will help make it challenging
for you. Ie either by giving harder assignments where you'll learn more or he
wont take your attendance and let you sit in on some other advanced class
which you'll find more challenging.

Do NOT leave school. There's no other place where you'll find smart people who
are paid money to teach you the stuff that you want. And those grades will
make a huge difference in your income and how your viewed when you go in for a
job.

Ask for help with your problem from the sources available to you and you will
get it. It might take a few attempts to get to a professor who understands
your situation but it will be worth it.

------
melling
Study math or physics. You should be able to get a programming job out of
college, if you still want to write code. I knew a really good programmer who
studied Latin in college. Getting an entry level programming job with another
degree shouldn't be too difficult.

~~~
iQuit
This is something I've strongly considered, but I know nothing of how
'difficult' it is to land such a job. There are so many neat things to do, but
I can't really tell how many companies only care about skill and knowledge as
opposed to having just "BS Computer Science" on a piece of paper.

~~~
melling
Do really well in physics or math and you'll be fine.

~~~
hga
That's what I've observed of others. I certainly know I would hire a math or
physics major if they demonstrated they knew their programming and CS (in
fact, I did hire one who had an U of Virginia Applied Math major that was
largely a CS major, 6 months out of college for his 2nd job).

In general the advice here is good. Play the games the CS department insists
on _if_ the higher level courses are worth anything and find other areas that
are genuinely challenging.

If the "you're cheating" attitude is a reflection of the department instead of
a quirk of the instructor (who good wants to teach that sort "Learn Java
Syntax!" course?) then think really hard about your options that don't include
taking many/any more courses in it.

And as others say, find a professor to do research with. If you can't, find
another school, don't look so much for a "good" school as for one where you
can do research. You should be able to find someone who needs good code
written cheap.

~~~
iQuit
I'm sure there are a few good courses. It's just wading through the crap that
makes it unbearable.

Hilariously awful example: the "teacher" of the class wanted to explain what a
pointer was, so he gave us a link to a Wikipedia article on pointers.

~~~
hga
" _I'm sure there are a few good courses._ "

"Trust, but verify."

WRT pointers, <http://en.wikipedia.org/wiki/Pointers> is _wonderful_
additional reading, but a very poor first introduction to the concept. Maybe
better than the pointers and arrays chapter in K&R, which didn't work for me,
but only that.

Yep, this guy is worse than useless (the accusations of cheating). The high
school coach who taught my high school computer programming course (punched
card FORTRAN "IV" on an IBM 1130) was a lot better ... then again he gave us a
not in the book blackboard lecture on the two's compliment system, which I
found to be _tremendously_ useful going forward (just knowing that there was
something behind the opaque veil of integers and floating point numbers was in
and of itself useful).

See if you can find a non-loser CS professor (or maybe one who needs some
FORTRAN worked on ^_^ ... anything real and concrete ought to beat this) and
go from there. Good luck!

------
roundsquare
1) Find some research with a professor. Look at their websites, see what
interests you and talk to the professor. Make sure you understand their papers
and have intelligent questions for them. Make them feel that you'll be useful.

2) Look into some of the theory. Its probably quite different from what you've
done in high school. There is some fascinating CS theory out there.
Algorithms, turing machines, graph theory, etc... are beautiful fields.

3) Find a crazy minor. By crazy, I mean non-technical. Film, english,
political science, etc... You'll branch out, be more useful to any employer,
be challenged and have fun.

4) Talk to your dean (someone else said this, but I think its a great idea).
Let them know your background and tell them what you want to do.

Good luck.

------
barkingcat
I was in your shoes years ago. I dropped out of computer engineering and ended
up getting a degree in english literature - and I kept improving and learning
programming and systems design. Now I am a literature nerd who can also code.
That is a tremendous advantage for me since I meet and work with people from
all walks of life. The pay is lower outside of the pure CS / programming
disciplines but I don't regret it one bit. Hope this helps. Stick with school
and maybe think about why you are in that super boring course when you could
either go all the way and test out of it / talk your way into upper year
courses, or learn something unexpected/unknown.

------
kloncks
Transfer. Seriously. I'm in a similar situation and that's what I plan on
doing.

Go to a better place that you deserve to be at and that will challenge you.
Apply for loans if you can't afford it. In ten years, you will be glad that
you did.

~~~
iQuit
I've been feeling like that a lot lately. I might look into it, but from what
I gather transferring into nice schools is even more painful than applying
normally.

------
kentuckyfried
Another area is 3-d animation + coding...if you're already a good artist, you
can rule if you have a robust set of programming skills (so I am told).

------
mos1
A large part of what a college degree demonstrates is that you're willing to
complete 4 years of crap, only some of which was fun / challenging / etc. Not
many people want to hire a "whiz kid" who has already demonstrated that he'll
quit on you if he feels bored for a year.

Also, someday you might find yourself interested in a masters or doctoral
program. That's gunna be a tough sell if you weren't able to complete a
Bachelors.

Suck it up, do your work, and find some other way to amuse yourself until the
coding classes get more interesting.

------
binspace
It depends on what you want to do. The college CS curriculum typically is good
for teaching students to become professors. If that is what you want, stick to
CS.

If you want to go more toward the software engineer approach you have a few
options. You can stick with CS, but try to work on actual projects. For
example, you can contribute to an open source project or start a company. The
main thing is to work on projects that aren't cookie-cutter tasks, such as the
ones that are common in school.

Switching majors so you can learn something new is also a great option. What
are your other interests? If you do go with the school route, you will
probably learn more about problem solving by learning a new field. You can
still use your programming skills with many majors.

Another option is to get a job. Frankly, I think college is overrated. School
is good, but there it is not the only route. You could probably get a good
position at a startup, and will probably learn more than in school.

I didn't get interested in programming until I was a sophomore in college. I
graduated with a BS in Engineering Physics. I'm glad I didn't major in CS, and
I was still able to pursue software development. You will have plenty of
opportunities in school to try new things. I have to say that I have learned
more about problem solving (at a faster rate) while in the workforce, than in
school.

