

Ask HN: Career advice for a torn developer - spread_thin

Throwaway account, because I've been a member here almost 3 years. I'm struggling. In my day job, I work with .NET on a nightmarish codebase that was written in .NET 1.1 a few years ago by outsourced developers. Management doesn't care about the low code quality--just pumping out new features that get precariously bolted on to the existing pile of shit.  Same old story, I know. The problem is, I'm having an increasingly tough time swallowing this bitter medicine in exchange for a paycheck. All my time at home is spent working with OSS technologies--I'm up every morning at 5am playing around with ruby and learning rails for a couple hours before work. The frustrating thing is knowing that without quitting my day job and holing up in my office for a while, I won't be able to increase the rate of my learning beyond what I can get done in two hours each morning plus weekends.<p>I am at one productivity level with the .NET stack, and a much lower productivity level with everything else. The cognitive dissonance that causes is like a little devil on my left shoulder whispering, "If you were using C# and T-SQL, you'd be done already. You could have already written your own ORM--who needs ActiveRecord?" and a little cherub on my right shoulder: "No no, this is good for you. Keep working, stay motivated, and soon you'll be more productive using Rails, you'll have all sorts of projects for people to use on github, and your life will be complete." At this point, I think the fat little cherub is blowing smoke.<p>I must be doing something right in .NET land, because former coworkers are actively seeking me out to work with them again--but I'm just not that into it. I've tried to tell myself that the technology doesn't matter, that there's no reason to shy away from .NET... but I'm scarred by what I've seen. In my experience, .NET makes certain things so easy that you just don't have to care about doing things the right way--and I've spent the majority of my nascent career cleaning up the messes this causes.<p>I'm not a fan of these whiny, "help me figure out my life" posts (even after writing one), so part of me wouldn't mind or be surprised if this just disappeared in the froth. However, the other part of me would love some opinions: Should I just stick it out for a while, save dough, then quit and hole up for six months, hopefully coming out the other end with the necessary skills to work in a ruby shop? Should I start contacting places I'd like to work and see if they'd take on a young, seriously motivated former .NET dev who wants nothing more than to learn how to do things The Right Way using OSS?<p>"Build something" will probably be the overwhelming sentiment--and I hear you and am doing it. The issue is more that my motivation and ambition to be a great programmer far outweigh my patience for the only two-hours-per-day hacking I've been doing. So... coping mechanisms, anyone?
======
mattm
I have been in your position a few times before - not with wanting to switch
languages though. My experience is that if you're asking people whether it's
time to quit, then it's time to quit.

~~~
spread_thin
Yeah. The wrinkle is I've only been at my current gig for five months... the
pragmatic side of me doesn't want to have two back-to-back five month stints
on my resume. I left my last job after five months because a former coworker
presented me with an opportunity that I'm discovering was slightly...
embellished.

~~~
mattm
I haven't worked longer than nine months at any one place since starting my
career four years ago. It hasn't hurt me in finding work. In fact, it's
probably helped me. I have had a couple past places contact me for work, I
have a larger network and it has given me a wider range of knowledge and
experience.

Be careful about living your life based on what other people will think. Live
how you want to live. You always have a choice and you are always making a
choice.

The last employment position I had (currently I'm contracting) I should have
quit in the first month. But instead I stuck it out and left after six months
having been ashamed at the apps I was working on. I would have saved myself a
lot of grief and could have found better work that I could actually be proud
of. This place was the only time where I actually dreaded going to work by the
end. It was so bad that one morning I was actually contemplating to just not
show up and I didn't care enough to tell anyone.

~~~
spread_thin
Do you do contract work? Or has it been run-of-the-mill full-time employment?

I agree about not living based on what other people think--I guess it's the
typical decision between "take a risk" and "comfortable misery"... although
put that way, doesn't seem like there's really choice, does it?

------
gregschlom
I see two things in your story.

1\. You want to learn something new. When it comes to learning a new
programming language (and a new framework), there's really just ONE way to do
it: work on a real project, full time. Two hours a day is too short to solve
the issues you'll find, and without a real project, it's hard to stay
motivated.

2\. You want to quit your job, for a number of reasons. It's boring, you don't
like how the project is managed, the code base is awful, etc... So you'll
probably should be looking for new opportunites.

But as I understand your post, you're asking: "should I quit my job to start a
new career with a technology I don't fully know yet?" This is not the only
option. Quiting your current job for a new .NET developer position may be
really good as well. Learning the structure of a new project, working with a
new team, etc... will satisfy your need for novelty. You don't necessarily
have to pick up another language.

~~~
spread_thin
1\. completely agree

2\. yep.

your last comment is a pretty succinct description of my goal. i guess what i
should be asking is, what's the best way to make that transition? i kind of
fell into .NET development--no real passion there and it's been a large effort
just to keep current when i'd much rather be working with something else.

~~~
gregschlom
Work for a startup, then. I guess any startup will warmly welcome a good
developer. The fact that you don't know the language is no obstacle at all. In
at most one month, you'll be almost as proficient in Rails as you are in .NET
now.

------
peteypao
I was in your same position a few months ago. I also wanted to learn a new
language to break free of the corporate hegemony. Here are a few lessons I
did:

1\. It's not about the language, it's about the work environment. C#/.NET is
just a tool, like Ruby, Scala, Clojure, etc. It's not the cause of your
misery.

Your work environment sounds like what's causing your misery. Get out of
there, find a startup, find a problem that you'd love solving. Even though you
use .NET in that new project, your life will be 10x better. In the end, it's
not the technology that is causing you strife, it's the environment you're
using it in.

2\. Work for yourself. You say you get a lot of interest from people you've
worked with before. Why don't you start your own consulting business... do
business your way.

------
squidsoup
If your .Net codebase is crufty, get some unit-tests in place and start
refactoring to make it better. It could be a lot worse - you could be
maintaining a legacy spaghetti classic asp system. At least with .Net you'll
have the ability to make some incremental improvements. Personally I find this
kind of re-working of poorly written software enjoyable, but I may be in the
minority.

~~~
spread_thin
I wish that were an option. The mentality here is, "If it ain't (too) broke,
don't fix it." Which means people actually get in trouble for doing refactor
work that doesn't add new functionality. But you're right--compared to what I
could be doing, this isn't a bad gig. I just wish I could be satisfied with
"not a bad gig"...

