I work as software engineer in a pretty young company (5 years old) and I'm making a lot of errors that can ruin my career.
Until some months ago everything was great: the compensation is just ok. We had almost always enough time to do things the right way and I felt I would have great career opportunities (like new important large-scale projects to lead).
I always had exceptional feedback from my manager and the other company departments I worked with, about the software I wrote or managed.
About 8 months ago a new project arrived, this was a "career changing project", a large scale application that would open the company to a new market, potentially generating lots of revenues.
Since I was striving for career advancements and I always had great feedback, I ended up to leading the development of this new project. I was prepared for the pressure, from my manager and from the executives, but then real problems started to arise.
Starting from a technical point of view, I wasn't able to take any significant choice. In order to "develop things faster" I was forced to use an already written software made from another software department of another company (part of the same holding). Initially I was ok with that, because on the paper it sounds good, until I noticed big problems in the software structure (this software wasn't really used anywhere before) and a data model and business logic that were completely different from what I need to do.
On top of that, we started work on this software before the requirements were really defined, because an unrealistic deadline was set, before doing any analysis before.
The process in the company has been more or less like this:
- someone important decided that we will launch this new product on date X, whatever it takes
- I was forced to start working on this stuff before any defined requirement
- the "business people" produced some requirements and kept changing them until 1 month before launch
- I and my team worked about 11/12h per day, for about 6 months, with Saturday included for 1/2 months, in order to release the project. I personally also worked more, after leaving the office.
In these months I raised my concerns to the management but the reply was always the same: "the project must be finished on time, no matter what". I also tried to expose the risks of doing that (bugs, data loss here and there...) but I was forced to stay silent.
Somehow, we managed to launch the product on time but with big sacrifices: no proper software testing was done, the code is pretty much unmaintainable and bugs are not rare. I feel that I have completely lost my credibility with this project; I feel guilt when I look at my code.
Some really bad bugs arose, things like creating some duplicate invoices or charging some users more than one time, in particular circumstances (bugs I caused personally, with my code). I would say that the software is doing a lot better than what I expected but these are still very bad problems.
I'm losing my face as a professional, because I'm responsible for this project, in particular for the invoice/payments part that I wrote personally and we've lot of problems. I feel that people in the company start feeling that I'm not a really good professional like they thought. I was promised a promotion by doing this project, but I fear that these mistakes could cancel that.
I'm also not able to focus clearly anymore, I'm tired, I feel I'm not able anymore to do things well, like I used to. On top of that, every problem now is an emergency and I never have the time to do things in the right way. I feel like I'm in "zombie mode". Even if I started to leave the office earlier, I feel that the stress due to this project made me dumb.
What can I do for avoid losing my professionalism?
How can I recover my "reputation" as a professional? Is it possible in the same company?
What can I do better, now?
My big takeaway from this experience is: never subordinate totally the quality of your work to the deadlines, because when problems arise no one remembers the sacrifices; all they see is that you made a bad job.
2023/06/07 - Update:
Several days passed and that's how it's ended: I got promoted to a manager, now I lead a team on this project. I'm not working overtime anymore and I ensure no one of the team does.
We started to track all our activities (bugs and features) so that project management is updated on what we're doing.
I make estimations on development time with the team and we're very careful to not underestimate the efforts. So far we haven't missed any deadline.
Sill, there are critical bugs and lot of pressure on new developments, but I managed to don't worry too much about that, we're doing our best and solving all the problems step by step.
We're also managing to improve some code here and there, to improve software quality.
I'm a professional and my job is to make things work well and develop maintainable quality software. I can't do shit just because the CEO wants something real quick and nobody wants to say no (you'll pay that later). This is how we're working now and I'm feeling that pays off.
I feel also that I'm doing a good job, we're accomplishing a lot of improvements. We'll see with time if I can continue to work like this or it's just a less cahotic period.
Can we consider this an happy ending?
A huge thank you to everyone which replied/commented my post.