Choosing my first steps as a Software Engineer

Nahuel Barrios
Mercado Libre Tech
Published in
9 min readApr 13, 2021

--

Read this story in Spanish.

Hi there!

A few days ago China Oviedo asked me if I could help someone who wanted to take their first steps developing applications for smartphones; she asked whether I could share what we look at in an interview or what technologies candidates should know… And it seemed like a great opportunity to share the outlook of the Mobile Architecture team at Mercado Libre!

If I wanted to sum it up in a tweet, I would probably use something William Mora, a former colleague of ours, once said. The link he shared should be the cheat sheet or the handbook 📖 of any software developer:

Instead of following the advice to “Stop learning frameworks”, I’ve decided to write it in the affirmative and at the same time bring down to earth some of the pillars we should work on so as to feel comfortable as software developers. These pillars will in turn help us use our time efficiently. 🚀

El tiempo es oro, así que tenemos que aprender a ser hábiles en elegir, a conciencia, en qué ocupar nuestro tiempo.” (“Time is money, so we have to learn to be skillful in choosing, conscientiously, how to spend our time.”)

For us, the best we can do is learn to use tools that will help us in the project we are currently working on, in the next one and in our next job.

These are some of the criteria we want to highlight:

  1. Learn and apply methodologies and patterns. 📚
  2. Be well acquainted with the platform and its community. 🌎
  3. Form our own opinion. 🔨
  4. Think about the user’s experience — at the end of the day, it’s what makes the difference. 👥
  5. Remember context is king: make sure to balance out the right variables. ⚖️

Learn and apply methodologies and patterns 📚

One way of learning tools that can serve us both now and in the future is to learn development methodologies and design patterns. It’s a great way to make the most of our time!

  • We will be able to apply it to any technology, language or development framework. And it will be easy for us to generate code that is understood, easy to maintain and flexible to change.
  • As new tools are developed all the time to solve known problems, managing the underlying concepts is what will ultimately make a difference and give us independence from the framework in vogue.

Be well acquainted with the platform and its community

It’s paramount that you get to know the dos 👍 & don’ts 👎 of the platform (e.g.: Android/iOS/Web/Desktop/TV/Automotive) we want to perform in. There are huge teams dedicated to thinking and rethinking the usability, performance and scalability of each platform to provide the best possible user experience (among many other aspects). Let’s take advantage of all they have been learning!

These teams are constantly evolving and they want us to adopt their products so that they become a fundamental part of our own products. To achieve this, they make a great effort to create content (documentation 📄, videos 📺, workshops 🛠, conferences 🗣) so that we can be self-taught and have at hand everything we need to learn.

Holding hands and working together does work.

In addition to being self-taught, there are countless communities focused on specific technologies (i.e. Android Devs Buenos Aires) and methodologies (i.e. Clean Code Buenos Aires), and in all of them we can find new partners and help of all sorts. Here in Mercado Libre we’ve got communities for each of our platforms so we can work together as a big team.

We will be able to take advantage of other people’s learnings so as not to repeat their mistakes. And better still, we have the opportunity to give back to the community in a thousand different ways, everything it gives us:

  • by helping someone on Stack Overflow or simply granting +1 to the question;
  • by uploading issues or actively collaborating in open source repositories (what?);
  • or simply by liking an online event you have attended.

Form our own opinion 🔨

We know it is always good to have our own opinion, but this takes on special importance in a world with libraries entering and leaving the market all the time and evolving too quickly. This causes many tools to become fashionable while still in an early stage of maturity. For instance, Airbnb adopted React Native for their Android/iOS apps and after two years they decided to stop using it (years before, Dropbox had a similar experience). By adopting a new framework and strategy, these teams had a great experience from which they ripped the benefits and, despite the cost, learned from the drawbacks.

One way of forming our own opinion is by developing sandbox-side projects. Take Play Store; it’s full of ToDo List apps (Look at it yourself) and it’s perfect to create & upload one more. What we are taking from the experience is what we were able to put into practice when thinking, designing, developing, bringing an app up to the store and seeing how it works in the real world. Not the app itself.

We will be able to apply the methodologies and frameworks learned in more real use cases. That will make us find problems and overcome difficulties when applying and combining different patterns to the same solution. An invaluable experience 💯.

Improve user experience — it makes all the difference

How would you feel if you saw that an app you use once in a while is the one that drains your smartphone battery the most, even when you’re not using it? 🤔

We must always ensure a comprehensive experience for our users. For example, if we’re making apps for Android/iOS, we have to look at how much battery our app uses. I would uninstall that battery-draining app… wouldn’t you?

As software developers, we must think beyond the task we are carrying out and assess the impact it has on the final product and in the whole ecosystem. We must think both about the experience we want our users to have and about what they would feel when using our product.

Image of a blue sky with a bright sun and a sunflower. The image tries to transmit an awesome feeling.

Remember context is king: make sure to balance out the right variables ⚖️

How long would it take you to make a ToDo List app? 🤔

“It depends” is probably the most valid answer in software development. Are you going to use it as an excuse to learn something new? Is it the main project of the company? You just need a proof of concept? Do you want to make your second ToDo List app but this time in another language to compare both experiences?

Language, technology and frameworks are important, and it’s okay to spend some of our time learning them because together with patterns and people, they make up the basis of all projects.

What matters the most are the reasons behind our choice of one tool over another, the reasons behind every decision we make.

The result may or may not be as expected; what matters is to make sure we weigh all aspects of the project before making the decision. And if the result was not what we had expected, then surely we’ve had the opportunity to learn a lot of things from the experience.

The power of communication 🤝🏽

I said I wanted to share with you five pillars and as I was writing this I realized I was not sharing the cornerstone of all these pillars: communication.

Picture of the famous four musketeers around their swords when they say “one for all and all for one”. The image tries to represent the concept of the union a team must have to succeed.

People are a crucial part of any project and the toughest problems can arise when their communication is not too effective. Thus, in order to minimize misunderstandings, it’s key to agree on team goals as well as on personal goals; to assign clear responsibilities to each team member; to foster transparent relationships and mainly to understand that everyone (even other teams!) is chasing the same goal, which is as or more important than your developing your technical skill set. I recommend you read this article “De cero a Senior” (From zero to Senior) by Nico Shuga Alvarez Quirós — it has great lessons!

So tomorrow when you finish your breakfast, ask yourself and your team this question: what’s your goal?

In short:

  1. Use your time to learn things that will still be useful to you 10 years from now.
  2. Deep dive into the platform, guidelines and be part of the software community.
  3. Form your own opinion. Try things out, experiment and you will learn something new every day.
  4. Why do you do what you do? To improve the lives of your users!
  5. Everything is a trade-off. Make sure to balance out the right variables.
  6. Projects are made by people, your words have immense power!

If you have made it this far, first of all, I am glad that you have found this way of looking at our profession interesting and hope it helps you to choose better your first steps and your next ones! (Not like me, who wish I had read that article 10 years ago.)

Second, if you were expecting a list of frameworks to rush out and explore, then I’m sorry to disappoint you. Any list that could be useful today would be super skewed by what we do and the goals we set ourselves as a team — it would also be out of date in 2 months. After all, every technology, app or company is a world in itself.

Finally, I’d like to share some things I’ve come across while writing this article that I found worth looking into:

And now… advertising time! 😅

At Mercado Libre we are constantly growing, creating new teams, widening our horizons and looking out for new challenges.

If you have at least 2 years of experience developing Android/iOS/Web/Backend and you wish to be part of this great team whose mission is to democratize commerce, money and payments in LATAM, then do not hesitate to write me!

You can find details of job openings at our Jobs site.

Thanks to everyone who has helped create this article!
Joaquin Iurchuk Samuel Sainz Nicolás Suárez Barbara Michalla Cecilia Sassone Sebastian Gun Luciano Vazquez

--

--

Nahuel Barrios
Mercado Libre Tech

Software Engineering Manager - Contratamos talento para democratizar el comercio, el dinero y los pagos en Latam.