F.A.Q

Frequently Asked Questions

These are questions that you may want to ask me. I think it is a cool way to get to know each other.

How is your development environment?

My operative system is Linux with the Ubuntu distribution. The desktop environment is Regolith which is based on i3wm. I mainly develop on vscode because it is flexible and can be used for almost any language. check out my extensions. vim bindings are a must.

I don’t know if you’ve noticed, but all my dev environment is focused on not using the mouse. I think using the mouse is inefficient and unconformable for writing code.

My Dev environment devenv

I work on a single monitor because is a fact that you cannot look at two monitors at the same time. Thanks to i3 I can easily switch virtual desktops which is faster and more comfortable than moving the head.

Recently I’m trying to move to a 40% keyboard to reduce the movement of my hands while working. As I cannot afford a programmable keyboard, I’m working on the chkb tool to achieve the same purpose.

And all my projects are under git, This is so basic that I often forget to mention it. for me is like saying that I work connected to the internet.

Which online resources do you check during your development?

Google is always the entry point.

When I want to learn new technology, the first place is its documentation. I always try to read through it to get a general idea and to reduce the number of issues that I find due to not paying attention.

If I find an issue in an open-source project, the first place to look is GitHub issues to see if I’m the first to find it. If I cannot find it, I typically search for general solutions in Google that usually end at Stack Overflow, but not always.

If I want to quickly get the idea of how to do something, I usually look for examples to help me to understand it better. but always after reading the docs.

Which new technologies bring your attention and why?

Talking about editors, vscode is growing exponentially and I think it has the potential to become a universal IDE. I think its plugin ecosystem is incredibly good and every release brings something new.

Talking about languages, Go will be the programming language for scalable products. Rob pike explains why in 2009 talk here. While most people will point out cool features to defend why Go is awesome, I think that the best feature without a doubt is that the language is simple so it is easy to learn and understand. This makes it much easier to share code with your teammates which is always the point of any project.

Is there any company that brings your attention due to its performance?

Microsoft is doing things right. GitHub has improved a lot since Microsoft owns it and vscode has been born thanks to Microsoft. Also, I see that they are increasingly moving towards Linux environment which is good. I think that Windows will become a Linux flavor in the following years, and it will be awesome.

How do you keep your knowledge up to date?

Google recommends several posts related to technology, based on my interests. It has been a good source of new knowledge that helps me to follow trends. Medium is a webpage that is often recommended.

I also follow people on GitHub so I can see what they are doing. This helps me to be aware of new technology around my network.

And on my free time, I write open-source code at my GitHub profile.

Do you share your knowledge? How?

This blog is both my CV and a knowledge sharing tool. But it is not the only way. I’ve been doing workshops all my career and it is something that I enjoy. Sadly most of the latest workshops have been internal so I do not have any public information to share.

Is there any role during your career that you are especially proud of?

I do not have a long career yet and every position has influenced me somehow. It is hard to highlight one above all of them but if I have to choose. The last 6 months in HP as a member of the cloud team have been special because I had the chance to learn from amazing professionals that have changed me for good.

Is there any role during your career that you would like to have done differently?

I think that with my current knowledge, The app that I developed for MyScape would have been totally different. I did a lot of handcraft which was good for learning but not good for reliability. Also, I didn’t implement any test because at that time I didn’t even know that automatic testing existed.

Which skills are essential for your role?

This is a good one.

Above all, good communication skills are essential. Doesn’t matter if you are as smart as Rick Sanchez if you cannot share what you know with your team. Communication is not only about the verbal exchange of words but also about writing clear code and good documentation.

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

Martin Fowler, 2008.

As engineers, our job is to solve problems.

Therefore a creative mind is another essential requirement. This will allow us to find solutions to the problems that we face.

Last but not least, patience is another essential requirement. Solving problems is neither easy nor fast. It requires to allow you time to think and to make mistakes. A good engineer knows that after one dreaming night, problems seem easier to solve than the previous day.

Which skills identify a good leader?

I’m glad you ask! I have an entire post about this topic.

Interestingly, there is a lot of overlap between the answer to this question and the answer to the last one. I’m going to say that a good leader is the one who serves inspired by Enric Lladó.

Samurai is the one who serves. A samurai leads by serving. When you serve other people, people start following you. This is the essence of true leadership.

video

Samurai, el que lidera sirviendo. by Enric Lladó

How will you describe your ideal working team?

My ideal working team will be between 4 and 8 people including me. In this team I will be responsible for:

  • Coordination: Ensuring the team can work as a whole.
  • Knowledge sharing: Ensuring knowledge flows between team members
  • Individual happiness: Ensuring everyone is happy in their position and doing my best to people always grow.
  • Quality product: Ensuring the output of the teamwork yields the expected quality.

The people in this team must be people with the skills described above

How it will be your ideal company to work at?

I miss the structure at ERNI. This company is almost all that I expect from my ideal company. Sadly they do not provide remote work yet.

My ideal company meets the following checks. In order of priority.

  • Asks employees regularly about how they feel. This implies that a person must be in charge of you and be responsible for finding time to meet with you just to ask. This way there is a clear opportunity for the employees to talk with the company about concerns. It is important to have these meetings regularly so confidence can be built.
  • Invests in people formation. Not only by paying for external courses but also by providing time to accomplish them. It is useless if your company pays a Master for you if you do not have the time to study. It is enough is the company reserves around 15% of the time for internal training.
  • Transparency in salaries. At least give some ranges to set expectations. It is awkward to ask for a salary raise and even more if you do not know what to expect.