Well, the Golang project is over.
In over fifteen years, this is the first time in my life I'm given the option to "switch languages or leave the company."
As you know from my previous post, the company used rails / a mixed Nodejs / Typescript service and everything in Heroku.
The moment my team joined, the only developer lasted a couple of weeks, and he left.
What I didn't know is that I would be repeating his steps.
I feel like I've been in a loop over these ten months.
With the original developer out, I felt that he was overworked, really severely overworked. He didn't know the entire application, but he knew the neuralgic points.
The stack of Heroku + Shopify / recharge had several weak points.
Well, it is awful. From time to time, we had to fix bugs in Shopify without even changing the code because customers would not see the payment done. However, we had not changed anything at all.
Usually, e-mails to Recharge take time to receive feedback.
I don't recall if the company was paying enough to receive better support, but I don't think that the answers were ok.
To give a better example, Recharge operates with API keys, like aws, for instance, and they have a quota.
The first time I contacted them, they provided me with the consumed data information.
The second time I contacted them for a similar issue a couple of months later, the support person didn't want me to provide that information.
I guess that e-commerce is an alien world for me. I've never done it, and this is my first time.
During that time in that company, there were several conversations about e-commerce applications that started and were a complete failure, others not, like Shopify.
I see the appeal for mom-and-dad shops, fancy small fashion design studios.
There are "risky" points like setting up a domain, but you can delegate that to the Shopify team for a fee.
What Shopify managed terribly wrong were the platform API changes.
They have a versioning system that lets you know that you have to update your version, but what they did was different.
They announced that by a specific date in January, the payment plugins like Recharge will stop working entirely. You have to manage payments differently.
We never found what the change was, and we had to rush as I've never done in my life.
Well, a standard JSON API with a rate limit.
That doesn't offer a sandbox. You need to contact the business on their end, put a credit card because there is no real sandbox, and if your test order get's delivered, you get a charge.
What I can say, I believe that is a "system without a sandbox" pretty much clarifies were you are standing. Other than that, there is nothing to say about them.
My ex-team and myself
Since I was never part of the decisions, I don't have explicit knowledge of what happened.
As far as I knew, the company understood that Shopify was screwing the pooch, they didn't provide good answers.
We were missing team members. We were going to rush and use Stripe.
The plan was to release the V2 version.
A V2 deployment in phases plan was done, and everyone was on board, and they all fully understood what we were doing.
We hit the first milestone somehow correctly. I interconnected the V1 site with the V2 react site via GCP cloud functions and redis.
My director of operations usually had the pattern that he siloes the information, so you are completely blind. Since we've had the same results for the third time, I believe that he doesn't correctly communicate with the client or hides information.
During Christmas and New Year, I've worked both days.
My qa partner had been missing since ever.
Apparently, we had to inform him that we worked in V2, although he was present for four months in the stand-up calls.
Apparently, it never crossed his mind that he should ask what we were doing or how he was supposed to test things.
But the best part came from my director of operations.
It was our fault (the developers, not him) that we didn't inform the QA.
Apparently, another of our tasks was to do the work for the QA, too, and tell him how to test things and that he should be ready for the unspecified release date.
We were still rushing. My other tech lead developer has a more full-stack mindset, so she thoroughly worked in the backend and coordinated the front-end team.
I created the whole backend dockerized environments for the developers, created the pipeline of all the services, front and back, created the pipeline step that backed up the DB before deploying.
We both stayed late for one month and a half to absorb the quotas of business logic that our director of operation released from time to time and unblock the team.
And all the things that I now entirely regret doing due to the ending of this adventure.
On February 12, the director of operations orders us to deploy V2.
We informed him, "this is not tested at all".
He said that he was being pressured by marketing because they had a huge budget to spend on ads and couldn't hold it any longer.
Due to his pedantic nature, he dismissed our assessment that the code wasn't tested and said that four days would be enough.
I don't have to expand on the dangers of releasing untested code to production. Still, oh boy, untested e-commerce is unnaturally insane.
The business logic that apparently nobody knows in that company wasn't completed. We had to manually fix records and work 12 hours sometimes to resolve issues.
The whole plan to have a controlled release crashed and burned, and nobody cares about that thing at all.
We burned ourselves (developers) trying to keep that thing afloat. I've never reached this level of stress and despair.
The director of operations left or was let go.
We observed that the company had been seeing other staff augmentation companies.
They assured us that they were just talking, and obviously, you know where this is going.
When they let go of the director of operations, they told us that the company may switch to Rails / Nodejs because e-commerce uses that and not Golang.
The team members were really vocal about this change, and nobody wanted it to happen.
They made me convince my other tech lead partner to say (she was going to quit), so we resolve that, and we move forward. I deeply and entirely regret asking her to do that.
We were at three weeks of completing the automation of the system, and they agreed.
But it was terribly in vain.
One week in the development of the "last phase," and they ask us to switch to V1 because they want to be stable (despite V1 being the most unstable application).
Following that rollback week, they call us to a meeting, where we were told.
There is a new leader that will be the leader of you all.
We will code in rails, and if you don't like it, you can leave the company.
That weekend my stress almost killed me.
I had orthostatic hypotension.
I fainted three times in the bathroom. I hit my head three different times really bad, and I think that I may have fissured my right elbow.
The end of a contract.
We reverted the company to V1 as they asked, and now I'm out of a job.
It seems that again I'm going to be without employment for a good couple of months.
I've got to take care of my health, study for interviews again.
But what hit me the most is the time that I spend sitting on this computer, rushing to complete something that I was pretty much entirely dismissed at all.
No questions asked, no nothing, they simply offer me to change the language or leave.
I've designed the architecture, coded channels to handle events, integrated third-party systems (Shipstation), and now all that is in the can.
All my time spent in that is never going to be back.
I've only touched the surface of Golang and GCP, which I guess is a pyrrhic victory for me.
I'm getting old, my mother is getting old, and all the time I did not spend with her is not coming back.
All the time I spend it trying to do the impossible, like when I was twenty-something for a company that didn't even ask me what I thought about the design change.
Again, like at the end of 2017, I'm on my own, alone.