45
Root
6y

!!office drama

I haven't been around much in recent weeks. Due to family illness, christmas shopping, dealing with estranged parents, and brooding over the foregoing, I haven't had a lot of time or energy left to myself.

tl;dr: The CTO ("API Guy") is ostensibly getting fired, and I might be taking over his job. I don't know if I should accept, try to stave this off, or simply flee.

------

Anyone who has been following my recent rants knows that API Guy is my boss, and he often writes terrible code. It's solid and unbreakable, but reading it is a *nightmare.* One of our applications is half the length of Leo Tolstoy's War and Peace, and it's difficult to tell what code is live and what amounts to ancient, still-active landmines. This is one application; we have several, most of which I've never even looked at.

Ostensibly the code is so terrible because the company grew extremely quickly, and API Guy needed to cram in lots of unexpected / planned-against features. From what I can see, that seems about right, but I haven't checked timeframes [because that's a lot of work!].

Here's a brief rundown of the situation.
- API Guy co-founded the company with the CEO.
- CEO and API Guy have been friends for a long time.
- CEO belives the company will fail with API Guy as head of tech.
- They could just be testing me; I have zero way of knowing. API Guy seems totally oblivious, and CEO seems sincere, so this feels pretty doubtful.
- CEO likes pushing people around. CEO believes he can push me around. API Guy doesn't budge. (I probably won't, either, except to change task priorities.)
- API Guy's code is huge and awful, but functional.
- API Guy is trying to clean up the mess; CEO doesn't understand (maybe doesn't care).
- Literally nobody else knows how the code works.
- Apart from API Guy and myself, the entire company is extroverted sales people.
- None of these sales people particularly like me.
- Sales people sell and sell and sell without asking development if they can pull enough magic features out of their hat to meet the arbitrary saleslines. (because the answer is usually no)
- If I accept, I would be the sole developer (at first) and responsible for someone else's mountain of nightmarish code, and still responsible for layering on new features at the same pace as he. Pay raise likely, but not guaranteed.
- My getting the position is contingent upon the CEO and the investors, meaning it's by no means guaranteed.
- If I don't accept, likely API Guy will be replaced with someone else of unknown ability, who doesn't know the code, and whom I must answer to regardless. Potentially OK, potentially a monumental disaster.

Honestly, it feels like I'm going to be screwed no matter what course I choose.

Perhaps accepting is slightly better?

The best would be to assume the position of CTO and keep API Guy around -- but that would feel like an insult to him. I doubt he'd be okay with it. But maybe. Who knows? I doubt the CEO would seriously consider that anyway.

I feel like a lamb between a dim, angry rhino, and an oblivious one.

Comments
  • 6
    It's very hard to give good advice on this. Sometimes things just need to get done and in an ever changing environment you will rack up technical depth. Seems like API guy just didn't care about architecture though and this is costly. However you say he tries to clean up and you mentioned something far more worrisome. There is no clear vision or guidance of the product. Every client request just gets accepted. This will make it impossible to create a product that does things right and can evolve naturally.

    Changes and new features are fine. Sometimes they even demand architecture changes or are simply worked around until it's time to refactor. Constantly uprooting core concepts however will damage any (software) project and will require often rewrites to form any sense semblance of coherence. In this type of environment the is never time to do that however and making changes/adding features just gets harder and harder.

    If you feel that you as the new CTO can fix this view I'd say go for it might be a great opportunity!
  • 5
    Dear Root, every choice we make in life will eventually lead us to further suffering. The trick is to make the suffering worth it.

    What I think you should do in ruby:
    # -------------------------
    if no_pay_guarantee?
    ask_recommendation_letter(@managers, leave_terms) and wave_bye_bye(@company)
    end

    # ¯\_(ツ)_/¯
    # -------------------------

    What I think will happen in ruby:
    # -------------------------
    @managers[:api_guy].leave
    @managers[:ceo].try(:enslave).try(:ashkin)
    # -------------------------

    Sorry for the unrelated mentions if there are any.
  • 3
    And as for the feeling tired, I'm right there with you. My relation with my girl is almost over. We bought a house together 2 years ago so that is quite the hassle next to the emotional crap I'm going trough. My grandmother is scheduled for euthanasia next Monday.

    I have less headaches now and finishing things up will help putting the shit behind us. Just mudle though it and we will get clearer roads in January.
  • 6
    @irene *nods*...

    @hjk101 If this is how the CEO treats long-term friends, his treatment of me will likely be torture by comparison.

    @time2code Not really. Accept and enslave myself? Decline and get a potentially worse boss who's paid more for something I could do better? (Though he'd get trampled by the angry rhino instead...). Push for API Guy to stay and have the previous happen regardless and lose all credibility with the CEO? Or flee and be out of work after Christmas? They *all* suck.

    @bioDan Recommendation letter after only a few months? Not likely. But API Guy does respect my ability. So maybe. No idea where I'd go, though. 🙁 and without income....

    @hjk101 *hugs*
  • 3
    @Root just please dont work for free. I'm sure you are underselling yourself as it is.
  • 3
    @Root long term fiends or not business is a greater responsibility. I am to far away to see if it's actual backstabbing. And if the pushing if more shoving than you are right to be on your guard. I have the feeling you already made up your mind and do not want to be CTO there.

    Just try to make sure that whatever you do to change the environment to something that will help you. This can be just sticking around and focus on finding a better job.

    We are all slaves to power. In your case it's money. It's just about the only power they hold over you and you can get it elsewhere. If you become CTO your power in the company increases. No matter what they will be invested in you.
    How much power/shares does API guy hold?
  • 2
    @hjk101 Truth @ money. It's the only thing I need from them.

    API Guy is the only person that knows the code. He also co-founded the company, so I'm sure he has lots of stock. He also doesn't need the job -- he's a very popular [redacted], and has made enough money to retire comfortably.

    The only reason I'm considering accepting is the CEO's plan is to sell the company for millions, and I want a part of that should it happen. I also really want to clean up this mess and make it amazing and beautiful. Probably moreso, because the previous point is dubious and uncertain.
  • 8
    I think you should accept, with a few conditions:

    - higher pay;
    - power to hire more devs;
    - sales team must take you seriously on your estimates and what can be done or not.

    If they don't accept, resign. That sounds like a sinking ship and even the captain is planning to abandon ship.
  • 1
    @Root
    If you accept (with approval of a rewrite) add dev's to your team and start the process. Moving it feature by feature create bridge between the old and new until the new one has all the features. That's cheaper than trying to understand and work with shit code.
  • 4
    Something similar happened to me last June through September, where the lead guy left and he left me a big pile of shit to clean up. They hired few fresh out of college guys who were totally useles. The situation is still shit but less shitty and yeah the others in the team are extroverted sales people so no one understood what I was going through. I stayed because I was grateful for the company for providing me the job at the time. But yeah nobody cared nobody cares so that's just it.

    I tried so hard and got so far
    in the end it doesn't even matter
    -linkin park
  • 4
    @Triskelion The thing is, that's what API Guy and I are currently doing. It's just slow-going because there is so, so much to do.
  • 4
    @Yamemori I'd still have to deal with an extroverted sales guy as CEO who thinks he can push me around, and who doesn't understand development whatsoever. That sounds like a bloody nightmare.

    I want to run away screaming just from the thought
  • 1
    @bioDan your comment was better pre-edits.
  • 1
    @Root funny how i had to refactor the code since it didnt make sense after reading it.
    What bothers you after the edit?
  • 1
    @bioDan chained try()s and an incorrect symbol. 😋
  • 1
    @Root
    You are right, i loled 😂 thanks!
  • 2
    You are at a company that have no visions, unmaintainable code, people that will set you back. Finding a new job would according to me the only thing you are doing. It's not worth doing something you hate. If you're almost the CTO then you have the skills and experience to move on
  • 3
    Accept the challenge. If it works out cool, if it doesnt move on and learn from your mistakes or whatever went wrong.
    The important thing based on what you said is that you need more people on the team.
  • 3
    accept under the condition that you can hire some freelancers for your support eg. architecture and refactoring/rewriting. For at least a half year or task. And make sure that you get more say/autonomy about how things are managed.

    And make a deal with the api guy that he has to be on stand by for consulting / questions.
  • 1
    Do you secretly work at my company?

    Tell the ceo you’ll discuss it after he’s made whatever decision he’ll make regarding api guy. Not before.
    That’s between them and not you to influence. It’s pretty much lose lose for you otherwise.
  • 1
    I was once in a position similar to API Guy, but also sales, marketing, tech support, and sole technician building the product. It was just me and the boss man. He was a good boss and salesman back then too, but as the company grew from debt to making millions every month it came down to 'who do you want to train to further marginalize your existence here'. It felt so wrong seeing an office full of people I trained, doing what I once did alone, as my value becomes less and less to the company... I was told maybe if I went back to college I'd get a raise... but that's what you do to get in the door, when you've built a HUGE success you shouldn't need to jump thru hoops to prove your worth again. So I wonder, is API Guy in this sort of position? It sounded very similar to me. I just thought it might help to understand another perspective (possibly similar API Guy's). Beyond that, it's a tough position you're in. I wish I had some solid advice for you... I wish you the best!
  • 1
    Although, unlike API Guy my code was awesome at that job! Something I would rarely proclaim! haha. I abstracted everything from the get-go and made it so easy to add new test equipment, test procedures, redefine protocols, etc... But the straw that broke my motivation was when a guy was hired, an 'old friend' of the boss, who was to be the new head of software. He only knew VB Script and some GUI drag 'n drop stuff. I tried to help him learn what I considered to be simple and clean Python code, but he couldn't even comprehend the idea of classes and methods... this was to be my new boss?!?! I checked out at this point, it was over for me. I'm not just trying to pour my story out on here... but this sounds like where you could end up with the option of not taking the position and API Guy getting nixed. Probably not so bad as to have a guy that doesn't know programming as a boss tho, haha. Maybe make the most of API guy and be open, so no one has any hidden agendas. I dunno :\
  • 1
    You have a lot of things aside from the work thing on your plate too, I felt a little bad for only addressing that one thing. It's not like I really know you, but your story resonates. I really hope you get through all this soon and in a positive way... as positive as possible. Happy holidays and all. :)
Add Comment