When to quit?
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.
I'm now the ONLY in-house developer with NO understanding of the current applications we're working on. Not only that, but we've switched technologies from Rails to Spring. I'm really good at Rails/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 run away as fast as possible.
The new code has almost no comments. The new code almost ALL needs to be refactored -- and this is landing on my shoulders.
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 "why the hell am I here?" because they don't need me. If I dropped off the project, nothing would really change because I haven't contributed anything to the project and I'm having a lot of difficulties learning from the devs -- especially when I can't even learn from the code base.
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?
Help!
34 comments
[ 5.6 ms ] story [ 48.8 ms ] threadPut 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.
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.
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.
Implement code review and start rejecting their pull requests with constructive criticism and mentoring.
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.
its posibly that you are the victim of a power struggle at the management level
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.
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.
Don't tell them this in malice or anger, but do tell them.
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.
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.
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.
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.
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!
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.
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.
I'm on the same side of things -- weighing the good monthly pay vs. finding something I actually enjoy.
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.
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.
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.
In the software business we are all "refactor guys" as you put it. The old adage goes "as an engineer, I have never found a code base I liked". I understand there are best practices that are really helpful. I am a huge believer in TDD, paired programming, DevOps, and other extreme programming principles. But I have never been in an organization that had the zeal that I do for these things. Every code base I have worked on (including code bases I completely wrote on my own) has needed refactoring. Some, most, on a constant basis.
I hate to admit, but the minority of engineers who write code correctly the first time is so low, you will not run into them very often in your career. [1] I hope you find them. Personally I have become quite happy with refactoring poor code, even when those who did not write it correctly the first time do not appreciate nor learn from my efforts.
As for your comment about your first job, I think you will find that there are a few engineers who have many many years of experience. However, you will find many more engineers who have one year of experience repeated over and over again. They may have 10 years on paper, but in reality they have about 1 years worth of experience. How you learn to correct them and help the organization who pays your check will be the deciding factor in your future financial success. You are at the precipice of a hugely successful career! Don't get too stressed by poor engineering groups, because you will run into them regularly.
It really seems like you have made up your mind to move on. Frankly, that's not a bad decision at all! Just remember though the old saying "The grass is only greener on the other side because of all the cow pies fertilizing it".
[1] You may get into a position where you can train up your own team. In this case, you may have some fantastic teams who are a lot like you in many respects.
Don't waste your time. If you are not bound with visas or other strings in that company, just go away.
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.
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 !
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.