17

I am a junior developer with a year and a half of experience and as of this week, besides the Manager of Software Engineering who has no time to code and only has 5 years of experience himself, I am now the most experienced developer in my department of 20 (with 8 developers) as the three seniors we had (10+ years of experience each) got fired/quit and we haven’t been able to fill the other 3 open senior jobs in months (they have been open since I joined 8 months ago). I am the most senior person writing code.

Pros:

  • I get to effectively lead projects. I write the tickets, I choose the tech, I can make architecture decisions, boss around the other two juniors and the intern, etc. So I can choose good tech for the resume.
  • Lots of professional development time as I get to set my own deadlines for things.

Cons:

  • I have no idea what I do not know as we are using technologies that I learned in the past two months. I am basically a frontend Angular developer. I learned that last month and just completed my first Angular project.
  • There is no hope of technical mentorship as the Manager of Software Engineering is always busy.
  • This department is new, burning cash, and has yet to successfully launch anything. All our projects have been failures this year. Utter failures. Someone fired after each project utter failures.
  • The hours are crazy as I am now managing a project as well as writing all the code for the project.

I realize that this site can’t help me make a decision as that is against the rules. I just want to better understand my options. I just don’t know what I don’t know.

13
  • 18
    If all your department's projects have failed, and every project someone gets fired, when is it your turn? – Nelson May 25 at 3:32
  • 3
    Options are: stay and eventually get thrown under a bus when a project fails; stay and burnout; or stay until you've lined up your next job – HorusKol May 25 at 3:53
  • 4
    @StephanBranczyk resume is being rewritten in case that happens. – Bacon May 25 at 7:58
  • 7
    "Lots of professional development time as I get to set my own deadlines for things" and "The hours are crazy" seem to be contradictory. Why are the hours crazy if you're setting the deadlines? – matt freake May 25 at 8:06
  • 2
    Most "first software jobs" are rubbish. Move on to your second job. – Fattie May 25 at 11:23
32

Time to get your resume/CV out and polish it up. You've shown lots of good stuff here, you've stepped up, started making decisions, managed people (maybe don't refer to it as 'bossing them about' as that comes across a bit juvenile!) and done lots of professional development.

Get your CV back out there, and jump off what sounds like a sinking ship! I imagine there's a reason they are having trouble hiring seniors.

Also, be prepared to back up any decisions you've been making that you bring up in interview, like why you made a choice of architecture A over B or tech X over Y, and what you've learned in this period of being an accidental senior!

25

You're fighting a lost battle

Your manager messed up dramatically:

  • he lost all experienced developers
  • he is not able to hire the necessary people
  • he is overloading his team with projects
  • he is delegating project management to juniors
  • he is busy without helping anyone
  • all his projects are failing

The best strategy now is "cover your ass". Your boss and maybe department won't last much longer. When somebody arrives to inspect the ruins, make sure you can honestly answer you did your best to fix the situation, but it wasn't possible given the circumstances. Try to provide evidence for your effort.

Having said that, it's not worth burning out for failing projects. Therefore reduce overtime as much as possible without hurting your reputation. Then focus on projects for your own benefit.

Do a triage for projects. Stop working on projects that will fail anyway. Ask your colleagues to help with projects that might be saved. For yourself select projects that will look good on your CV, that might help you switch to a better position in the same company and that are most likely to succeed. Help your colleagues to do the same.

If your manager asks about abandoned projects and incomplete tasks, just point out all the problems: no senior developers, too many projects, ... Explain how you try to use your time most effectively by doing triage (without mentioning your own benefit). If he insists to change priorities try to get it written and follow his orders. It's his job to fix the team setup, not yours.

2
  • 2
    "It's his job to fix that, not yours." It's also his job to set priorities. Setting your own priorities could backfire badly. – Roland May 25 at 8:26
  • @Roland I expanded the answer to address your point. Thanks. – Chris May 25 at 9:16
3

I realize that this site can’t help me make a decision as that is against the rules. I just want to better understand my options.

Your options are:

  1. Stay, in the hope that you and the management can turn it around and deliver a working product. Should it work out, make sure people recognize your contribution so you can get a fair share of the praise and use it to further your career within this company. Should it not work out, you will likely get laid off. Either because your department gets dissolved, or because the company goes bankrupt. If you believe your company is in danger of going bankrupt, make sure you leave quickly, or you might end up working several months without seeing a paycheck.
  2. Look for a new job in the same company in a department with a better track record. This is of course only an option when your company is large enough to have more than one department in need of your skillset.
  3. Look for a new job in a different company while you keep working just as much as necessary to not get fired.
  4. Resign and hope you find a new job before your money runs out. Usually not recommended, but sometimes necessary for mental health reasons.

Which of these options to pursue is your own decision. I do have my opinions on what I would do in your situation, but I am not going to state them. First, I do not know you or your situation as well as you do. Second, this is not a website for opinions.

2

There are two good answers already, explaining a general interpretation of, and attitude towards this situation.

So I would like to just focus on what you listed as potential / perceived benefits.

At a mere one and a half years of experience,

I get to effectively lead projects. I write the tickets, I choose the tech, I can make architecture decisions

might not get you the the kind of fruits — or not to the extent — that you might hope it would.

Chances are you are getting a high portion of things either plain wrong at worst, or just quite suboptimal in better cases.

In the following years you will likely (hopefully) learn how you messed up serially in these current coping attempts. Coding is just such an activity. It gets learned partly through declaring heaploads of previously written code as a sorry mess (realizing it as the truth), and deciding to do them over with some different approach. Again: it's a natural part of maturing as a developer.

But this should not happen on live product codebases that clients are already paying for, and expecting to put them into production soon where it will impact the lives of real people somewhere.

I know work-life balance for an emerging coder/programmer can be pretty much a fairy tale (unless you extremely enjoy coding in your free-time): for the sake of a meaningful development (basically, the take-off) of your programming career you will need to put efforts into hobby/pet projects.

Now, even if these hobby-projects take up a lot of one's free time, I believe these are the perfect places to test out one's ideas on, and to hone the skill of choosing fitting architecture candidates. Also, one's first big lessons on finding one's own code to be a sorry mess should happen on such hobby projects: here the stakes — in comparison to projects at the workplace — are low, and instead of unmitigated stress, failure here involves only surprise and maybe, at worst, some mild disappointment.

But going through this in a live environment, wasting both the clients' money and your employer's (and your own) good reputation, while dodging your bosses' frustration: not only this exposes you to a wrong kind of experience, it even deprives you from developing / obtaining a mental image of how things work in better, so to say, normal circumstances.

Workplaces should not be like this, or even if some are, you need to know better not to settle for such an environment... (I mean really? Your bosses expect a 1.5-year-experience developer to carry the business into success? Let's just say: it's a highly unconventional expectation.)

Coding "should" also "never" be like this; but sometimes it will, even elsewhere :) The key is that such harsh times should remain an exception and not become the norm.

Finally, learning a trade is more efficient when one can pick up structured knowledge from experienced peers (while maintaining an own initiative through self-chosen pet-projects) as opposed to having to solely rely on an ever-growing inventory of things that don't work.

Know the value of excellent mentors; be informed that people exist who are not only great at the craft they practice, but who are even blessed with outstanding pedagogic talent/skill, who can facilitate both your professional and personal development in spectacular ways, quite possibly un-available through any other course in your life. Look for these mentors, and embrace the opportunity when you get a chance to work with someone like that. It can do an immense contribution to your life-path; such that you may come to appreciate in its fullest only later...

Not the answer you're looking for? Browse other questions tagged .