Reflection on work

I am writing this post to reflect on my career so far, and how I got to where I am. The situations I have been through have shaped me, my decision process, and how I behave in a team/company. I hope that this text helps whoever reads it - how a guy that studied physics got into the startup world, and made something out of it.

I started my career in tech at CognitionX. I worked for two weeks at Zomato in Portgual, as a data collector, and that attracted CognitionX to my profile. Barely did they know that I was doing manual data collection… I was hired to be a Data Miner, and I was lucky enough that I knew how to code a little bit in Python.

I used the little code that I knew to get results, and tried to learn as much as possible on the job.

First lesson: Leverage the people around you to become better at what you do. You are the average of the five people you spend the most time with.

I was so lucky to be surrounded by great people. Great not only in the sense that they knew what they were doing, great also in the sense that they were genuine people and wanted to help others. So what were the things that I learned at my first job?

  • Working properly with Git;
  • Understand Python to a deeper level;
  • Understand more about how to write software;
  • Learn about unit testing (I know what you are thinking…);
  • Learn about how businesses operate, and their issues;

All these things were just the beginning of my journey. Everytime I got a step further, I could see more things that I needed to learn in the distance.

As I went on, I learned better scraping techniques from an incredible data miner that we hired, but he was so good I was able to focus on being a Backend Engineer. Hence I started building a REST API with the backend team.

Why did I switch to backend? I have a fear of being outdated, and I want to be able to build enourmous, resilient data pipelines. For the future, for AI applications… I had to start somewhere.

During this time I worked closely with a very experienced dev and a friend that was on a journey to learn - just like me. This casual team of 3 used Flask first, then Django to build an API - and powered some of its functionalities with PostgreSQL, ElasticSearch and Neo4j. It was a time of immense productivity and learning.

Eventually problems around the business, and the way people were dealt with drove me away, took away my passion for CognitionX, and I moved on. I decided to move to Cytora, as I perceived it would be a great place to learn and give the next steps in my young career.

From the outside Cytora seemed to have a working product, that was delivering value to customers. That posed challenges that I hadn’t faced before.

  • How do you maintain an app that is in production?
  • How do you add features without breaking the app for existing customers?
  • What does good product management look like?
  • Am I good enough to deliver value to new team fast, when different systems are in place?

Over the first six months, I definitely learned a lot regarding all these points. I was able to adapt, to communicate accordingly, to contribute. I coded fast, and I got stuff done. I thought I was doing really well, but looking back, I definitely made mistakes.

First Mistake: I always defered decisions to my team mates due to their computer science background, and downplayed my experience and the things I had learnt. This meant that over time my opinion was getting less valuable. I should have engaged in dialogue more, and have debated my points of view more often, as well as disagreeing with people until we reached a shared understanding.

Second Mistake: A good developer isn’t the one that codes the fastest. A good developer writes good tickets to represent work, thinks appropriately about the solution, implements it, and documents it well. He also writes good tests, communicates effectively with colleagues, and helps them. Being busy isn’t good, you can become a bottleneck, or stop performing to the best of your ability.

My time at Cytora is divided in two parts though. In this initial part we were managing a monolithic API, and in the second part our new director of engineering showed us how to work with microservices, in a distributed architecture.

What I learned over this year was mindblowing:

  • How do you do proper continuous deployment;
  • What are component tests, smoke tests, stress tests, load tests, acceptance tests;
  • How to trust your system, do propper monitor and logging, and let go of the idea you can understand it all;
  • Golang - yes, I had to learn it;
  • Kaban training was really useful;
  • How to design new systems and decouple them;

In the end, I am not even close to knowing all that I want and need to know. I still have much to learn. I have left Cytora (that is a story for another time), and am taking my chances with Splend. I will be learning a lot on the architecture side of things, and building a complete system. I will have input in the culture, and how we digitally transform the company.

I hope I am making the right choice for my future.

Thanks for reading,