

Ask HN: I don't think I am a good programmer but I keep trying - throwaway_

I am probably one of those rare programmer/techie guys that really can't code. I have been in the industry for the past 12 years and I have been consistently making six figure salaries and getting excellent reviews at every place I have worked. I have been mostly working on the enterprise software, managing ERP packages (ala SAP) and enterprise databases (Oracle). All the while, I could not really code a program from scratch, although I could whip some shell scripts by copy pasting stuff and I was exceptionally good at troubleshooting issues and figuring out things. I also work well within teams and have also played managerial roles really well.I was always counted amongst the top 2 or 3 people in the IT organizations that I worked in. However, none of these places were cutting edge tech companies, but nevertheless all of these places have high name recognition.<p>I recently quit my job and started working on something that really requires hard core programming skills. I figured, I could manage it, if I sit at it for a month or so. However, I have been very ineffective in managing my time and honing my programming skills to be effective. Even when I was doing 9-to-5 jobs, even though I was exceeding the expectations of my peers and managers, I always knew that my productivity in terms of the amount of time I effectively worked, was always in the 25 to 40% range.<p>I want to be a good programmer, but I am starting to thin that it does not come naturally to me. I read on HN about how people started programming since they were 10 to 13 year olds and how it caught their imagination. Nothing like that happened to me when I was first introduced to computers. In fact, even though I really wanted to learn Ruby since 2004(bought my pickaxe book then), but never ended up learning. I didn't need it for my job then, but out of my own interest and wanting to learn programming, I picked it. However there was no proper follow up. That is just one example, there are many things I wanted to learn along the way and I never got good at anything.<p>May be I should just give up and go the management route, since all I manage to do with technology is to keep up with what is cool and current, but never able to get into any depth.<p>What I really want is mastery in programming, but I am somehow unable to put consistent effort to get there. Maybe I don't have the aptitude or the analytical skills required for being a good programmer. There are tons of programming videos online, but I feel drowsy and my attention shifts elsewhere within 20 to 30 mins. I however did manage to put one app in apple app store, but I took a ton of help from others to get it to the store. I know I am capable, but somehow am unable to put the consistent effort needed to get good at it. Not sure what kind of responses I am expecting, but just putting it out there is cathartic.
======
RiderOfGiraffes
Well, you threw out a bunch of random thoughts, so here are some in return.

Firstly, double-check (no advice as to how!) that you're you're not just
suffering from Imposters Syndrome:

<http://en.wikipedia.org/wiki/Impostor_syndrome>

You do write some code - are you sure it's not just a matter of insecurity and
scale?

Secondly, do you _really_ need to code? You've had great jobs doing things for
which you receive recognition and praise - perhaps those things are your true
calling.

But if you really want to code, find a mentor and get an honest opinion. Write
something really, really small, and get advice about style and content from
people who can code. Finding them is an interesting challenge, but there are a
few here who might help.

Find something small that you feel will be interesting enough. Perhaps you
just mostly suffer from a combination of procrastination and lack of focus.
Perhaps you need to learn and work in really small chunks.

Perhaps you need to learn by doing, not by watching.

So here's a thought: Pick three languages that you've had contact with and in
each, write FizzBuzz and post them here. And to prevent you from having the
excuse to look it up on the net and getting clues from what you see:

Write a program that prints the numbers from 1 to 100, except that if a number
is divisible by 3 print "Fizz" instead, if a number is divisible by 5 print
"Buzz" instead, and if divisible by both, print "FizzBuzz" instead.

Just a thought.

------
keerthi
God bless you. I thought I am alone. I wanted to ask this question for a
looong time but could not get it out.. I bet there are many more ppl like
this.

~~~
hippee-lee
I switched careers a few years ago and have often felt like this.

I also read Steven Kings book, "On Writing." Even though it's about prose, one
of the most important things I took away from it is this: if I want to be a
good ______ I need to show up, every day and _______. Usually, I won't know
when I did good ______ until after the fact and if I don't ______, every day,
I won't be able to measure myself and improve on my previous efforts.

This has helped me continue to plug away (at work, on my own time) and seek
out interesting challenges that will help me to mark small, identifiable
milestones of improvement.

I see this in many things, not just programming or writing.

------
oomkiller
If you want it, go get it. Don't expect to master programming easily. Surely
if you want to do something, and have been successful in the industry for 12
years, you can achieve it. Don't have the aptitude/analytical skills? Obtain
them. It's all about motivation. It's your life, make of it what you will.

------
staunch
Plenty of programming related topics bore me. I couldn't read a Java, SAP,
Oracle XYZ tutorial without snoozing.

Maybe you just haven't found a topic that resonates with you. It's perfectly
possible that includes _all_ programming related stuff, but it could also be
that you haven't found the right thing.

People often discover something that inspires them. Try a big variety of
things. Maybe you will find embedded hardware hacking to be interesting or
whatever.

I wouldn't try to force yourself into liking something that you don't like.
Life is too short to do things you're not passionate about.

Maybe you should even change careers if there's already something else you're
passionate about. Maybe programming could become a hobby.

------
mattm
I got some great advice early on in my career:

"Spend just 15 minutes per day reading about your industry and within five
years you will be in the top 1%"

I may not be in the top 1% but reading about programming has helped me come up
with solutions that senior developers were not aware about. It has made me
more interested in programming and had lead to more and higher paying
opportunities.

I never programmed as a teenager. I took my first computer class in grade 11
and always felt out of place since practically everyone in the class had been
programming for a number of years already. I got mediocre marks in university
and even considered dropping out of Comp Sci because studying it didn't
interest me. I also quit my first job after a year and took time off because I
didn't know if I wanted to do programming. That's when I found I missed it.

It is relatively easy to find stories of naturally gifted athletes who amount
to nothing. They end up going nowhere because they just rely on their natural
"talent" and after a while, people who put in effort start to surpass them.
The same is true of programming. Reading 15 minutes per day I finish 1-3 books
per month. The average programmer probably doesn't read 1-3 books per year.

I should clarify that I mean read books (I have a subscription to Safari Books
Online). Reading HN or Techcrunch for 15 minutes per day will probably not
improve your programming ability.

Of course, perhaps this is not relevant for you and you are just in the wrong
job but you do state that you want to be a good programmer. It sounds like you
are. Programming is more than just writing code. It also has a lot to do with
communication and understanding others which it sounds like you are skilled
at.

~~~
boxedin
What books do you recommend?

~~~
mattm
It doesn't matter. Just pick a topic that you are currently interested in and
start reading. Go to amazon.com, type in the subject and find a book with the
highest ratings that sounds interesting.

Sometimes I read about new languages I want to learn, sometimes about a tool
I'm currently using but want to know more and sometimes just about programming
in general.

------
chipsy
Most programming (maybe 90% or more, depending on what you're doing) is
boring.

The exciting stuff comes when you're learning, debugging, or architecting.
(Dealing with other people's horrible code, the build process, deployment,
etc., can also be "exciting," but they aren't sexy.) When there's nothing
challenging you and everything's just running smoothly, it's just really
straightforward, simple stuff that will put you to sleep, and the downfall of
a lot of programmers is to try to make it more exciting than necessary(amazing
new architectures, savage optimization, burying everything in
tests/types/patterns blindly).

So the key to learning, I think, is not just to "start small and work your way
up," but to try to make the small projects exciting, and gradually build up to
the big and boring ones, but always striving for some occasional challenges
along the way.

I did bits of programming, off and on, from an early age, but did not have a
major breakthrough until college, and still did not consider myself a
"programmer" until fairly recently. The breakthrough came from getting a good
formal treatment of CS topics(particularly data structures) in a lecture
setting. I needed that to see the possibilities.

------
dmfdmf
It would be impossible for anyone (but you) to untangle all the mixed
emotions, motivations, expectations and desires expressed in this post. I get
the sense that you are becoming aware of some facts about your career choices
that you are afraid to face. Maybe programming isn't for you, maybe quitting
your job wasn't such a good idea, who knows?

But you should have an honest talk with the guy in the mirror and figure out
what you really like, what you are actually good at and then make a plan. Its
true, as others advise, that some times you have to push your self to get to
the next level or reach that important goal. But it is also true that such
periods of effort and focus should not feel like drudgery. In my experience,
if I like what I am doing that effort is work but not drudgery. When I start
to feel drudgery creeping into my work life I know that is a sign to examine
what am I doing and why. (Of course, every job has some drudgery elements such
as paperwork or meetings but it can't be the whole deal).

------
mTh
Be constant. Have a daily program. Ask others. AND TURN OFF THE INTERNET (or
any other distraction source) while you are working.

------
roversoccer18
I was in the same state of mind as you are in. I am a college student majoring
in CS. I thought that all my programming projects were easy and only took me a
short time to complete each one. However, I also thought I was a average or
terrible programmer from looking at other peoples code. Then I realized that
there will always be a better programmer out there, either because they have
been doing it longer or they are just naturally better. You have to see that
you are still a good programmer, but there will always be someone better. Just
keep programming, and try to set a schedule for the time management problem
and reward yourself for sticking to it.

------
freshfey
Start with smaller chunks. I'm 22 years old now and I have next to no
programming skills, but I want to learn it. I was using computers since 12 but
hadn't coded something real until now, so I tell myself all the time that I'm
not meant to program, that I suck at programming etc., but I keep going and I
re-discover the fun in it from time to time. The more you keep at it, the
better you get.

Start with programming small apps you'd like to use, get on StackOverflow and
ask all the questions that come to your mind, built bigger things, fail, start
again, talk to other programmers, learn, build bigger things, fail again,
build again, repeat until success.

------
puredemo
Have someone mentor you in ruby if you want to learn.

