The early part of my day was fine with the same routine. It only became notable as the day went by. Time to get it out of my system.
I managed to finish implementing resizing and moving a selection box on an image by afternoon. The end result made me so happy that I showcased to my teammates. However, during some of the testings sessions, the selection box was moving in a jerking manner when the mouse cursor moved too much and too fast. It made me suspect that I didn’t smooth out the values during computation or that the computation I was doing is too expensive. But I didn’t get the chance to look at it further because my colleagues were struggling with getting the standalone client-server deployment to work on a laptop.
Yesterday I mentioned that the application relies on AD authentication and I wasn’t sure if the standalone version would work. Today, I had to try and comment out the portions that authenticates with the AD and got it deployed. However, it didn’t work properly. So I got my colleague to compile a copy without commenting out the AD authentication logic but remove the checking of password field. It didn’t work too. So we spent some time debugging until we found out the root cause for both situations. It was the result of a misconfiguration of one of the database connection used by the server side application.
So our dear colleague XX, upon hearing that, quickly came over and said something along the lines of “I forgot to update the configuration.” She did that and go back to her seat. YL rolled her eyes.
Now this is where it got interesting and the following are my own experience of the whole situation.
My colleague YL and I continued to try to get the application to work. But we found one more configuration issue which XX again fixed. She did treat it nonchalantly. Then the next time when it didn’t work as intended we had to study the logs more closely. We found there was a chained exceptions on the client side and then followed by some hidden errors because certain values were missing from the application UI. So I started listing aloud what could happen. That’s what I do because I can’t track a long list of things in my head and I wanted my colleagues to hear what I’m thinking about.
Then XX, upon hearing one of the components could be the cause, pretty much stormed over and went along the lines of (not exact words), “Why like that? It can’t be. You all never test again is it? Got problem you all must solve! You do client one.” And guess what? That component was related to the part she’s working on—RabbitMQ caused one of the chained exceptions and she had a hand in it.
YL got kind of pissed off and said, “We monitor and test client. You got test server side or not?”
While we were busy looking at what’s going on, another colleague, a new one, came over to ask me about some configuration issue because she’s setting up her environment. So I went over to help. I didn’t notice what XX, YL and the intern were doing next. Then XX came over and asked with a tone that implied I should do it now, “how long do you need for this? You need to solve this issue.”
I brushed XX off with some comments about what could happen and what couldn’t but need to double check because I don’t really know and pointed to YL and the intern who were busy investigating, suggesting she check with them.
Anyway, XX did leave earlier than us with an upset face and dumped the standalone laptop on our desks. YL rolled her eyes again and asked how could we copy the application to the laptop since the thumbdrive belongs to XX. I told her use the network share drive as a middleman. So the three of us stayed behind and systematically studied what happened. We implemented some quick fixes. After copying the compiled codes over and did a quick test, the application is working properly again. Satisfied, we packed up and leave.
The intern went separate way because he had clock out on paper at the end of the day. While leaving the company building, YL told me that she overheard XX telling employees of the subcontracted company that the application cannot be installed on the standalone laptop because the rest of us couldn’t get the client to work.
I’m like, “What the fuck?” Are we even a team? How could XX just throw the rest of us under the bus especially in front of people from another company? If we are a team, there’s no “rest of us” and “you”. Come to think of it, no wonder YL is so pissed off and I don’t usually see her retort back.
The other thing of note is I was actually pissed off from mid-afternoon. I knew why. Due to my highly-sensitive nature, I hate doing last minute work or being rushed. This pissed off mood will develop more as the demand got higher. The only thing I could do is to be consciously in control to ensure I don’t snap at most people directly because it’s not their fault either.
Now, if I didn’t want anyone to do last minute work, this is what I will do instead given what I know about the situation. Whatever that are upcoming and have high priority should be planned and scheduled weeks, if not months, in advance. For example, if it’s something like preparing a new branch of code just for standalone purpose and has a tight deadline, plan and schedule the work three weeks in advance and make sure everyone got it working one week in advance.
This requirement for a standalone copy was known at least a month in advance. So why only give us the instruction three days ago and get us to rush without even a proper trial run? Take the AD authentication for example. How do we know if the application can still allow user to login without an AD last minute? There are a lot of things to consider before we can decide whether to remove the authentication code or not. We were lucky today that the application worked without much changes. What if it didn’t? We will have to work through the night just to get it out? What do you think will happen next?
If standalone version was so important and some other ongoing work can’t be stopped, then we could stop primary development at least a week before and focus on getting that to work. After all, we have limited manpower to work on something meant for a team of eight at least. We only got four. If your intention is to drive your employees nuts, you are doing a very good job.
The other thing I found myself doing today was actively preventing myself from panicking and focus on finishing one task at a time. Then there were times today when I was like listing out what were the problems and what to do in order. In the past, I can’t seem to do that because I will be swarmed with emotions. So I will give myself a pat on the back for this personal growth part.
One last thing. I know this dissatisfaction between all of us will keep festering until it explodes in an ugly fashion or it get resolved one way or another. We are there just to work and earn a living. We are not there to be someone else’s scapegoat or punching bag or slave.
If that’s what we constantly find ourselves in. we will snap. Our nice demeanors is not something to be taken for granted. And we do want to work as a team (at least YL, the intern, and I do let each other know what we have done).
For me, I especially don’t like it if people throw me under the bus just so you can score points or use the “I’m superior than you” tone to get me to do things. Well, undertones are something I’m pretty good at picking up so don’t try that with me.