Thriving Remotely: My Journey with SoftwareMill
I had never been fully convinced about remote work. It just didn't feel right. It was hard to imagine how to become truly involved and immersed in the company's day-to-day operations. I wanted my contributions to be relevant and meaningful, not just to check tasks off a list.
As a software architect, I wanted to stay close to the business to unleash my potential. I needed a feeling of belonging somewhere, of being part of something much bigger than myself. A remote position seemed rather hollow and hard to find satisfying to me.
Today, I want to share my thoughts and insights on how I feel and what I learned during the last 18 months of working fully remotely. I am sharing this because it exemplifies how remote cooperation should look, and I hope to inspire some readers to adopt some solutions and, more importantly, the mindset.
Decision
I fell in love with functional programming, and while searching more and more about it, I ended up on SoftwareMill's blog increasingly often. The company was apparent and visible in the Scala ecosystem, which I was interested in back then. However, despite its strong Scala reputation, Scala is one of many technologies the company uses to build its solutions.
So, the desire to become part of it began by becoming aware of what they are doing, how they approach it, and who works there. I learned much about the company's mindset and approach to solving challenging problems. SoftwareMill contributes to projects that add something to the world, engaging in challenging and complex fields like the health sector, fintech, or telecom. The company does not participate in anything harmful, like gambling, for example. Such distinction is important to me, so I took my chances and decided to join SoftwareMill.
SoftwareMill is entirely open and happy to chat. There was (and still is) a public Ask Me Anything Slack channel where you can ask any question without bothering with any formal communication. I was convinced at that stage.
Hiring
The recruitment process clearly shows the extensive effort SoftwareMill puts into hiring the right people. Initially, I was asked to fill out a short form with five simple questions. The next step was an informal, roughly 1-hour long conversation with Sylwia, a wonderful person responsible for HR, among other duties. The goal was to meet and chat to see if we could more or less get along. This was an enjoyable experience for me. Then, I was asked to implement a simple technical task in Scala, which was fun to do. I was expected to spend just a few hours demonstrating my thought process, design skills, and problem-solving approach. Shortly after, they responded with thorough code reviews and feedback. I was ready for a technical interview, which was the next step in the process. The technical interview lasted about 2 hours and included two other engineers. The atmosphere was relaxed, and I quickly felt comfortable there, which allowed me to grasp what working with them would be like. I was asked some basic questions, but then the conversation shifted towards what I enjoy the most: architectural challenges. There were no right or wrong answers, really. I saw it more as an opportunity to showcase my skills and experience.
Onboarding
It was striking that I was a fully-fledged team member from day one. There was no hierarchy, secrets, or tight schedule full of meetings. Everything was completely transparent and accessible. The first week, called Cultural Week, was dedicated to getting familiar with how it feels to be part of SoftwareMill. I got involved in informal virtual meetings with people just to get to know each other. This was an opportunity to connect with people from many different divisions.
Every day at 10:00, there is a company-wide meeting called Chrum, just to have fun together and talk about anything we're in the mood to bring to the table. Not everyone is interested in such meetings, and there is no pressure. Meeting frequently gave me a sense of belonging, of being important.
Before getting involved in a particular project, I developed some of our open-source projects. It was apparent that everything here is based on trust and respect. No one controls you, micromanages your tasks, or monitors your progress. You are free to plan your schedule on your own and participate in events that are important to you, and the only thing that matters is the outcome, not the way you work.
The Project
Soon after joining SoftwareMill, I was asked if I was interested in participating in a project for a telecom brand. The decision was mine, and I was presented with details about the project to make it well-informed. Our team was small in the beginning. We decided to have short daily standups to stay in touch. The company does not enforce any particular way of working - you are autonomous and responsible for your work. This part is individual and depends on a particular project and the customer’s existing processes, so I may only refer to my particular scenario.
Working out some form of shared time window within your team is always worth considering. This enables spontaneous discussions, pair programming, and getting a feel of working together - but the choice is yours.
It was challenging to stay in touch with our customer from Australia, which makes for a 10-hour time zone difference, but we quickly worked it out. The customer knew the company and was fully aware that we were from Poland, so they offered to align their schedule to meet our working hours.
I have never felt left alone with any kind of challenge. The system was complex and expected to be available 24/7. The throughput was really huge, with the system designed to handle thousands of messages per second. Several times, I asked for consultations with SoftwareMill’s people (from other projects) regarding overall design, module relationships, or possible technological tools. I would especially like to highlight their eagerness to get involved and share their knowledge. This is a good example of how the cooperation and culture feel here.
Softwaremill hires really passionate people who are eager to help. A huge advantage of remote companies is access to a larger talent pool. It is excellent to work with people who love what they are doing. It is motivating and uplifting. This is the inherent foundation of great engineering work.
Shortly after, I realized how high employee retention is. It was not an accident. The hiring system emphasizes not only technical skills but also what kind of person you are. Some technical deficiencies are easily solvable, but if it is just hard to get along, it is deemed to fail in the long term.
Working remotely makes it even more important to maintain great documentation and describe every decision and its reasoning. It is necessary if we want to make well-informed decisions and enables us to work even more asynchronously.
Side Tasks
Apart from participating in the project I was assigned, I was free to engage in other tasks that were not directly related to my project. First of all, I was encouraged to join some certification groups. These groups attract people interested in a particular technology and help them get a certification. I got CKAD certification as part of this initiative and am now preparing for AWS. Learning together is a big deal. It motivates you to take small steps regularly, helps you understand complicated topics, and creates a space for discussion.
Another kind of activity people here get involved in is writing articles or developing our open-source projects. I was involved in developing Tapir - our flagship Scala open-source project.
Learning together and enabling personal growth is an overarching idea here. There are a few reading clubs where people read books chapter by chapter and discuss each together weekly. We have recently read Software Architecture: The Hard Parts and Designing Data-Intensive Applications. Now, we are reading Foundations of Scalable Systems.
We regularly meet to discuss architectural challenges and to experiment with new technical solutions. Sometimes, it looks like ArchKatas, where we try to tackle complicated problems. Other times, it is more like a workshop where we get our hands dirty and experiment with new tools or technologies (like shardcake).
People often publicly share their experiences from projects or private passions in the form of 1-hour presentations called Friday Markets or Indexes if they refer more to the project they work on. It allows staying up to date with new emerging technologies, knowing who has experience with what, and adding to your general technological awareness.
Soft skills
Everything up to this point was more or less related to technical aspects of my work at SoftwareMill. The company also puts substantial effort into developing soft skills. We often take part in workshops about giving and receiving feedback. Being ready to tell your teammates that there is room for improvement is a powerful yet delicate matter. Working remotely makes it even harder. Healthy feedback enables you to grow, but you must feel safe to embrace it. You understand that the only motivation is to help you, not undermine your actions.
There are also reading and discussion clubs and workshops focusing on developing other aspects like leadership, well-being, assertiveness, and how to become a keynote presenter. A few people here become recognizable to the broader public by presenting at the most prestigious keynotes worldwide. It all started just by having the chance to dry-run their presentation and receive friendly feedback and support. I also want to go on stage one day, but that is yet to come.
I have felt like an important part of the company since the very beginning. I could share my thoughts and concerns about any ongoing company decision. My voice was heard, and I know I had an impact when something was important to me. There was no distinction between new people and those who have worked here for a decade and therefore are considered more experienced. It is always about the argument's value; the best ideas must win.
Every month features an event, serving as the perfect pretext to meet face-to-face. Each event revolves around a particular matter. It could be anything: a mountain walk, cooking together, tasting wine, or painting. People themselves organize such events, and whoever feels the need to join is more than welcome to do so. This is indispensable for building a strong team in the long term. I remember my first such event; we were hiking through the mountains for two days and spent the whole evening discussing. People were happy to share their experiences, not only work-related - such a good way to build a team feeling.
Wellbeing
Working remotely has never been easy for me. At first glance, working from home seems only convenient and liberating, but it's not that simple. Working in the office is straightforward; you go there for 8 hours, and technically you are at work no matter what you do. Getting involved in a 1-hour discussion in the office kitchen about literally anything is normal.
However, when you take a break at home, you don't count it as working time. I constantly needed to overcompensate, which disrupted my daily rhythm. I was free to share my concerns and receive help and support. I was heard and understood. Everyone is treated individually. It turned out I wasn't the only one feeling this way, but with the right guidance, it's all easy to sort out.
Conclusion
To wrap up, working remotely is at SoftwareMill's core. It calls for a continuous effort. It's important to make everyone feel welcome to share, join in, and really listen to each other. Remote work isn't just about using the right tools or tech. It's about changing the way we think and work together.