It has been a month since I started work as a new graduate.
My company, which is a new subsidiary of a bigger group, is set out to capture the consumer F&B market. It is going to be an exciting and fast-paced ride this year, as plans to incrementally roll out the system have already been proposed and the real has just begun last week.
As I have started to be aware of and understand, from a bird’s eye view, the role of technology is simply to fulfill the business missions of a company, by various ways such as (near) real-time communication with customers, building customer loyalty around a brand, making better decisions by driving insights from data hence providing customised experience tailored to individual customers, etc.
As a tech guy, I willingly admit that it is easy to get engrossed in researching and finding the most sophisticated technology to solve problems, while losing sight of the goal that everyone is supposed to work towards.
This came about after I was given a small exercise as part of the onboarding process as an entry level software engineer. I was tasked to create a simple web app that shows a listing, as well as providing a search function.
I was given full autonomy in terms of the approach I wish to take to complete this exercise, the appropriate technologies that best solves the problem, the scoping, time budgeting and the final deliverable I want to achieve.
As you can see, coding is but just one part of being a software engineer, and it the final process in producing the expected output.
In fact, without proper understanding of the project scope, getting on the same page with the product team, designers, as well as the engineering team, there is no business to write code at all.
I came across a video by TechLead on youtube at a very appropriate time.
He talks about the complexities of software engineering and what makes a “10x developer”.
Hint: Strive to be 1x engineer that looks like a 10x engineer
Exciting times ahead
As mentioned, my company laid out the projected milestones for our product launch this year and I am excited to be part of the team to build the core system from scratch, not out of bragging rights, but for the precious opportunity to learn about building a robust, secure, scalable(don’t like this buzzword but whatever) system, and of course transforming into a “1x engineer”.
Microservices: the only way to scale huge systems?
Yes, we are going to adopt the microservices approach to build our system right from the start.
Being new to microservices and the only thing I knew about it was people raving about how scalable their systems were, I began to read up a little about it.
From what I understand, the reason why companies turn to microservices architecture is not because microservices reduce load on the system and therefore boost performance, but rather the system has become huge and complex such that deployment is brittle, and takes a long time.
The tradeoff for increased complexity in managing microservices should be worth the ability to scale deployments.
There are also people from the “YAGNI AND KISS” camp and remarked that a new company should spend time building the product, not dabbling with infrastructure concerns.
Personally, I can see the benefits of independent deployments that microservices bring. While I tread forward with positivity and optimism, I maintain a slight skepticism as I still do not have a good idea of how it will actually turn out for our team.
I trust that my engineering lead will build the right team of engineers to achieve our business mission.