Friday, May 21, 2021
Tuesday, May 11, 2021
It has been a month so far.
What I've learned so far?
Don't put several interviews on the same day.
It's hard to track information as you are speaking with the interviewers. There is no room to think about the company and what your steps are ahead.
These interviews are long processes that are not paid
Don't accept "deadlines" you are not in a contract, you are not at work, they will not pay you this, no matter if this goes right or wrong.
Value your time, and don't put several challenges for the same week.
If they don't like that, that is their problem, you don't have to please them, they are not even paying you for this. If the company is really urged, they have to pay you for your time or simplify their process.
Maintain your mental health above all.
It is pretty easy to get demoralized after several failures.
After three weeks, I felt a complete and utter failure.
I started to spiral in anxiety, so I decided to do a complete stop.
Ask about how they manage the payment.
This will make more sense to people from Latin America. If you receive your payment in crypto, use an intermediary company like Bitwage, or have a foreign account, ask the interviewer if they will pay in any of those methods.
Don't spend time doing a challenge for a company that will flat-out refuse to pay you in your terms.
I was doing a screening for an Uruguayan company. They insisted that they were going to open an Uruguayan bank account for me.
Although I mentioned that I already have my preferred method, they simply ignored this.
There is no silver bullet.
It is a general recommendation that you have some sort of knowledge of a company before the interview.
I notably spent several hours researching what Storj was and what they offered.
As the end result, I didn't even reach the technical exam. I was screened out.
It is not a conclusive result, but this was pointless researching overall what did the company do. They had several solutions. I didn't have a clear vision of what I was going for, just that I had a company that offered several things and zero ideas on what to ask.
This experiment is the result of 1/33 companies. I've spent several hours researching.
The point is that the consumed time doing that took time out of doing technical preparation.
Ask how much time the feedback will take
The Spanish company started with an aggressive deadline of 1 week to complete (take into account that I do this challenge, I can't do others or interview other companies).
The code wasn't a lame CRUD. It had a level of complexity and research.
At 3 weeks now, the feedback is that "they liked it, is well organized and documented.", but still, I've got another technical challenge ahead.
The amount of time I dedicated to that really crippled me hard with other challenges I had, and then I didn't receive an answer for 3 weeks.
That is not good for me as an interviewed person.
If I don't have precise timing when the feedback is provided, I'm kicking those interviews for later weeks.
It is counter-productive to demand a deadline and then don't know when you are receiving feedback.
Embrace it. Companies will not tell you what went wrong
My test case is the company Polar. I've reached their fast process to the last instance.
I deduct that I did not pass the test because, after almost a month with no feedback, that means that I'm not their right person.
I sent an email a week after asking how it went, and I've never heard back from them.
Out of 33 companies, only "three" provided feedback about the process.
I use quotes because, technically, two of these were staff augmentation companies.
After resolving their interview, it didn't do anything for me because there is another phase where I will have another different and drastically different challenge.
If you have feedback, it may mean nothing.
> Jorge wanted to let you know that I'm moving forward with another candidate and don't think we are a good match. I enjoyed our time talking and working through some code. I think you have a bright future ahead and wish you the best.
That is the only verbose output I had from a process.
Does it tell me how to improve?.
Does it mentions what went wrong?.
I don't know what a good match is. This was like when I was getting rejected by girls when I was inviting them out.
I'm not complaining about the interviewer. That is absolutely not the point.
At least I had a quick rejection notice, which is more than what other companies have done, but it is still nothing.
It is hard to read between the lines what they are looking for.
Some tech interviews are a blatant copy of the Cracking the code interview with runtime questions, such as run time complexity of a palindrome solution that I quickly created.
Others are subtle, like create a translator from decimal to English numeral or roman numeral and going over the code.
Some of them ask you questions like a robot and recall absolutely all the functions in the language you are evaluating. I tend to avoid wasting time on this.
If they don't read a manual, I'm not memorizing all the programming languages I know and recall every single function call.
Don't act irrationally, take your time, study ahead of time, prepare challenges in hacker-rank or other tools.
Read cracking the code interview.
Don't feel bad. Even if you do all of these things, it most likely will go wrong.
You are not a bad developer. You've spent time doing this.
I decided to do a complete stop and start refactoring how I do challenges and how many.
At most, I'm thinking of doing a challenge per week.
It had a crippling effect to receive so many rejections in three weeks.
I'm starting to filter staff augmentation companies. These are sponges that add another technical barrier ahead of me.
I'll update this and mention how it went.
I started already to space out challenges. It may go wrong. Still, I'm trying this out, but the most essential part is that I want to have peace of mind and don't feel pressured by things that will never be paid.
And finally, an update on the stats.
Wednesday, May 5, 2021
Monday 3 / Tuesday 4
Still no news.
The Spanish company still hasn't any kind of feedback. I shut down the live site.
I don't know why I've spent so much time doing that challenge.
The other company provided feedback, and I've got a second challenge tomorrow, Wednesday 5.
The second company I interviewed and had the `final` interview didn't even answer my email asking how the test went.
So I don't know if I've passed the interview or not.
The rest of my challenges are 90 minutes, 105 minutes, and I don't know what else.
There are a couple of staff augmentation companies going on, that to be fair, I'm doing them just in case I don't get any gig this time, but I'm not entirely convinced.
Thanks to a previous work partner, my other alternative would be to work in something different and have a technical manager position.
I don't know what will happen, it is a bit difficult to stay calm when I used to get jobs in no longer than two weeks.
I'm doing this on my own and to be frank, I'm a tad nervous, since I don't have any kind of support.
Friday, April 30, 2021
It has been two weeks since I have finished my contract.
I've got interviews each day.
My first week had a challenge for the Spanish company Lana, published here.
I delivered the project 2 days before the deadline and did not have any kind of feedback.
I contacted the recruiter and also did not had any kind of answer.
As I am writing this, I've requested further feedback.
I find it disgusting how I'm demanded a deadline to complete a challenge, and then I don't have any kind of feedback.
To make this worse, I was doing another Golang challenge for a Canadian company. I accept, and I receive a 24-hour deadline to complete a challenge, and that it should not take more than 4 hours.
I deliver in 4 hours 10 minutes.
They were going to review it at night, and then I would have a 90-minute extended test working in pairs.
I'm seriously thinking of starting to reject challenges and send them to the projects I've presented, or they can pay me to do the exam.
Sunday, April 18, 2021
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.
Saturday, October 17, 2020
It has been awhile since I've written something.
I've left the real state company, the CFO that joined was a real piece of work.
I've spent a couple of months without a job, I've been moving with the same team for 3 years now.
During that pandemic vacation time, I've spent time playing with Gitlab, pipelines, React, Redux,Tornado in Python and Heroku.
We started a new contract that is a series a company that the core is in rails / typescript and shopify.
We are moving towards GCP / Golang / Shopify, but there is a long road ahead.
While we prepare for that, I've been playing around with hacker-rank exercises.
I've been using Golang as a sad excuse to use the language, because there is some road ahead before we start with the company to implement Golang.
There are certain things that since I've been working with Python since 2012 that feel different.
One simple thing, there is no way to determine the position of an array element in an array. You need to iterate the array to know the position.
This may sound trivial, but when you've got huge collections, like arrays of 9 thousand elements, it is going to be slow.
I've been focusing mostly in a really down to earth exercise, New Year Chaos.
I honestly love the problem, it is so simple, yet as soon as you've got more test cases, you promptly challenge your previous solution, since either it is too slow or it does not complete in the expected time.
I think that is really a great exercise.
Without further comment, we are two months before end of year and we haven't our baptism of fire with Golang, so I'm going to keep on fighting with that hacker rank problem in my spare time.
Thursday, November 21, 2019
- Green/Blue deployment (soon).
- NLB for GRPC (more on it in the GRPC section).
The crux of the problem
Sources and links used during this research.
- Resume of someone that came to the same conclusions as me a good couple of months before.
- How to debug the server
- Environmental variables
- Examples of servers and how to pass options
- How to deploy in production and how to pass options. Excellent read.
- More argument variables