

Ask HN: My career has been fixing bugs for years. What now? - sown

It seems like since 2009 I&#x27;ve done nothing bug fix bugs, really. not my bugs, either. Now I officially work in sustaining engineering but I&#x27;m not really good at it. I kind of hate it.<p>I&#x27;ve been trying to build stuff on my own in C&#x2F;C++ (my day-to-day language, and I don&#x27;t do it well). I don&#x27;t think I&#x27;m getting any better at development. Things that are obvious to everyone else usually is unknown to me. I wish I could just &#x27;get better&#x27; like some of you will inevitably say but how?! I write my own stuff without direction or any real results. I&#x27;m very frustrated!!! I don&#x27;t know what to do! Any mention from me about a new feature or product idea is ALways shot down. They don&#x27;t want to hear from me.<p>I think I&#x27;ve made a serious error with my career because it seems like I can&#x27;t get hired anywhere else (I need to interview more, I think, though I can&#x27;t tell) and none of the development organizations in my company really respect me.<p>Am I done?
======
voltagex_
Come up with designs for little things you're going to build. Start a
Github/Bitbucket project (public or private, your choice). Write the design
up, then code it. Start small - I wrote a python script to let me send GitHub
gists from the command line and it turned into a multi-month project!

~~~
sown
I've done what you've suggested quite a while ago, not sure to what effect. i
don't know if anyone looks at my github.

I tried coming up with 'design' as best as I can but how do I even know what
it will look like? I don't know! i don't even know what to make.

------
TheCowboy
Do you have any mentors or anyone you can reach out to within the company to
discuss your ambitions? If all this is not being expressed to anyone, it's
easy to keep you where you are, especially when you appear to lack the
confidence to move on. Express it in terms that you want to grow as a
programmer.

Though you are fixing bugs, are you playing an essential role? If you quit,
would they hire someone else to fix these bugs? Have you made yourself
indispensable? If not, maybe you're not taking on enough responsibilities or
taking the lead when you could. Maybe you require too much handling, or maybe
you don't. It's possible you're undervalued.

Are you skills at fixing bugs any good? You might as well make the best of the
situation and improve your skills at testing and code analysis. You will
always be fixing bugs in any programming job.

It sounds like it could be bad company culture, unaware personal laziness, or
a negative problem, or a little bit of everything. But now that you're
thinking about your situation and what you want your future to look like,
you're in a better position to overcome these obstacles.

You asked, "Am I done?" Not even close. Even if you're 10 or more years older
than it sounds like you are, you can accomplish a lot over the long haul, even
when you're stuck in one spot for the short term.

~~~
sown
> Though you are fixing bugs, are you playing an essential role? If you quit,
> would they hire someone else to fix these bugs?

There's an entire department for this, 'sustaining'. I'm not sure what you
mean by taking on more responsibilities; I thought I was at work, taking notes
during code walkthroughs (they're never any good), running meetings. I can't
really solve any more bugs faster, even the hard ones. I don't know how to
make myself indispensable. They mentioned in my annual performance review that
I need improvement on 'innovation' but I don't even know what that means.

My skills at fixing bugs varies. They're usually horrible, I guess. I've been
there for a year and I still don't u nderstand the code base, really; I get
jerked back and forth all over it. I can't remember any of it. The programmers
look at me with contempt, now.

It's certainly possible that I'm some how 'lazy', though my initial reaction
to you accusing me of sloth was mis-taken, I hope. I don't know how to read
large complex code. Everytime I make a change it's always _WRONG_. I'm getting
more hysterical the more stressed I get. I don't know what to do.

------
fbliss
I know this story, I think most of us suffer from this feeling.

First off, we shouldn't just sit down and start typing into a blank page. We
all do it, but remind yourself just the same that doing some high-level
conceptualization is very helpful.

Maybe you are getting overwhelmed thinking about all that you need to do, and
it's discouraging you out of being in your "zone"? That happens to me. Remind
yourself to only focus on the next five minutes.

I'm self taught. I have and had a lot of broken knowledge, misunderstood
concepts, etc. I was able to overcome most and self-teach by first trying to
find a patch of code that did something similar to what I needed or wanted,
and then I copied it and re-purposed it. I truly can't think of a better
teaching method than to find and tweak analogous code snippets.

I also think you are in a corporate culture that kinda... sucks. It doesn't
seem very collaborative. Get out of there as soon as you can, and I mean don't
wait till you think you are ready, I mean do it as soon as sanely possible.

------
sekm
The only thing you need to change is your attitude. If you become more
balanced (I've noticed a lot of nos and cants here), you'll probably spring
back much better.

Are there other things in your life that you can change for the better? The
answer may be a couple weeks of enjoying time with some friends or family.

~~~
sown
> If you become more balanced (I've noticed a lot of nos and cants here),
> you'll probably spring back much better.

I know what you mean, but I can't just 'change' it like I do a channel. All my
life I've been a loser. Got straight-Fs all through school and college because
I can't learn right, now I've got my employer saying I'm just barely
satisfactory with other programmers saying they're unhappy with me. It's
objective stuff that I can't dismiss so easily.

Things I can change? I dunno. I lost a bunch of weight, I can now run a few
miles, do pull ups. I've gotten better at talking to people. Maybe I should go
into sales (laugh*.

> The answer may be a couple weeks of enjoying time with some friends or
> family.

I don't have any of those. I'm trying to fix it. I do want to take some time
off, though i'll probably just work on my own stuff.

~~~
vijucat
> Things I can change? I dunno. I lost a bunch of weight, I can now run a few
> miles, do pull ups. I've gotten better at talking to people. Maybe I should
> go into sales (laugh*.

Well, why not? The goal of life, if any, is probably more in line with being
yourself and enjoying it while you can, not writing C++ code because that's
what "real hackers" do, or whatever illusion you're using to punish yourself.

Seriously, losing a bunch of weight, running a few miles and doing pull ups
are awesome things. Getting better at talking people is beyond awesome; it can
be life-changing.

You got straight Fs because you're playing their game. You'll ace it when you
start playing your game. And the best thing about life is that you get to
define your game. That's the meta-bug you need to fix! :-)

------
phazmatis
To get better, you need to know what to build. You need the path to be laid
out before you. That's what college is right? And endless string of projects
with clearly defined specifications.

With your years of bugfixing experience, you intuitively know what makes
working code, but probably feel lost when it comes to architecting a side
project from scratch.

So, take what you know (your employer's product domain and engineering
projects) and rewrite them on your own time. Of course, you probably can't
release it due to your employment contract (if it's anything like the usual
contract), but that's beside the point.

With architecture out of the way, and your super ability to write bug-free
tested code, you're forced to focus on your weak area: architecture. It'll be
fun. And stress free, since no one will ever see it.

~~~
sown
> To get better, you need to know what to build. You need the path to be laid
> out before you. That's what college is right? And endless string of projects
> with clearly defined specifications.

College was pretty shity. The OS class was a bunch of slides. My compiler
class was better, I actually built something that generated something but i
don't think it was executable code or java byte code or whatever. No one cares
about it anyways.

> With your years of bugfixing experience, you intuitively know what makes
> working code,

No, I don't. I've been at my place for a year or so and I'm just as lost as I
was on the first day. I can't remember anything.

> but probably feel lost when it comes to architecting a side project from
> scratch.

sort of

> and your super ability to write bug-free tested code,

According to my boss, this really isn't true.

~~~
phazmatis
Luckily, there are ways to get better without actually coding.

1) Watch every confreaks video on youtube. You probably won't remember any of
it (I don't). That's good. It's not being filed away in your memory, it's
slowly changing the way you think. (Optionally) listen to these instead,
preferably while playing a mindless video game. If that doesn't do it for you
take up knitting.

2) Read the entire documentation for a language, front to back. And it's going
to be ruby. First the core: www.ruby-doc.org/core-2.1.0/ Then the library:
www.ruby-doc.org/stdlib-2.1.0/ It won't make any sense at first, so read it
again. Repeat until you think you could create whatever you wanted, in Ruby,
provided you had those references in hand.

3) Do not spend another second entertaining thoughts that your code sucks or
something. If you have time to think about such things, you have time to read.

4) Don't create side projects until you're confident that you can complete
them, since fear of failure is too great an obstacle. Instead, make it a
priority to read programming blogs. Don't say they don't make sense, it's
irrelevant. Again, this is changing the internal language of your brain and
setting you up for sudden "aha" moments later (trust me).

5) Don't waste time considering the relative merits of languages/frameworks. I
just gave you a language: Ruby. Use rails. Don't be persuaded otherwise until
you are equipped to make a decision for yourself (I'm really not yet either).
Ten other people would give you ten other starting recommendations, and all of
them are grand. But someone has to make the call, so I'm making it.

6) Don't not program. If you have spare time, literally writing hello world
over and over is better than not programming.

7) This is going to suck. Everything about it will suck. Your code... will
suck. But you don't have the luxury to acknowledge that fact. Doing so means
instant defeat. 90% of getting anywhere is convincing yourself that you are
incapable of failure, like some kind of superhuman coding god. If you can shut
out all mental opposition to your success, you will get there much faster.

Oh, and your boss can suck a bag of skittles. Don't listen to that jerk, (s)he
wants to keep you from realizing your true potential and going elsewhere,
because whatever kind of hellish whipping-boy type development role you've had
the misfortune of getting stuck in is going to be hard to fill.

~~~
shoo
> 6) Don't not program. If you have spare time, literally writing hello world
> over and over is better than not programming.

I humbly disagree. If you're writing the same thing over and over, your mind
is probably stuck in some pointless loop. Why not do something else like going
for a jog until you cant think any more?

~~~
phazmatis
That's actually great advice. Exercise + changing your environment will help
get creativity flowing. But that's all outlined in tons of confreaks videos.

------
logn
I think it's normal. A lot of programming jobs are maintenance. Try getting a
new job. Look to get hired to a team building a new app or doing a rewrite. Or
work for a webapp/app consulting firm with lots of new projects. Or take a job
at a startup.

Also it might help to learn another language or two to get the best job. The
best choice depends on where you live. In SF it feels like
JS/Python/Ruby/Obj-C are good. Elsewhere, probably Java or Obj-C.

Also, getting hired is a numbers game. Keep at it. Read up on latest trends to
get hired. Make friends with recruiters, founders, and CTOs. Bug fixing is
hard work, so I think you have the aptitude. With some more exp you'll be fine
at new development.

~~~
sown
> I think it's normal. A lot of programming jobs are maintenance.

My job is only bug fixing. It's 'sustaining' engineering. I'm not sure it's
going to be possible to transfer, but I'm going to try anyways. I think I'm
marked for death despite being told I'm satisfactory. I'm told that they block
such things like transfers for people they don't like. I'm going to try
writing some web apps and show them to the other departments that do that sort
of work; maybe that'll help.

------
mattwritescode
Dont take this the wrong way but it sounds more like a self confidence issue
more than anything else. In the work environment if you can appear more
confident than your peers then you will find they respect you and your
suggestions more.

Its amazing what a difference it can make.

It also sounds like you need to get out there and find yourself a new
challenge.

You say you have been doing C / C++ development work it should mean you have a
good range of skills. Why not look for a new role using a different
programming language. You need not be an expert but seeing as you can code
most companies would be happy to have you.

It would offer you a good platform to renew yourself and make an impact in a
different company.

~~~
sown
> Dont take this the wrong way but it sounds more like a self confidence issue
> more than anything else

That's very real. I'm a loser -- now and forever, and I don't know if I can
keep programming because I'm so horrible, it seems. I keep trying the mindful
meditation stuff but it's hard when you have people saying they're unhappy
with your work and I have to get my (wrong) work checked all the time. I used
to love working where I am but I get instantly tired as soon as I walk in the
doors. I want to quit some days, others I want to press on. I'm trying to
build something in my spare time so I can feel like a winner, at least once in
my stupid life.

The options are keeping me here, and the sense that I shouldn't just quite
yet. Maybe if I press on I'll survive, but if I never win and never quit it
probably means I'm at my limits of what I'm capable of.

------
Bahamut
Try setting a simple goal to build - something simple like a webpage that
might do some simple animation with javascript & host simple static content,
or a program that reads a file and outputs content based on your search
parameters.

One of the most difficult goals while learning programming I've found is
setting reachable goals.

