
When to quit? - djmill
I have a slight dilemma... I was brought on as a software engineer for a large company back in September. I was an intern for this company for ~2 years prior and had a great time working there, until I started full time.<p>The team has changed drastically since I started interning there. In the beginning, we did all of our development in-house with ~5 engineers + myself. I was able to get help anytime I needed it, but now 99.9% of the development is done off-shore.<p>I&#x27;m now the ONLY in-house developer with NO understanding of the current applications we&#x27;re working on. Not only that, but we&#x27;ve switched technologies from Rails to Spring. I&#x27;m really good at Rails&#x2F;Ruby and can work on those types of applications without much help at all. When it comes to the new stuff, I take in a deep breath and then think to myself <i>run away as fast as possible</i>.<p>The new code has almost no comments. The new code almost ALL needs to be refactored -- and this is landing on my shoulders.<p>My question to the community is this... when should I quit? I want to leave ASAP but I have no other job offer on the table. Every day I come to work and ask myself &quot;why the hell am I here?&quot; because they don&#x27;t need me. If I dropped off the project, nothing would really change because I haven&#x27;t contributed anything to the project and I&#x27;m having a lot of difficulties learning from the devs -- especially when I can&#x27;t even learn from the code base.<p>I started this job ~3 months ago, so would it be legit to just remove it from my resume and spend my time finding a new job?<p>Help!
======
brucehart
I would start looking for a new job immediately, but stay in your current job
until you have something lined up. It's much easier to find a new job when you
are already employed. Relax and just focus on developing your skills and
learning as much as you can while you are there. What's the worst that could
happen, you get fired or laid off? You are considering leaving the job off of
your resume anyway. You might as well collect a paycheck while you are
looking.

Learn everything you can about Java/Spring even if you never intend to write
another line of Java in your career. It's always helpful to be familiar with
other languages. Be polite to your employer and (when you have a new job lined
up) just say you are moving on to an opportunity that is better aligned with
your goals.

I once worked on a project that required refactoring classic ASP code written
by a company in India. The code was a rat's nest. The site had hundreds of
pages and most of them had three or four copies of the code commented out
(this was their "version control system"). At the time I hated it, but looking
back I learned a lot about what not to do and how to be a better programmer. I
used the opportunity to create automated tools to clean up the code and
experiment with new technologies.

------
JSeymourATL
> The new code has almost no comments. The new code almost ALL needs to be
> refactored -- and this is landing on my shoulders.

As the ONLY in-house developer-- can you help your employer? That is to say,
can you manage-up and make the necessary changes? Can you learn the new
technologies? If you could make those changes, how might that impact the
attitude toward your work? How might overcoming these challenges help you grow
professionally?

It's easy to run and find a new job. It's much harder to stay and fix things.
But that's how great careers are made.

~~~
djmill
I can refactor the code. I can learn the new technologies. But what I can't
do, is grow as a developer in this environment.

I'm also afraid that the offshore team won't learn to write code correctly the
_first_ time and that I'll become the "refactoring guy" \-- which is a
horrible way to develop software.

For a first job, I shouldn't be telling devs who've been in the industry for
more years than I have, that they're doing it wrong. I should be the one being
told I'm doing it wrong. I should be the one copying and pasting code, but I
know better than that to do it right the first time.

Aside from switching technologies, it's more about how we get things done.
Java and Spring aren't the problems, it's more of everything else that's the
problem.

~~~
JSeymourATL
> For a first job, I shouldn't be telling devs who've been in the industry for
> more years than I have, that they're doing it wrong.

You've got 2 years internship experience, plus a battle-field commission as
the ONLY in-house dev. Suggest re-framing these obstacles as a laboratory for
self-development. The ability to find common ground, encourage candid
collaboration, and solve problems is a desirable leadership quality.

But if you can't help, then you shouldn't take your employers money.

------
jtchang
Totally. Your career is yours alone. If you don't need the money immediately
then why be unhappy?

Put it this way. You've spent 2 years 3mos at this company. You're a free
agent and now is the time to focus on other career opportunities. Your boss
won't fault you. When people ask what you're gonna do just say you are
evaluating your options. If they ask why you are leaving just be very straight
forward.

Be prepared for a counter offer if you are critical to the team.

------
tptacek
Yes, that is completely legitimate. Nobody is going to bat an eyelash if you
do that.

------
hashtree
I'd go with your gut on this one and get out of there as quickly as possible,
without something else lined up. I say this knowing this cannot always be the
right answer for every dev in this scenario, but if you are one of those who
is unwilling to settle in life/career, are talented, and are confident in your
ability to get hired if you set your mind to it, well...

I've been there myself, and it is hard to go against the herd telling you to
play safe and stay for the security/money. Life is short, make yours worth
while and take risks on yourself. Jobs, money, and titles are fungible for
those who are truly great practitioners of their craft. This might sound like
anti-advice, but a great way to ensure you have all the job prospects in the
world going into the future is truly falling in love with practicing your
craft and be uncompromising for things that get in your way of that.

One thing I would mention before you fully depart is to go for a "longshot"
pitch to your superior(s). Put together a plan for how the department could be
put back on track and show you can help reach that vision. Find out why the
Rail to Springs change was made, why outsourcing is being preferred, what the
department's goals are, your thoughts on moving forward, and how you can lead
such a change, etc. Worst case, you know for sure this isn't the right fit.
Best case, you get a promotion to lead and bring the change the department
needs. If you have plans to be more than an employee someday, you might also
enjoy finding out how the series of events lead to a poor outcome came about.
Something to take insight of, if you ever venture off on your own (plus, it is
interesting to know how the world "works").

I wish you the best in life and career!

~~~
djmill
"I'd go with your gut on this one" \- That's what I've been telling myself for
a couple of months now, but I haven't been able to convince myself of it yet!
So thank you!

And as for the management part... it's a lost hope to be honest. I think one
of the reasons they switched from Rails to Spring was finding the right Rails
developers was difficult. The company doesn't pay competitively, so that was a
big hit on offers to Rails devs. Additionally, it was harder to find Rails
devs.

The funny part is... we got this offshore vendor for Java Spring and none of
them knew Spring. So we would've been better sticking to Rails and had them
learn Ruby from the get-go.

~~~
hashtree
Your thoughts as to why the changes came about would have been my own first
guesses, without knowing the situation. You are right, it might be a lost
cause but I still see a longshot pitch due to the "opportunities" I've seen
you describe (e.g. recently occurred, Java productivity vs Ruby productivity,
new devs don't know Spring, scrapping codebase(s), etc). Some thoughts:

    
    
      - Determine/guess the costs of the outsourcing and use it as the base for your
      pitch. (i.e. what can I do with ~200k for my own pitch)
    
      - They are open to shifting things off-site, use this to your advantage. Rails
      devs are hard to find? What about a distributed team of talented Rails
      developers? No longer are you restricted to a ~50 mile radius. Depending upon
      your location, you might have a higher cost of living than remote developers
      which is in your favor. Your candidate pool is now huge. Etc
    
      - Fewer/more talented developers over more/less talented developers who
      don't even know the framework (Spring).
    

In all honesty, I'd expect the pitch to fail given the number of seemingly
poor decisions made up higher to date. I am curious, is the software being
developed an expense for the company or does it make money for the company?
I'd expect the former, given the descriptions. Tip: If you can, work for
projects that make companies money and are not seen as an expense. That subtle
difference has huge impacts on management, pay, decision making, etc.

~~~
djmill
It's actually a replatform project that generates no money for the company.
The old application is running on Rails and we're rebuilding everything in
Spring and adding a boat load of new features.

------
djmill
Phew thanks for the replies! I kept telling myself this in my head but I
really needed some reinforcements to make sure I wasn't crazy.

~~~
trcollinson
I would certainly think about the other replies that people have given, but
allow me to give you a slightly different view of your situation and the
industry as a whole. When I was first starting out I wrote in Basic and then
very shortly after in C. From there I moved to Visual Basic and I thought
"Wow! What am I doing? I'm not comfortable in this. I am much more efficient
and happy in C or my old Basic. This is the worst idea ever!" But, I did it.
Then there was C++, .Net in various flavors, and Java also in various flavors.
Each time I thought this language/framework stinks! It's actually a relatively
common thing to think from a developers standpoint. In very recent years I
have learned Ruby and Rails as well as some Python and Django. Then a few
weeks ago a very lucrative and fun contract came up in PHP (of all things)! At
this point I feel very comfortable with three ideas in my career that might be
useful to you:

1) There is no perfect language and all of them can do amazing things with the
right person (me! and heck you too!) behind them.

2) Sometimes I will be less effective when I am starting in a new or changing
environment but half the fun is finding where I can lead and make great
changes for the users.

3) Offshoring will exacerbate issues these issues but my ability to make
substantial impacts increases exponentially with the amount of offshoring that
is going on within an organization. I capitalize on this.

Obviously, if you are just tired of being there and don't want to stay, then
leave. Though I would suggest like either that you find a job before you quit
your current position. However, if the whole code base needs a good
refactoring, by all means, make an impact! Start in a small piece and make a
difference. Start to lead.

~~~
djmill
I totally understand where you're coming from and thank you for the reply.

I completely agree that there's no perfect framework and I definitely feel the
pressure of switching to something new; however, I have been working with
Spring since ~May and although I follow best practices to the best of my
ability, the offshore team doesn't.

The team leads that I work with in-house don't even understand the application
enough to help me along the way, so any help I get is from the offshore folks
who've completed the dev work and understand the applications -- which eats up
their dev time too. I can't even rely on documentation or comments in the code
because almost none of these things exist. So to understand a feature flow, I
have to read through copy/pasted code with some Java classes spanning 2000
lines of code that need to be refactored. All while keeping to unrealistic
release deadlines (which I'm sure I'll find anywhere else lol).

Some of these problems stem from how our BAs create the user-stories. Our BAs
have a tendency to bloat stories and write them in a waterfall-like fashion --
when we're Agile. So the offshore devs take on too much work, point them far
below their real size, and write shit code. The code comes back to us, and we
have to redo it -- there's nothing good about this. We've tried changing how
BAs create stories, etc. but nothing has changed, it really feels like all
hope is lost.

~~~
califield
> The code comes back to us, and we have to redo it -- there's nothing good
> about this.

Implement code review and start rejecting their pull requests with
constructive criticism and mentoring.

~~~
djmill
It seems to be an issue because the offshore folks are saying they do code
reviews... but when we review the code, it's clear that they're not - or if
they are, they have no idea what's good code and what's bad code.

The main issue is that I need to be mentored. It's my first full-time job and
I shouldn't be the one mentoring anyone unless they're an intern with no
knowledge of enterprise software development.

------
Smushman
I think you need to leave. Start looking immediately even if you are not sure
yet.

BTW I am in the exact same position right now myself. I did not follow what I
am going to suggest to you next. But I hopefully have learned my lessons and
won't be here again. These lessons were learned through mistakes I made and
still make.

1\. Always be looking for a job.

This means you should often be checking for jobs in your career field, even if
you know there is no chance you would leave. Make sure you keep in mind:

Growth or looking for your next step. Too many people go from one job to the
same job elsewhere. They are passing up a great opportunity to change their
direction!

What kinds of things/skills others are looking for in an employee with your
skillset. Helps you keep yourself employable.

Temperature and pay of your field. Is is waxing or waning in popularity?

This also reminds you to keep your resume and profiles updated.

2\. Keep in mind it can be 1-3 months to find a new job that works. So, see #1
again to keep that number at the low end. Careers outside of tech can expect
much longer timeframes.

3\. It is a numbers game.

There are odds that work in your favor and odds against.

Timing is probably the biggest single predictor of your happiness and pay. For
example, I work in IT. If I am applying for jobs in Nov-Dec I know I am
probably a backfill replacing someone who is leaving. Backfill gives you great
negotiation room but are almost guaranteed to be difficult. Why difficult?
Logically, there must be some reason the last guy is leaving. And you will be
expected to be at least as good, and lastly you will have to quietly clean up
his mess.

Timing is also almost impossible to control. So keep that in mind. See #1
again to improve those odds.

HTH.

~~~
djmill
Yeah, the only thing I'm afraid about is leaving this job for another job of
the same quality.

I did an interview at a company where my old mentor works and they've been
looking to expand and hire new engineers, but it's been 2 months. I just sent
his boss an email to see if anything's changed, because that'd be my #1 choice
-- work with a mentor I know is good and if he says the place is good, I trust
his judgement.

Now to wait and see if luck is on my side -- but I've started applying
elsewhere, so I'll keep my fingers crossed.

It's just scary leaving a job when I don't have another lined up.

~~~
Smushman
It is scary to leave one job without another I agree.

The worst part is the fear that you will make a mistake out of desperation to
just get something going. And you know what, unfortunately that fear bears out
as fact, at least it has for me.

Historically I take the jobs that paid the most or made my hire the easiest by
just being there when I needed them. This was a mistake though. It put me in
some lousy jobs that I had very little chance of succeeding in, and before I
even started.

I am really hoping this time out I can change that history; and I hope the
same for you.

Good luck to you.

------
realusername
All the answers here are really good. I would just add some advice for your
new job (if you choose to change) : Always ask for a detailed presentation of
the product and the current work in the interview. First, that is showing them
that you are interested in the job and everyone like talking about their work
but even more important than that, they cannot hide anything.

You will see instantly from what they do currently and how they present it
which type of company they are, you will see any management issues, how good
everything is done and how they care about their product(s). Nothing can be
hidden this way. As a software developer you have a tremendous choice about
the type of company you will work, so life is too short too work in a company
you don't like !

------
braindung
I'm in a similar situation. Started as a software engineer this summer and it
was a perfect work environment: boot-strapped with fast-growth ($50m in 2
years), pingpong/food, good team, $85-90k + 0.2% equity. Then they hired some
executives who started changing our roles and let go some of our teammates.
I'm still technically an engineer but I'm working on functional tasks that a
high schooler is capable of (eg. powerpoints, researching prices,
documenting).

Not sure if I should stay just because it's paying well and is mind-numbingly
easy work or leave because it's soul-draining and the company is likely to
fail with the new management.

~~~
djmill
Ouch! That's really unfortunate that your job has changed so much since new
management took over.

I'm on the same side of things -- weighing the good monthly pay vs. finding
something I actually enjoy.

------
x0rg
I'm in a similar situation. I've been recently promoted doing a job that I
didn't like before and I decided to accept the money and the new offer. Now my
life is a pain, my productivity is very low, I'm working 60 hours/week and I
totally hate what I'm doing (mostly very old Java products customization). I
think I'm going to quit even without a new job, cause I have no free time to
search for a new one. Remove nothing from your resumee, why should you? I
suggest you take your life and career back from what you are doing... and
enjoy your time the most you can.

------
chandrew
Start interviewing. And I'd secure an offer before giving your 2 weeks notice.

------
saturdayplace
Before I was a working programmer, I worked in graphic designer and 3D modeler
and sometime animator. In 2008 I was working for an architecture firm building
pre-visualizations for the projects they were either currently building or
ones they were bidding on. I'd dabbled as a web developer as a hobby for a
couple years.

Then the bottom dropped out of the economy and I was laid off. I took it as a
chance to turn this whole web hobby thing into a full-time gig. After two
months I landed a job as a web developer at a very small printing company.
They needed someone who could blend design and web dev into one role, and it
seemed I fit the bill. They had another dev and apart from that had no idea
how to build a website. I was grateful I wasn't going to have to dig into my
savings any more. Three days in I already started dreading going to work in
the morning. I didn't gel with my manager, we constantly misunderstood each
other. I never understood what he was looking for design-wise, so I kept
bugging him for clarifications. I got the impression he thought I was a diva.
And the dude was a printing industry vet, who just didn't understand the web
at all. It wasn't a good fit.

I was rescued that Friday by an offer from a different company I'd interviewed
with. So after a week, I walked into the owner's office, told him I had a
better offer[0], and that I was leaving now. I walked right out the door. No
two-weeks notice.

That job is notably absent from my resume. Why would I put it there? The whole
point of a resume is to sell yourself to potential employers. If you don't
want it to come up in future job interviews, don't put it on there, and it
won't.

No one else is going to look out for your career[1]. I almost look at my
personal career development as my actual "job" and positions at companies as
steps along the way. Take charge of it. You get to be responsible for your own
path.

[0] It really was a better offer. Something like a 40% pay raise, WAY better
benefits, a boss who understood what I did and could communicate what he
wanted, and a very nurturing company culture.

[1] Well, someone else might. Some companies are better at this than others.
But no one's going to advocate for you the way you would. So you might as well
get used to doing that work for yourself.

~~~
djmill
Yeah you're right, if I remove it from my resume, no one will ask about it. I
figured since I recently graduated, it's not uncommon to be 'unemployed' for 3
months or so after graduation.

It'd definitely be best to wait until I have another offer, but I find that
I'm far too stressed over something I have the power to change.

I shouldn't be this miserable at my first job -- at least I had hoped that
prior to starting.

------
AnimalMuppet
I think it's important that, on the way out, you tell your current company the
truth - that they put you in an impossible situation. It won't help you any,
but it might help the next person not be put in the same situation.

Don't tell them this in malice or anger, but do tell them.

~~~
robkix
I've never seen this be effective. I worked at a place that had quite a few
people leave within a few months, all citing more or less the same issues I
did, and still to this day the culture and problems are the same.

The truth is if the problem is management then it's very unlikely any
meaningful changes will ever be made.

~~~
AnimalMuppet
> The truth is if the problem is management then it's very unlikely any
> meaningful changes will ever be made.

I agree that it's unlikely. But if nobody says anything, then it's even less
likely.

One truism of business is "The higher the management level, the less truth you
hear." If you're on your way out (having another offer in hand that you're
taking), your downside for telling them the truth is very small. Management
_might_ listen. It's unlikely, and even if they do it still won't help you
any, but it's still worth the attempt.

------
djmill
Thank you all for the replies, they really helped me analyze both sides to
finding something new.

I've decided to stick it out and make the most of it while I look for
something more suitable for my skill level. At worst, this position has shown
me what I'd like to avoid in the future.

------
chudi
Its normal, read this [http://michaelochurch.wordpress.com/2012/04/13/java-
shop-pol...](http://michaelochurch.wordpress.com/2012/04/13/java-shop-
politics/)

its posibly that you are the victim of a power struggle at the management
level

------
mtmail
Yes, I would tell management they hired the wrong person and move on.

------
tomashertus
run, run as fast as you can.... Offshoring of this kind is wrong in all ways
and the software it produces is terrible. I don't believe that it is working
model and you will become just refactoring machine with zero interest in the
product development/improvement and after while you will start hating your
job.

Don't waste your time. If you are not bound with visas or other strings in
that company, just go away.

