

Ask HN: What have I missed? - knicholes

At my old job, I was the go-to guy.  People would come to me to solve their problems.  Everything was good until I took a better paying job.<p>First things first.  I have my BS in CS from a local University in Utah.  My GPA, at the end of it all, I ended up with a GPA of 3.32.  Yeah, it's not the best, but I was working 30-40 hours a week to pay for it.  (at least that's my excuse)I landed an internship making websites and learned python/javascript.  I worked that job for a year. I worked another job for a year and a half until I got an offer for more for my exact skill set.  I impressed sufficiently to receive an offer.  I denied the offer and got $5k more.  Then I accepted.<p>I just had a six-week performance review.  They say I'm not completing enough work.  They (my boss and the two guys on my team who told my boss (who is not directly involved with my work)) say that they expected me to be kicking ass by now.<p>It would appear as though I don't kick ass.  What happened, then, at my last job?<p>Am I doomed to work for $45k for the rest of my life because of my sub-par work?  I had thought that by getting a degree and having a skill set that was in demand, I'd be able to write my own ticket.  Now I'm not even sure if I can write a webform.<p>What advice, if any, do you have for a programmer who thought he had the skills and the education to be a productive programmer, but doesn't?  Should I watch all of the MIT CS courses to find out what I missed out on?  Just program more?  Read about and practice with new exciting technologies?<p>Anyway, I will probably take the advice listed here to heart and do what is said with unstoppable determination.  I need to be a good programmer.  I just don't know what I've missed along the way that makes me not good enough.
======
byoung2
It sounds like at your first job you were an intern, and the bar is pretty low
for interns, so just showing up every day and not breaking production is
enough to impress. So you left for greener pastures, or so you thought, but
you discovered that along with more money comes higher expectations (whether
those expectations are reasonable I couldn't say).

Not completing enough work sounds like an unusual critique for a developer
review, unless you are consistently missing deadlines/deliverables. Are they
not properly managing your workload? If they gave you 6 weeks to update a meta
tag, then that's their fault for not giving you enough, and your fault for not
calling them on it. But I don't know the full story. How did they rate the
quality of the work you did? Was your code clean and bug-free? If not, then
that is the real problem.

Also, does anyone find it strange that a company would give a developer a
review at 6 weeks? It hasn't happened to me ever and I've worked for big
companies (Washington Post, ClearChannel) and small startups.

~~~
knicholes
Oh, the first job as intern lasted a year, then my next (where people came to
me for help) was for 1.5 years. I committed some code that wasn't the most
efficient-- Like there was an error where a user didn't have a profile, so
instead of going into the database and making every user have a profile, I
added the code that checked if they had one, and if not, it created one. I did
things like that. I left a console.log statement on one of the pages which
broke some features for IE users for a couple days.

One issue, for sure, is I was intimidated by the guy who handed the project
off to me. Nothing I did seemed to be good enough. I did a Model.object.get()
to test if it exists instead of a Model.objects.filter().exists(). So my code
wasn't extremely efficient. I don't think that that kind of the thing
TERRIBLE, but it is what it is. We had a big argument about git workflow. I
was making individual feature branches with ticket numbers that matched up
with our bug tracker. When tested locally, I'd push to a staging server, test
it there, then merge the feature branch into master, and push live. He said I
was making it too complicated and that stage needed to be exactly like
production. I'm used to stage being a playground. He told me that that was
what local development was for. I thought it was easier to test the stripe
webhooks on the staging server instead of doing some DNS crap so I could get
stripe webhooks locally.

Ah, I also committed to the master branch code that had a template tag error.
I corrected it after about 5 minutes (and nobody had triggered the error. I
triggered it when testing some other push I had). I wrote it off as being
human, but he wrote it off as being bad.

It sucks to think that a couple small mistakes early on means I get fired,
though.

------
dmlorenzetti
Are you sure the problem is your programming skills, rather than, say, the way
you manage expectations about your productivity? Or the way you present what
you've done?

If it was an honest performance review, they should have been more specific
than "not completing enough work." Consider pressing for details about their
performance expectations, and then either work to meet the metric they name,
or work to convince them that the metric isn't the best one by which to
measure your performance.

It may not be a problem you can solve by just boning up on exciting new
technologies. You may have to educate them on the merits of things you do
that, in their opinion, slow you down-- like writing unit tests, automating
builds, creating bug databases, or whatever.

This book may not exactly address the situation you're in, but you might have
a look at Terrence Ryan's "Driving Technical Change", which talks about how to
convince others on your team of the merits of different approaches you've
adopted.

