The Time I Lied to the CTO and Saved the Day
https://GrumpyOldDev.com/post/the-one-where-i-lie-to-the-cto/I know, that, specially when you get recognised for the hard work it is hard, but you will regret every minute.
If you work for a company that counts on your holidays and vacation to sell their products, you are helping to create the problematic world with have today. If many do that, more will need to do. If none do it, and act like it is an absurd to request it (and it is) nobody is forced to do it and the company is forced to do real estimates even if that hurts your fav CEO pocket
In a healthy company/organization:
* That outsourcing implementation approach probably wouldn't have happened, because an experienced person could've guessed how that would turn out, before it was started (it's such a cliche).
* Earlier on, people would tell the CTO it wasn't working out, instead of lying and saying the opposite.
* Whenever they needed to do something smarter/creative to rescue the project, they could work with the CTO on that, and maybe even with the customer.
* There wouldn't be marathon whip-cracking over the holidays, especially not after the team was already burning out.
* A manager/lead would go to bat for the success of the project and the health of the team, and insist upwards that the team needed a break over the holidays, if that needed to be clarified.
On that last point, in a "half-healthy" organization, a manager might intentionally be very vague, and omit information. That happens, and might or might not be a good idea, depending.
But the way this story is told, it sounds like the manager/lead outright lied repeatedly up the chain of command, which is generally considered very-bad, in both healthy and unhealthy companies.
I'll add that these things are vastly easier to armchair-quarterback. Certainly we're all going to make mistakes, especially when put in difficult positions, and/or when overextended/fatigued. But it helps to look at scenarios, to try to learn from them, and to think from a distance how they might've been handled better, so you're armed with that "experience", the next time you're tossed into a rough situation that has some similarities.
Does this sound insane to you? Obviously it should, but in the vein of "insane things" I was helping do tech diligence of a potential investment for a fund. The startup's users table also contained the "tickets/booking" data. Each ticket was a column. So if your most active user had 5 tickets in total history, you needed 5 columns. These guys had 500+ columns by the time I reviewed it, and were looking for an investment to "scale".
Of course, it's a solvable problem, but as you can imagine everything was designed in some backwards, janky way. That was just the most obvious "wtf" moment.
They did not get the investment.
Schmooze the execs with fancy dinners and trips. Deliver a horrible product so they need you for the foreseeable future.
The story itself says the CTO is unaware of everything. From his perspective, everything worked out fine in the end.
Win for everyone except for the devs who put in 80 hour weeks.
We explained to them that we should rewrite it for them :)
A tip for new team leads; there is nothing here to feel proud of and a better play is to kick up a huge stink about people are working overtime and insist that the vendor be held to sane standards or project scopes reconsidered to fit in a normal work week schedule. Trying to make this sort of situation work is going to burn people out for nothing, or get people fired with no potential upside.
Unless I were truly desperate for work to keep my family going, a team lead has a responsibility to protect their team's reasonable work hours from insane requests. That is a hill to get sacked over, but not to lie for.
Stick it to the man when they try to get others to work harder to glorify themselves. Weak bastards.
The shitty vendor who delivered crap?
The CTO who surrounded himself with yes men and was clearly completely unaware of anything happening in the company?
The devs who were worked to the bone, but don’t worry I gave them a week off?
The protagonist who lied to everyone to hit an arbitrary date for a company that clearly doesn’t give a shit about them?
This story made me cringe at every turn. I’m a hard worker and I have put in extra hours to make a launch go smoothly for a client here and there but this story is pure insanity. I’m willing to put in the extra time on occasion because of the “relationship” I have with my boss and knowing that I can always tell them the truth. In fact that’s a core concept of having a no-blame culture, you only get that IF everyone is telling the truth.
Lying like crazy to meet a deadline for an idiot CTO is quite literally insane. If you find yourself in a situation like this then GTFO of there and find a better place to work.
Again maybe I've been lucky but honesty has worked well for me.
> “The team is working hard. Today we hit milestone integration point #73.”
> “The team made good progress yesterday, we finished another web service.”
> Every day I showed up and told the big boss that we were hard at work on stuff that we had already completed over the previous month.
I think it's a really important detail that he was lying about work that was already done. That looks like "underpromise and overdeliver" from a certain angle.
I'd feel worse about lying about work that's not done yet. Certainly riskier, and maybe not the best feeling for the team when they get back: "Here are your tickets, I told the CTO they were already done, so hurry up."
For example, I'm working on a project now to update a code base running on a (very) old compiler. We've been working for a year, and large chunks of the system are done. One (fairly major) part is yet to be completed.
Management doesn't understand the process, or have confidence that the project will ultimately be successful. I don't blame them for being skittish, software projects (especially conversions) have a long history of failure.
We had weekly meetings with them on progress - which are now twice-weekly (because that will speed things up.) Mostly they don't attend directly, a middle manager acts as a go-between.
The developer view is that of course this will work (personally I've never been in doubt on that front) but the time-scale is uncertain because the system is large and old. But we're talking months left, not years. Yes, I'm aware of the 80/20 principle, but we're well into the 20% already.
Of course to management it's a binary state, done or not-done. It's hard for them to guage progress. There's no "trust" in what we say.
Which makes sense to me. We might have done 0 work for a year. If all we did was the meetings -they wouldn't know-. (Its a fixed price job, so it doesn't make sense for us to drag it out.)
Of course the risk is all on them. They've spent a bunch of money and are nervous. They made (good) tech decisions (based on the advice of outside people who understand the tech) but they feel very uncertain. Ultimately if the project fails they'll take a hit (not so much us.)
There's no easy fix here - you can't just argue that managers should be technical (the tech is not their core business), and more "consultants" won't make them feel warm and fuzzy. The best we can do is push through and deliver.
The fact that the vendor reached the state of doing business with a Fortune 500 client indicates how helpless organizations similar to this client feel facing even modest SW undertakings. Indeed, the project scope in question indicates it could be accomplished by some folks here as a hobby project.
This also explains to me why Retool is so popular with tech leaderships, while not necessarily so with engineers. I wonder what other product approaches could address the same gap.
There will always be a bias towards some default settings in whatever popular tool, because people who aren't very discerning or dedicated will just punch in a few common ideas into the tool and take the first thing that looks good enough to them.
But people on the outside will continue to have an instinctive sense for these default style biases and be able to tell pretty well that an image was produced that way.
The escape hatch will be what amounts to AI stock photo industry, where practiced "AI Art" designers prepare images that are more subtle and unique and sell them pretty cheaply.
The technology surely can be pushed to the point where a well-crafted image is virtually indistinguishable, but most people are going to just drop "anxious woman at keyboard" or "happy dog with a ball" and there's only so much unique information contained in those prompts so defaults will always reign.
How is that different from the established practice of using stock photos?
I didn’t heavily scrutinize it. But without the additional context seen on a desktop it’s not that remarkable.
"Of course by customizing their “product” we cleverly combined all the downsides of vendor software with all the downsides of custom software. We simultaneously achieved the holy grail of bad ideas: an inflexible vendor package that would have to be forced into doing something it wasn’t designed to do but would also be forked from their main product codebase - guaranteeing sooner or later it would be end-of-lifed once the vendor realized how expensive it was to keep maintaining."
Don't ever do this if you can avoid it. Quite apart from the tech angle, the vendor will also rip you off for every change.
>. Keep in mind that early in my career,
And the CTO is calling you directly? The CTO of a Fortune 500 company? The 'review process' for a vendor pitch is the CTO asking his immediate staff?
The system that needs 3 people a few months to build is being handled by the CTO???
IMO it is still ones job to voice the concern, even if it gets you in trouble. At least if you want subsequent complaints to be taken seriously.
Personally, if I get in a situation where even voicing issues gets me in shit, that's a red flag to go find another employer.
And don’t lie to people.
Stop working overtime and over weekends. A company demanding working on weekends and cancel holidays is a huge red flag
Just as you don't spend all your money at once, don't tell your boss everything you've achieved at once. Or not always anyway. I had to write a monthly progress report for one recent job. I kept a document of headlines for this, and put only two or three into each report. I kept some back for rainier months. This also helped me discuss my "objectives" since I often could predict at least one thing I would achieve in the next few months.
How many times have I been accused of wanting to "reinvent the wheel" while facing this exact situation ? I can't count.
This should be the title!
I would change the workplace by that time.
It's time for our industry to do better and not champion attitudes like this, especially in an era of consolidation where megacorp gets away it to this day and somehow sells it as a positive.
We have to do better.
We had a terrible release management system. (For IBM iSeries folks, it was Turnover.) And we used it for everything. Java code included. In particular, we used it for database migration scripts. And you know how database migration goes. You keep adding files and you never remove any. And there gets to be quite a few very quickly at the beginning of a project. And the folks in charge of setting up the release management system for our database migration scripts did so in such a way that we had to list out each one individually. Every release, we had to type like 50 database migration script filenames one-by-one. With no tab completion. (Not to mention the Java .war files we were deploying as well.) And by "release", I mean every release to the dev environment.
(Now some of you who know of Turnover might know of a janky Eclipse fork that would let you create Turnover forms in a drag-and-drop way rather than through the green screen, but there were reasons we didn't want to go that direction. Long story.)
As soon as I figured out how much of a PITA this would be every single day, I decided to do something about it. I wouldn't ask for permission. I'd ask for forgiveness (if it came to that.) So I set about writing a way to automate this. That way involved running the dumb terminal emulator (the "green screen" app tn5250j) in Xvfb and simulating key strokes to it. God was it a nasty hack, but it worked reliably and God was less painful to deal with than what we had before.
Part of why I didn't ask permission was because I wasn't entirely sure I could make it work and I didn't know if the boss would ok a project that may pay off given our tight deadlines. But once it did work, I didn't keep it a secret and the boss praised me for it. Still don't know he'd have let me undertake that project had I explained and asked permission ahead of time, but everything very much worked out with that project in the end.
Here's to lying to your boss. Don't ever feel bad for saving your boss from themself.
So, their CTO asked the team(of 3 members) to work through the Christmas week even when they had been working like crazy for weeks and are on the verge of burnout. The author asks them to take the week off while lying to the CTO that the team has been hitting milestone xyz. The dev team came back fresh from holidays and hit the milestones.
There are some management lessons in there on what to do, what not to do, how/why developers get insane deadlines and how they end up with burnout.
I was expecting the lie to be about a technical or design decision since "CTO" was mentioned and how that saved the day.
Doing something "different" would get you a warning, doing something major without full work breakdown, buy in, analysis, tickets and micromanagement would get you fired.
Something doesn’t add up or is it just me?
Or did I misread something?
I loathe working in MongoDB (have been for the past 3 years at work), but this is one situation where it's just absolutely bad schema design and not necessarily Mongo itself.
I may have missed it, but why let the vendor even proceed with this behavior? I get there's timelines with the client but can't you sue or get a refund from the vendor for their screwup?
This... doesn't seem right. I understand the issue is with the vendor, but there are lots of MongoDB controls to avoid this. Even in nested documents this should not be necessary.
And we all work with them on various levels in the organization.
Remember - being smart is both a gift and a curse.
Definitely, this is a bad example and precedent to build toxic and non-cooperative environments. And instead of solving the issue it make it worth.
I questioned the "young and foolish" / "grumpy veteran" position when they started talking about json and mongo (maybe replace that with a text file and proprietary binary format), and yes, this sort of shit happens to varying degrees all the time, but I'm pretty sick of the everyone but developers, and more specifically MY team - or even just me, is an idiot - "I'm the only one who cares and does the right thing" - which this was definitely not. Question for the audience: most of you work for big, non-startup and likely non-software companies; when you look around can you honestly say "nobody else cares, just me"?
Sure it could work out OK but that’s just bad strategy.
The outsourcing company was a tiny local software house. They delivered on every single requirement in under 3 months. Despite my better judgement I was impressed.
Until we gave ot to an actual customer. After some back and forth with initial errors (relatable) it started running on a small portion of traffic. A week of running the tool on their website was 100GB of file storage and 100GB of storage behind postgress db.
Utterly unsustainable.
A few weeks later we had a "do what you want" sprint. I mean the engineering team decided (I know, different story tho) every 10 sprints we get one to do whatever we think makes sense for the product.
So a brilliant new intern and I got to come up with new requirements to fulfill the same usecase but without the need to store colossal amount of data per visit.
We wrote a new thing in 2 weeks and had a working demo. We used the next month to productize it.
My initial.design was presenting user behavior as scenes, sort of like a comic book, instead of animating stuff to pretend it's a video. Over time product got that too tho.
When the startup folded (yet another story) the technology behind that tool was the thing that got sold.
Moral of the story? Whether you lie or not, bottom-up decision making can be pivotal to software products if you're lucky.
For the love of god, how could they not have thought of using a database?
But since this is an f500, cto prob has an ego despite not having touched a terminal in years or decades. So it’s necessary to stroke the ego or become a yes-person; otherwise get 86’d.
Collectively, we need to stop bending to the will of C-level executives. Let their stupid ideas fail so they get replaced.
Halfway decent engineers will always find new work. A majority of the time workers are not impacted by failures of leadership. In past jobs for F50 companies, VP/Director/SVP positions changed hands frequently, almost on a quarterly basis. C-level positions changed less frequently but it happened a couple of times with enough bad quarters
For a bunch of supposedly smart people, I am always disappointed at how easy it is to exploit developers.
The devs did the deathmarch, and the vendor and CTO gain the accolades, enabling their bullshit.
For any dev who thinks they are a "rockstar", they should have been privy to some conversations I have overheard among product managers and senior management. They would have been disabused of this "rockstar" notion really fast.
The biggest issue with this approach, is that it absolutely requires the local team to be really good. Not Dunning-Kruger good, but actually good.
Those teams are very rare; especially these days. I have found that most companies deliberately avoid hiring these types of folks. They can be tough to manage.
I was incredibly fortunate to have worked in such a team, but as I have left that silo for a number of years, I’ve also come to realize what a rare privilege it’s been.
If you don’t have one of these teams, then this kind of thing would be incredibly reckless. Even with a good team, it’s still a huge gamble. I would not have done this, myself. It would have been too risky. I also had very technically competent managers, and would not have gotten away with it.
Brings to mind people like Nick Leeson, of Barings Bank fame (Google him). I’m sure he was saying “I’ve got this!”, right up to the end.