

Ask HN: Advice for a frustrated CS student - hiso

Hello everyone,<p>I&#x27;m a 21-year-old CS junior undergraduate, and it looks like I can&#x27;t put my mind into working on side projects.<p>I don&#x27;t have problems with the field of Computer Engineering , I actually find it quite fascinating and interesting.
I&#x27;m hooked by reverse engineering, and I&#x27;m thinking into working in Information Security.
My university doesn&#x27;t have such a cursus, so I devised I had to earn some experience by myself via some side projects, solving online CTFs.<p>Except I can&#x27;t help being deterred and frustrated when trying to work on them. I try to code a little something, a little game, google some documentation, write some snippets, ducttape them together and see the whole thing self-destruct with obscure exceptions. Googling those errors doesn&#x27;t bear fruit often.<p>Yes, I&#x27;m aware of all the trial and error involved in programming, but I noticed that frustration comes back when I tackle any kind of creative endeavour (I&#x27;m currently trying to learn how to draw) and even when playing video games (roguelikes and shoot them up games).<p>I would also like to feel that thrill when solving problems on your own, making &quot;air castles&quot; from scratch.<p>How can I get over that frustration? How can I acquire the persistence necessary to undertake any project and see it through to completion?<p>I know that there is some kind of &quot;playfulness&quot; involved in it, but I can&#x27;t put a finger on it....<p>Thank you for your time.
======
mknappen
“Nobody tells this to people who are beginners, I wish someone told me. All of
us who do creative work, we get into it because we have good taste. But there
is this gap. For the first couple years you make stuff, it’s just not that
good. It’s trying to be good, it has potential, but it’s not. But your taste,
the thing that got you into the game, is still killer. And your taste is why
your work disappoints you. A lot of people never get past this phase, they
quit. Most people I know who do interesting, creative work went through years
of this. We know our work doesn’t have this special thing that we want it to
have. We all go through this. And if you are just starting out or you are
still in this phase, you gotta know its normal and the most important thing
you can do is do a lot of work. Put yourself on a deadline so that every week
you will finish one story. It is only by going through a volume of work that
you will close that gap, and your work will be as good as your ambitions. And
I took longer to figure out how to do this than anyone I’ve ever met. It’s
gonna take awhile. It’s normal to take awhile. You’ve just gotta fight your
way through.” - Ira Glass

------
ambiate
I am currently experiencing the same phenomena. Prior to being educated to
code, I could hack until 5AM. Post-school, I can barely toy with a new
language. Most side projects seem inadequate or too overwhelming!

Even in the workforce, I complete projects in a timely manner with a very
meticulous mindset, but they never feel like accomplishments anymore. They are
just artifacts.

I think one of my issues is I have swayed from the objects that drew me to
computing as a hobby. I loved blackhat hacking, socializing in IRC, and gaming
on quakeworld.

I have Google Glass sitting at home on my desk. I installed the toy REST app
and sent a few hello worlds to the device. I have a list of domains waiting to
be populated with content and apps. I just don't have the passion anymore.

I get a glimpse of it when I get to work on my car. Opening up that terminal
just never brings that adrenaline anymore.

~~~
phaus
I'm not sure you understand what black hat hacking is.

Black hat means that you use your knowledge of computer security to commit
crimes. If that's the case, it's not a good idea to express such an idea on an
account linked to what I can only assume is your actual name.

I suspect, and I hope for your sake, that you are using the term as a way to
describe the entire field of network security, which includes White Hats, Grey
Hats, and Black Hats.

~~~
ambiate
I just do not have any fear around things that happened in 1998.

------
Zergy
Get a job with smart people. No seriously I'm 22 and was never ever able to
complete anything programming related until I started working and was forced
to stay on major projects.

The problem was I actually sucked at programming, something I didn't realize
until I started working. Being forced to put your nose to the grindstone and
work with large code bases teaches you so much. My first few months were
frustration after frustration all of which would have resulted in me
abandoning the project if I wasn't stuck at work.

The result was after the co-op I was able to actually progress meaningfully in
my hobby projects which resulted in me actually sticking with them.

------
ntpeters
As someone else said, copy/pasting from websites isn't going to help you learn
anything. Likewise, looking up a solution to a problem isn't going to teach
you how to solve that problem. You may think you learn the solution, but the
only way you really learn it is to figure it out yourself. Try solving some
problems and writing some programs while limiting yourself to only looking up
specific questions. Questions about language syntax, or what functions are
offered to do a certain task. This is easier accomplished when trying to break
your Google addiction if you sit and think about the problem first. Sketch out
your idea and maybe put down some basic pseudo code. After you think your
model is fairly complete, start coding it. As you code it only look up
documentation (such as JavaDoc) to find how to do what you outlined in your
pseudo code. As you program it you will likely think of better ways to do
things. Try to finish without looking up and solutions online, then review
your code and debug it. Make sure your code works the way you expected it to
and is as good as you can think of making it. Then, and only then, look up
what a good, correct solution to the problem is. Now when you see the solution
you will make connections to your code and how you can optimize it. Things
will make more sense, start to fall into place, and you'll learn a lot more if
you take this approach. It will be more frustrating at first, but in the end
it will feel far more rewarding because you actually understand it.

~~~
hiso
I also think that googling code and problems can be quite troublesome when
abused, as IRC, forums, etc... But I feel like coding by yourself without
google, irc is kinda frightening.

I know asking for help when you really need some isn't wrong, but how did
older programmers tackle that conceptual "blank page" syndrome, without all
that information abundance, when they didn't want to annoy their coworkers?

What you described here makes sense as a software building methodology, but
how do you deal with more psychological issues, such as fear and frustration?

~~~
dragonwriter
> I know asking for help when you really need some isn't wrong, but how did
> older programmers tackle that conceptual "blank page" syndrome, without all
> that information abundance, when they didn't want to annoy their coworkers?

Books. And desire. And breaking things down and doing one step at a time.
"Information abundance" is a mixed blessing; it makes it much easier to find
information, but it makes it a lot easier for people to get out of the habit
of working things through.

------
lifeguard
A CS degree is a waste of time and money. Are you really going to need to
write a compiler at work? Go get a Security+, CCNA, RHCE, and MCSE in two -
three years. Give yourself a personal MBA by reading these books:
[http://personalmba.com/best-business-books/](http://personalmba.com/best-
business-books/)

Join Toastmasters to learn public speaking:
[http://reports.toastmasters.org/findaclub/](http://reports.toastmasters.org/findaclub/)

Complete an online course about project management.

~~~
hiso
Well, I concede formal education isn't much compared to hands-on experience,
but public education is dirt cheap where I live, even free if you have a
scholarship like I do (I'm French just so you know). So IMO, having a degree
at such a price isn't useless nor a time/money sink - at least when comparing
to US/UK, but I don't want to think it exempt me from working on my own on
side projects.

I'll most likely need certifications, but my scholarship cannot cover that for
now. I'll save up for those once I'm in a taskforce.

~~~
lifeguard
I do not mean to be so negative about higher education, or any education. I
just believe getting a CS degree to learn how to program contemporary
technologies is a poor path to take.

------
tmwhtkr
What are online CTFs? My advice would be to try your hand at some other
aspects of programming. Games are hard to break into. Have you tried building
websites or apps? Put that drawing practice into use on some cool websites.
Try and teach yourself backend programming using ruby on rails. Build a
portfolio website. Buy yourself some server space and learn how to set it up.
Setting up a portfolio and creating websites, showing off games (if you do
want to pursue that) and anything else you code up is probably the best thing
you can do for your career while you're in school.

~~~
hiso
Online CTFs are computer security challenges (reversing binaries, exploits,
cryptography/steganography challgenges, forensics). I'm trying my hand at
those, although I'm still stammering :)

I also tried teaching myself some Django via online tutorials, but I must say
web development isn't my cup of tea : One of those tutorials showed how to
make a basic blog. I typed all the code by hand step by step. The admin
interface shows up, the development server runs without errors, but errors
arise in urls.py and the templates. I copypaste the relevant code to check.
"Unmatched parenthesis" template error still showing. Googling the error: no
relevant matches. I flip the table and ragequit.)

I like to think I have low-frustration tolerance, although I pick high-
frustration video games (I'd probably love Dark Souls), but I still want it to
develop that skill in case of (to show my portfolio yup, but in my case, said
portfolio is pretty much inexistent, and that worries me to have nothing to
show to potential employers, especially in the field I aim to work.)

------
enodate
You clearly don't like to program.

The playfulness comes from developing an internal map of how the programming
language you use exposes the underlying system. Cutting and pasting from
examples is not going to help you.

Solving problems sets with discreet tasks attached to them like the project
euler problems may help give you a structure to develop your fundamentals.

~~~
Sealy
My thoughts.

If you dont enjoy doing it in your free time. Don't try to force yourself. You
will never succeed. If you are an aspiring entrepreneur then there are still
plenty of ways to get involved in the startup scene without being a code
monkey. One lesson I learned is that if you enjoy something, you will both do
well and want to persevere when the going gets tough.

~~~
hiso
I probably don't like going through the hurdles associated with problem
solving, but I'm not going to give up for all that.

I don't get excitement and joy from programming: so what? There are moments
when I can't get pleasure or joy out of anything I do, like sleeping or
eating, but it doesn't mean I should stop doing either of those things.

I'm not interested by entrepreneurship and startups for the moment, for now
I'm more into acquiring technical skill.

------
mathgeek
Finish school, and then find a job working with smart people. In that order.
:)

There's no requirement that you be doing other interesting job-related work
while in school. Enjoy that time any way that you find best, as long as you
finish strong.

