How do quit my job?
December 14, 2019 1:22 PM   Subscribe

I took a contract job as a software engineer and found it was incredibly underestimated. I did good work, but it is obvious my initial assessment was correct. They want everything done now and I kinda shut down for the last two days.

There’s no way I can get this project done myself. It is a custom e-commerce site with multiple integration points on top of a proprietary e-commerce platform. They expected me to get everything done in a month. It is now 6 months and I’ve buried my head in the sand after warning them this was not feasible with one developer (for other projects I’ve been on of this size there’s a large team I didn’t question it’d be just me). It has just been work, work, work. I’ve setup things that are outside my job scope: routers, devops stuff, etc. After repeated warnings from me and admitting from them it was underestimated by a long shot I found it easier to just say yeah that’s done and use their poor process against them. I think I kind of accepted this wouldn’t end well and decided how long to play it out by focusing way too much on things I could control, like the build process, instead of focusing on a non-functioning vendor delivered e-commerce platform. Again, I did not know the extent of how bad this was when I took the job.

Out of nowhere they asked if the site was done (again I worked in isolation), I said sure, then realized they actually meant it. I room every means possible to show progress, but it was rejected as being too complicated. They hoped they could buy their way out of this, pay a resource and not thinking of what goes into building a large e-commerce site. They rejected sprints, Jira, even saying they didn’t want source control. To get the base platform running takes a 3 hour build to setup the site! That’s with extensive automation.

In any case they think the site is done and I went into anxiety spiral and have ghosted last couple days. This is probably the result of 60+ hour work weeks plus seeing the holidays and things like “war room Christmas Day party after work let us know if you can’t attend!” After already working over Thanksgiving.

I won’t see these people ever again is there anyway to say hey sorry, I can’t do this myself like I told you, or should I just not report back in? I don’t know why I agreed to the site being done, probably because anything but yes would have been countless meetings debating whether I can get it done by Saturday or Sunday when the answer is mid-spring maybe with an actual team and not working in isolation. I was given no dates just one day they said can we see the site tomorrow? Again explaining the work I’ve done won’t help they care little that I had to setup x, y, z to get to a certain point they just want to hear it is done.

I shouldn’t say nothing is done, quite a bit has been done, but I focused on improving my skillset knowing there’d be no way I can get this done and they didn’t want checkins of any sort.
posted by anonymous to Work & Money (8 answers total)
 
Given what you know, what's a feasible "parting gift" to provide them, perhaps a status report and recommendations, that would let you look back on this knowing you had done what was realistically possible as you ended your involvement?

Another way to look at this: if they hire "anonymous2" after you leave to continue the process, what information would you most want him/her to have to understand what to do next and what's possible?

Don't worry about what the client staff will in fact read or think about your "parting gift".
posted by alittleknowledge at 1:33 PM on December 14, 2019 [2 favorites]


The best way to do this will depend on the exact specifics of the contract you signed. You will need to find the actual contract you signed and read through it, but there's roughly two ways contract programming works, with a hard deliverable or a soft deliverable.

If the contract say something like "Contractor agrees they will provide a custom e commerce site with these specific features" then you can't just walk away without delivering something close to a completed site without being in breach of the contract. The contract will probably say what the options are in that case, it may include them not paying you, demanding a refund, etc. If I was in that situation, I would come up with a plan to deliver the minimal version of the site that does EXACTLY what the contract says and no more, and work to deliver that minimal version as quickly as possible. In this situation it's probably better to spend your time on creating a hacky but working site instead of trying to document your process for someone else.

If the contract is more general and is something like "Contractor agrees to work x hours per week at $y an hour towards the delivery of a e commerce website" without a hard deliverable then you have more options. You need to read what the options for cancellation are, usually it's something like 2 weeks or a month notice. It sounds like the company isn't very technically savvy so their contract is more likely to be something generic like this. If I was in this situation I would send them notice on monday that you intend to end the contract, explain your plan for the next x weeks and start working on your documentation so the project can be safely transitioned to someone else. You may want to give a vague personal reason for why you are ending the contract so they don't want to pry too hard.

The fact that you said the site was done when it wasn't is probably not a huge deal honestly, what they actually care about is the site, not what you say about it. Lots of programming contracts end with one side unhappy with the other because the original plan was bad, this is not the end of the world. What matters now is the specific process for ending the contract in a legal way. If it's not obvious from reading it yourself you could try asking a friend to read the actual contract with you, do you know any other programmers who have done contract work? Once you figure out what the actual process of cancellation is, you can help leave a good "parting gift" as described by alittleknowledge
posted by JZig at 1:47 PM on December 14, 2019 [11 favorites]


1) Stop feeling guilty

2) Make a list of everything you have done - this will help you not feel guilty in case you are tempted; it will also be great to give the client

3) Do you want to continue to work on this? Assuming you don't feel guilty?

4) Tell them the truth in a letter. If you feel you need to, maybe look over your original contract with a lawyer -- but it should be clear that you doing what they asked is utterly dependent on things you can't control, and those things were not what you expected and were not what any reasonable person expected.

5) Continue not feeling guilty.
posted by amtho at 5:42 PM on December 14, 2019 [1 favorite]


Op here, I just wanted to keep my name off the front page. I was under extreme duress when I wrote this, I don't know why but I guess it is the constant work and lack of recognition that I've done concrete things that are working in a very complex system is frustrating. Legally I'm fine, my lawyer says "anyone can file a lawsuit, you're fine call me if you get a nasty letter, there's no reason to come after you'd it be too expensive and they'd lose." I was hired as a resource, not to complete a site.

The recruiting/contracting company is technically savvy, which is weird, but they don't understand web development. For example, they thought they could get away without front-end development by auto-generating HTML/CSS from Photoshop files. The end client I like, and I believe to an extent would like me to go with them directly but contractually that's no possible. I'm a small part of a giant program. Think migrating Exchange and other enterprise things to the cloud and oh yeah we forgot there's a giant website involved but the hardwork is on the ERP.

When I first got on board and realized the extent of what needed to be done I sent a very detailed 5,000 line item Jira board in Excel (they don't like Jira so I basically recreated it with rollups in Excel). This was ignored as were my attempts to insist additional resources needed to be added. So I kind of at one point was like well if in "daily checkins" they ask for things that are done and if I say no, I spend more time explaining why and they'd get angry, "send a letter to the vendor! We hired you to do a homepage not CI servers we need them onsite." I knew full well a company, we'll say SAP to give an idea of size, would probably send someone out at an enormous cost but dealing with them before they wouldn't with what we purchased (I did call them up they did say they usually assist devops teams in such things they are usually 12 person devops teams just doing the site alone, who is in charge of devops and that silently got dropped too by management). Also if my title is simply "developer" why am I the one even thinking about this or bringing this up.

Okay venting is over.

3) Do you want to continue to work on this? Assuming you don't feel guilty?


Yes, actually it is technically challenging and I've learned a lot. I have the upper hand as the deadline is approaching and they can't hire anyone to get it done. They won't care about my "parting gift'," the last developer lasted a month and I kept hearing he couldn't get a homepage done in a month and I'm beginning to see why.

I'm thinking on Monday about giving them a vague excuse as to why I didn't show up. And try to figure out a narrative that explains how this can get done. I sort of felt like I did that and it didn't work and that's when I kind of threw up my hands and if they wanted me to do something stupid like create a bunch of fake pages to show to management, sure I'll do as I'm told, then that caught up to me or rather them in the fact they are now dealing with the fact things I said were important to deal with, e.g., connectivity to the PIM system not working for some reason, are at this point. And yes it may take me a couple of days to debug it because I can't just push off everything to the vendor they'll want and need detailed diagnostic logs to even begin to help.

So I guess has anyone successfully come out of this situation, or should I just quit?

The only way I've come out of situations like this before is by doing the following:

1. Run integration tests where I can, if I send a request with these parameters I should receive a response formed like this. I'm not getting that, in the interim I'll set up a proxy simulating an expected request response. "Hey I already sent you the products so I'm not going to send you them again," well I will build something on my end that is more repeatable like a token in a database that indicates the process ran and I should not expect the same request/response. Right now none of this is documented so I run into a lot of problems where no one knows what's wrong and finally someone is found that says yeah you were making the right request but our system won't send you the data back and there's a valid reason.

2. Automating builds via Docker and a config system across 6-7 servers is hard, especially when the servers are different OS's. This is not the entire project but literally just the website portion due to the complex proprietary system. I have this mostly done. Only other option besides automating is offshore it to a team that's basically manually doing it, not feasible given resource constraints. This would not be a problem if (1) weren't a problem. I could probably hack a local instance and deal with manual changes just to get it done, but that's really time consuming and error prone way of when you do a build and have to through 97 (exact count) config files. Since the servers are different OS's I can just use environment variables at runtime but figure out how each environment deals with configsets;

3. After all this is taken care of I think I can start the website itself. This brings in a lot of difficulties. Pages like shipping and order come up. If I'm an anonymous user and then register my shopping cart should stay the same, I have no requirements documents or anything that says this, but from experience I know this sort of thing is default. The proprietary system sort of takes care of this but its primary focus is on things I don't need, like "product bundles" being different across catalogs and across regions. Really complex, large implementations that make it easy for a non-developer to eventually take care of these things. But is the exact reason developing a simple site on the platform is hard, I have to develop things that aren't really needed to just to make it work.

4. Finally the front end, someone got a friend of a friend to eventually do it. It was not responsive. I offered to actually pay a former colleague that I know who has worked on the platform to do it, out of my own pocket or at least split the cost, but this was met with silence. I got delivered a non-responsive website that didn't even use libraries or have any Javascript in it, let alone uniformity between pages. I was not looking for a ReactJS app, but a non-responsive site? So this was done and they just did it assuming it would be an "m.siteiammaking.com" and I haven't seen m dot since forever. It also means I'd have to redevelop everything as they didn't legitimately now which endpoints to hit for things like "add to cart." I was not allowed to talk to this person for some reason (they were not under contract, someone paid them in cash which is less shady if you realize that meant they were probably paid them very little to get this done).

As you can see there's a lot to get done, but oddly I'm not hit by normal things that cause me to get frustrated like having to put in a 5 day IT request to install Sublime or something.

Given the unknowns, I could literally spend a couple days coming up with a reasonable timeline for me to get this done even taking as many shortcuts as possible. All they'll want to know is when can I can deliver the site and I think my original estimate, again not requested, but delivered thinking it'd save myself.

At this point, having mastered AWS devops, Docker, Kubernetes, a proprietary e-commerce system, a proprietary PIM, I could easily put my resume up and get 5,000 hits.

My contracting company obviously is in their own world of thinking software development is like what they do, configuring Active Directory and if it doesn't work you don't spend time debugging you call the vendor. Everything is config, everything is mapped out.

Is it worth it to even come back and somehow in a more politically correct manner say that we're doing this on my terms (technically I'm my own LLC)? They're obviously promising things to upper management and I have a feeling what they're doing is shady or they're just out of touch. I've been honest up until the last couple months where I started saying things were done and then just have my own sprint board in my office where I would track my own progress to make sure I didn't nerd out on something since I never really had to show that things were done.

Or as an internal person to the client, not the company, told me, it will only get better when it fails.

Sorry to be long winded but after de-stressing after the weekend I'm trying to find a way not to quit and have to look for a new contract, plus I know so close to a client deadline hiring someone else to complete this will not be feasible and a lot of things are simply not in my control. I just don't know how to go to the contracting company and tell them you guys don't like how I do things but too bad? They haven't listened to me before so if the hard answer is just make up a family reason and quit, give a "parting gift" and be done, I guess I'm okay with that.
posted by geoff. at 11:28 AM on December 15, 2019


I guess that was a long narrative to myself telling them it can’t be done due to things out of my control. I’ll leave with family issues and parting gift. I don’t want to give notice as I don’t think there’s anything I can do in any timeframe and I don’t want to be pressured for two weeks to get impossible things done.
posted by geoff. at 1:21 PM on December 15, 2019


I'm getting an impression that you may have communicated in nice/soft terms when they need something more harsh/direct. Not unprofessional or blamey, but maybe more "this is completely impossible" than "it's rather unlikely to accomplish every function in the timeframe you want".
posted by amtho at 9:27 PM on December 15, 2019


I'm getting an impression that you may have communicated in nice/soft terms when they need something more harsh/direct. Not unprofessional or blamey, but maybe more "this is completely impossible" than "it's rather unlikely to accomplish every function in the timeframe you want".

This is sort of correct, I was also the only native English speaker on the team. I began to become more direct and gave them estimates when I first began, then was completely blunt. It was met with "this is all we have to work with and you should be able to accomplish if you were competent" sort of thing.
posted by geoff. at 10:50 AM on December 16, 2019


That this started as "We want a homepage" and is now DevOps and whatnot tells me either that you expanded the scope unilaterally, or that they bait-and-switched you. Heck, "enterprisey" means maybe they want a 12 person department but could only get funding for one person making a webpage, even if that takes a year and a half. It's possible.

"...and you should be able to..."

Sounds like someone's got a case of the sposdas. I mean, why "should" you be able to, can they do it already? It doesn't sound like it.

If I was going to read into it a bit, you'd read me saying that you don't have to throw the project away. I just want to reframe a bunch of this based on my experience.

They rejected sprints, Jira, even saying they didn’t want source control.

These people...don't know what they're asking for. Firstly, I doubt "one month" is based on any kind of calculation or data or anything more than -- at the most -- asking someone they know who has implemented...let's say Magento...a hundred times and asking them how long just that part would take them. Not how long their requirements imply, not how long it would take someone with your resume, but how long it would take a person who has done that exact thing before, multiple times, i.e. someone who already knows their way around everything. The fact that they're enterprisey doesn't affect this.

So they ask for the world, "one month" also only costing them one month of paying a contractor...sounds great for the bottom line! Sure it's made up, but not only does it sound good moneywise, it gives them a cudgel to bang on your talent and self-esteem (which obviously has taken a beating). "Is it done yet? Is it done yet?" is the refrain of the micromanager. It doesn't sound like "daily checkins" are even necessary except as a forum for them to call you slow more often than necessary. Ask for "I'll let you know when I reach milestones" and accept weekly checkins. Oh but they're enterprisey, so they don't care about the money, just their reputations.

2. Automating builds via Docker and a config system across 6-7 servers is hard, especially when the servers are different OS's. This is not the entire project but literally just the website portion due to the complex proprietary system. I have this mostly done.

I would suggest spending your time getting the app/page up on one server, and if they want it on multiple after you're done, then you can talk about that as a separate contract (more highly paid, too).

Similarly: responsive. Was this part of the original spec? If not, separate contract afterward.

Tell them it'll be another six months. No "reasonable timeline" detail is necessary, because they apparently don't care about the details. Overestimate. If you get pushback, tell them their problem is with the person/people who said it would take one month (they didn't hire the "one month" estimator, did they?), and while it may have taken the person (or team) they didn't hire one month, you're the single person who's there now and it's going to take longer, doubly-so if they're going to be breathing down your neck the whole time. I would convey that to the extent they're doing it, they should stop telling the vendor pie-in-the-sky estimates and piecey delays. Push it out once by a large amount, six months. A year (for one person? Yes). "You gave me a frontend page with no relation to what I've been building and is incomplete besides, that's going to be a month in and of itself to fit into place.

I offered to actually pay a former colleague that I know who has worked on the platform to do it, out of my own pocket or at least split the cost, but this was met with silence.

If you're 1099, don't ask. If you want to sub anything out, do it because the law says you can. 1099 would also mean you could say "If you want to know what's going on, here's the Jira URL." Or are you W2 with the agency? Might be harder, but if it means success it might be possible (though would be unsurprising to simply be against their policy).

Again: their original estimate is not your problem. You can certainly give them the option of closing out the contract, but really I'd recommend just making them fire you if they can't deal. Just push out the end of the project (don't think of it as a deadline because there's no structure to frame it that way) and leave the cards on the table, saying your peace and sitting back in silence to wait for their response.

These people sounds like jerks and the way to freelance for jerks is to draw bright-ass lines for your boundaries. No working 80hr weeks, no midnight calls, no guilt-trips. Frankly at this point I assume they need you more than you need them, especially since they haven't fired you after a sixfold extension in the project and you're prepared to walk away without much of a second-thought. This is a meaningful difference!

the last developer lasted a month and I kept hearing he couldn't get a homepage done in a month and I'm beginning to see why.

Are you undercharging them for the value you're providing? This sounds like they are cheapskates and hire on that basis. If not, then they're just a bad judge of talent or terrible interviewers or unclear on what they're actually looking for/doing (see "don't know what they're asking for" above).

Lastly, this isn't "we're doing this my way" battle of wills, it's "I'm the knowledgeable one and this is what we're looking at and here's how I need it to happen." Be totally professional, and if someone is unprofessional you can say, "I appreciate that Bob, but I'm trying to keep this professional." Your words matter, and you can boss them back. Don't threaten, just tell them how it's going to be if they want this to be a success, flatly.

For you, if you continue, take a step back with the original contract and outline how that can be achieved, then add in all the other details (JS, responsiveness, deployment, testing, etc.). Make a timeline for you, not them. I like Gantt charts and Gnome Planner is a good, free option for those. Helps also in breaking down tasks into smaller ones. And again, this is for your consumption.

My contracting company obviously is in their own world of thinking software development is like what they do

If they ever imply that, just tell them it isn't. There are way, way more moving parts in web development than there are in implementing an entire Windows office network from scratch. I know, I've done both.

PS this is a little jumbled because I wrote a bunch before reading your update, but hopefully it's decipherable.
posted by rhizome at 1:44 PM on December 16, 2019


« Older Can I eat this shelf-stable rice, 4 months past...   |   How do I best support my struggling, genderfluid... Newer »
This thread is closed to new comments.