Thoughts, reflections, and ideas

Random thoughts a Friday night in Ottawa

Posted on

It's January 19th, and I'm right now in Canada. It's been a fascinating beginning of the year, starting with my onboarding at Shopify. I had forgotten how it feels to start a new job, with a lot of tools and processes to learn, and a lot of people to meet. It requires a lot of energy, and I tend to overwhelm, but I'm trying to take it easy this time, step by step. What excites me the most about joining this new company is that I'll be able to dive deeper into how to make developers productive working on mobile codebases. I've been learning a lot about it in the last couple of years, and I love building tools to make developers' life easier. Shopify has a team for that I'm glad to be part of it. I'm excited about all the stuff that I'll have the opportunity to learn here.

This post is somehow unique. I couldn't come up with a name that summarizes what I'm going to write about (because I don't know), but I just wanted to write down some thoughts which have been in my head for quite some time. Do you know these moments in life when you ask yourself so many questions, and they don't allow you to see any light at all? That's sort of how I'm feeling. Professionally speaking, I've had a very intense career since I became a developer. I taught myself most of the stuff that I know nowadays. That requires being very active, reading a lot of books and tutorials, using the social networks very actively, especially Twitter where you can get the most recent tech news, getting involved in open source projects and working on your own. Sometimes I was like a horse, I was moving fast, but I didn't have time to enjoy the journey genuinely. That moment when you can sit back, relax, and celebrate your achievements. My achievements quickly faded away because I was already thinking about the next step in the journey. I think this goes pretty much with my personality, and the people that know me well will most likely agree on that. I'm working a lot to slow down my life, but I'm finding it very hard. A side of me says that I should stop it because otherwise, I'll run into troubles soon, the other side tells me that I should continue because that's the only way to be successful in life. It's like having a devil and an angel on your shoulders pushing you to opposite directions. That's my daily dilemma.

I'd love to slow down, and have more focus in my life. Moving fast with no focus brings me stress and anxiety. It makes me feel bad about myself and with the people around me. I don't want that. I want to feel good and enjoy my work and the people around me. It's hard, isn't it? I don't know if you have ever been in that situation, but I struggle to make another version of me. As a consequence, things that I used to like, I don't enjoy them anymore. I used to run a lot, but a lot. It was my mindfulness moment of the day. When I ran, I didn't think about anything; I focused on my breathing, my steps, the things around me. Nowadays, when I go out for running, I keep thinking about my everyday struggles. They are with me all the day long. It's so exhausting that I don't like running anymore. It's not running; it's me. I go to the cinema, I spend some time with the family, and the horse Pedro continues looking straight and moving. I don't know another way to describe it better, but I think the horse metaphor is very representative.

There are a lot of great resources out there with people talking about similar struggles. We live in a very competitive environment, with the insane amount of information being thrown at us every day. We sometimes push us so hard, because we think that the only thing we need in our life is success. We want to have the best job, a high recognition, and be the expert on some given areas. We are surrounded with such positiveness, that we demand us more than what we should. And to me, it's not surprising that such thing happens. You , and you find tons of articles titled like "X ways to be successful in Y". You open Instagram or Twitter, and everyone is so happy and has a great life that they become a source of inspiration for you. You lose personality; you want to meditate because person X said that meditation is what makes him/her a happy person, you want the new thing Y because you saw on Instagram a lot of people are enjoying that thing. I've been there, I'm still there, and sometimes I have zero time to listen myself, to hear my feelings, to reflect on my thoughts, to understand what motivates me or what doesn't. I just let myself be influenced by the competitive and overwhelming environment. Isn't it sad? I lost some personality.

One thing that I'm currently doing to help me get some focus is decluttering my life. I'm getting rid of all the things that I don't need, and which don't add anything other than noise. There's a buzzword for that, Minimalism, but it's not something that has been recently invented. People were minimalists in the past. They had all they needed to have a happy and quiet life. Before the capitalism and the Internet revolution people cared more about each other and themselves (something that we are losing more and more nowadays). Anyways, that's another interesting discussion topic. Simplifying one's life is not only about materialistic elements but also non-materialistic ones. I'm getting rid of the gadgets that I don't need in my life, replacing the expensive ones with a cheaper version (I'm replacing my iPhone with a cheap Xiaomi more than enough for my needs). Closing the accounts that I don't use, leaving Slack organizations in which I don't participate, reducing the tools that I use, leaving only the ones that are indispensable. I shut down my Instagram account and cleaned up my Facebook's one. I'd love to close it as well, but I find the events section very useful, especially when you live abroad. I have a list of all clothes that I'm going to give away and stuff that I'm going to sell in secondhand Facebook groups.

Getting rid of the stuff that I don't need is making me feel more relaxed. I don't have to think about these things anymore; I can open the laptop and have just a few apps that I need, and not a bunch of apps with badges trying to catch my attention. I have more time to read, to learn languages, to learn new technologies, without any distraction at all. It feels great, and overall, I have time to think about myself. Maybe that's what made me sit down and start writing this post today. Ideally, I'd like my life to be a continuous technology detox, where I can control when it's time to think about technology. I want to read more, and I don't mean tweets or Medium articles, I mean proper books. Wake up, and with a relaxed mind, start reading and don't feel that the time is passing. Read pages without thinking about any notification coming in, or meetings in the calendar waiting for your attention. I think the last time I had that feeling was in high school, where there was no phone, nor distractions to think about. Don't you miss them as well?

Minimalism is giving me time and space to think selfishly about me, about this horse that has been moving fast for some months/years. There's something that is coming up every time that I stop to reflect on myself, and it's the impact the work I'm doing has. Open sourcing used to be my mean to help people giving them some piece of software that they could use to build software with good intentions. It felt good helping other developers, talking to them and iterating the projects, but at some point, I came across the reality. It's a competitive industry, where not many people want to share efforts towards making useful open source tools, but instead, individually work on their own. I found out that communities in open source are rarely communities, they are just a bunch of people working with the same programming language, reading the same articles, and watching the same videos, but with different interests in the end. It was for me hard to understand why there was such a polemic in the CocoaPods team when there was another dependency management tool coming out, Carthage. I understand their position much better now. That's what I meant with communities formed by individuals with different interests, rather than shared interests. That disappointed me a lot. For me, one of the charming things about open source software is sharing efforts with other people and working together towards the same goals. In the competitive society where we live nowadays, it's becoming impossible, and I can't believe I'd say this but, I'm not as motivated as I was before working on open source projects.

I've also been there myself. I've mistakenly built projects thinking own my interests. Core Data wrappers, Xcode project parsers. I've contributed towards making everyone more confused and adding some fragmentation. I feel terrible about it. Interests in open source communities result in fragmentation, and we see it everywhere: Buck & Bazel, Yarn & npm. It's been a tremendous recent lesson for me.

Another thing that I had some time to think about is the ego. I started writing about it on this blog, but I stopped it. I instead reflected on it. As I mentioned, I was very active working on open source projects, writing articles, sharing stuff on Twitter. People used my projects, replied to my posts, asked me questions, and I felt that I was important. That wasn't me, that was the ego speaking in my name. When my ego felt important, it wanted to feel more important, do more, and publish more, and be more active. That's a shit-ton of energy for the sake of being recognized. Has it ever happened to you? Open source can be a good candy for your ego, because you expose your project and the person who worked on it, publicly to be used and liked. I knew the ego was speaking in my name because something that didn't use to be vital for me, like the stars on GitHub, or projects using it, started to be more important. When I decided to work on a new open source project, I started working on the facade, rather than the core. I managed to control it, and I'm working hard to change my mindset. Rather than publishing things, just with the mere intention of being used, or liked, because that increases my dopamine levels, I'd do it anonymously and participate less in social discussions.

We were told during the Shopify onboarding that sometimes we have to unlearn things to learn new things. That resonated with me and I felt that I have to unlearn a few things to progress in my career (or at least in the way that I want to):

And last but not least, there's another thought that has been on my mind for quite a long time. I've been doing Swift/Objective-C for a few years, and even though Swift is open source, I'm not as motivated as I used to be with it. I feel like its scope is limited to an operating system and that it's constrained to Apple interests. When I look at other languages such as Kotlin, Ruby, Go, or Javascript I feel that they are more community driven and that there are fewer interests behind them. People experiment with them and try to push them to their limits, like Javascript on mobile apps with React Native, or on Desktop with Electron. Kotlin being transpiled to Javascript, or compiled to run on iOS devices. I see a lot of criticism on the iOS/macOS ecosystem when intruder languages are making their way into such a closed ecosystem that Apple provides. To be honest, that makes me feel sad. Rather than opening the ecosystem, and allowing languages such os Kotlin, or Javascript, or opening APIs so that other companies can provide their IDE they prefer to keep things private.

I'm considering a significant turn in my career, and I'll most likely focus on Javascript/Ruby. Ruby because it's a very mature language, with a mature ecosystem and community, and it's the primary programming language at Shopify. It's an excellent opportunity for me to learn from the people that I work with, and work on projects that are not tied to the Apple ecosystem but can be used in many other operating systems. Javascript because of similar reasons, and because I'd love to do some web with frameworks such as React, and it can even be used to build mobile apps. In the end, we are all software engineers and focusing on such closed environment narrows our points of view on the problems around us. I'd like to break that barrier and look at those issues with a broader and more open angle.