Sometimes, our dreams of a perfect job don’t come true, yet what we end up doing is a much better fit than what we thought we wanted to do. Damian’s story is a little like that: he intended to study art, didn’t, and now he’s very happy as a Senior Ruby on Rails developer.
He has been one for about 10 years now, and for the last four he has been working exclusively remotely. We’ve spoken to Damian about his career, plans for future professional development and his everyday reality working at Netguru.
Meet Damian, our Senior Ruby on Rails Developer
Damian joined Netguru’s team as a senior developer and immediately became responsible for a big project. It was an e-learning platform with a challenging business model. Two other senior devs were switching out of the project team, and Damian had only a week to take over the app’s backend."The code was written very well, so I didn’t have much trouble," he reports. "Honestly, I’d say it’s in the top five best examples of code I’ve seen in my entire career."
Taking responsibility for a live app was still pretty stressful. Damian had to watch over bug fixes, development, maintenance and deployment. And there were bugs. Damian says that his worries lasted about two months. Then he got more familiar with the code, more integrated with the team. “Deployment’s going great, and we run a lot of tests. The project is actually coming to a close. I’m waiting to see what my next challenge will be,” Damian says.
As a senior developer, his job is to lead an entire project towards successful completion. He plans tasks for his team, prepares cost estimates for the client, implements code and deploys it on production. It’s both hands-on and managerial in nature. Damian says that it’s to be expected. “If you get an app that’s well written and servers that are well-maintained, you need to be prepared for less technical tasks, too, as a senior dev. I’m glad to have experience as a technical project leader at this stage of my career.” Of course, every senior developer has to start somewhere. In Damian’s case, the starting point was a book.
From aspiring artist to software developer
It might seem that going from creating art to writing code is a big shift, but Damian doesn’t see it that way. “Programming is a bit like art to me,” he says. “In both cases, you start with a blank page or a blank screen. And in both cases, you create something out of nothing. All you need is a set of basic tools. Just a computer with a keyboard and a screen allow you to build something amazing.” Damian reflects that this creative process was what must have originally caught his attention. All it took to make software development his career was a little push: a friend gave him a book about programming. “I didn’t really know what programming was before then,” says Damian. “But with time, I’ve found that I really enjoy the process. It’s important to love it, because it takes up such a big chunk of my workday. If I hated it or felt lukewarm about it, I wouldn’t be able to stay motivated.” Projects can stretch over years. Some end in failure. Damian’s way of dealing with the stress is by focusing on all the things one can learn along the way.
Damian has centred his career around Ruby on Rails and has been a RoR developer for about a decade. He’s worked on projects in many different industries, from healthcare, real estate and fintech, through ecommerce and price comparison platforms, to technological support software for travel companies, malls looking into an omnichannel experience, and data-driven businesses. Some 90% of Damian’s time is dedicated to backend, and the rest to frontend functionality.
He joined Netguru in December 2018 as a Senior Ruby on Rails Developer. “I knew about the company for years, as it has a very good opinion on the market and in the Ruby community,” Damian says. “I’ve wanted to apply for a job here years ago, but stopped myself by thinking I wasn’t good enough yet. I finally took that chance after finishing work on a Berlin-based project. A recruiter from Netguru contacted me on Linkedin, and a month later I was already an employee!”
The road to Ruby on Rails success
Damian’s success as a RoR Dev didn’t happen overnight. He first started out as a C# Developer, with a salary somewhat below his expectations. At the time, software developers weren’t as in demand as today, as the industry was still in its early days. Along the Polish coastline, where Damian lived, the job of software developer wasn’t popular, and there were few international companies offering good positions. Support for beginners was sorely lacking, too. “I floundered. Often, I’d do things completely wrong simply because I lacked experience,” says Damian. “Then I hit another obstacle: I had to do my obligatory time in the army, which took nine months.”
Once he got out, Damian learned different languages: Perl and PHP. He worked on a PHP project for a travel company - their main web platform for customers. He recalls this job as the first one that put interesting challenges in front of him and allowed him to learn. After a few years of this, Damian got his first Ruby on Rails job. During two years at that company he learned a lot about Ruby, Rails and good teamwork. Several of his colleagues were remote workers from Germany. They maintained daily communication and effective collaboration. This experience showed Damian that remote cooperation could work under certain circumstances.
About six years ago, Damian moved from the north of Poland to Kraków, where he worked at a large company with a separate Ruby on Rails department. Back in the Tricity, where Damian hails from, the Ruby community was small and undervalued. But Kraków was different. The city hosted many international companies, who were willing to pay their developers higher salaries. “I remember getting over ten job offers a day, some of them remote,” Damian recalls.
His next job presented him with the biggest challenge of his career. Damian worked on a huge piece of software responsible for sending text messages to all of Scandinavia - millions of people. The company’s clients, such as PizzaHut and McDonald’s, communicated with their customers this way. Sadly, the old version of the software had irreparable issues, so the company chose to rewrite it using Ruby on Rails. What made Damian’s task even more stressful was that the app had to work on the first try - there’d be no explaining millions of incorrect texts.
Working remotely & flexible hours
Damian’s next job meant moving to England and a new communication challenge: using a second language at work and in everyday life. He stayed in England for six months, then returned to Poland and worked remotely for a year and a half. This made good communication even more critical to his success. “I find working with Englishmen and Norwegians very pleasant,” Damian says. “They share a very relaxed approach to deadlines - that is, they don’t enforce deadlines just for the sake of them and understand that delays happen. They are also kind and helpful. Curiously enough, the team at Netguru shares these characteristics.”
Remote work may have been a big challenge when it was first introduced, but with today’s tools and technology, it can be very comfortable. “At Netguru, we use Slack, screen sharing, Google Meet, and Jira for project management, among other tools. We maintain daily communication, such as standups via Slack calls. It works really well,” Damias says. “Netguru also lets me schedule my own work days. I try to start work around 8 or 9, but it doesn’t matter whether I stay glued to my screen for eight hours or take breaks, as long as I participate in planned calls and standups. These take no more than two hours a day.” Damian and other members of Netguru’s team use this added flexibility to plan their work around their everyday responsibilities. It’s common for them to take their dog for a walk in the middle of the day, or to accompany their spouse to the doctor’s. As long as they let their team know they’ll be gone ahead of time, no one bats an eyelid.
“If I’m going to be gone for longer, I try to let my team know the day before, or early in the morning,” says Damian. “And it really isn’t frowned upon here. Many companies claim to give their employees this freedom, but Netguru is the only place I’ve seen that makes it work. As long as I do my job, I don’t need to stress about when it happens.”
Joining Netguru - the recruitment process
To get to where Damian is today, he had to apply for a Senior Developer position. He knew about Netguru and kept track of it on the job market. He worried about applying for a long time, but after another career milestone in the form of a finished project, he made the jump. After a month-long recruitment, he became a Netguru employee.
“The recruitment process was extremely fast and efficient. And very pleasant on top of that,” Damian reports. The first phase of recruitment was an introductory conversation. Then it was time for a more technical talk with one of Netguru’s experts. Damian recalls it with fondness. “We talked in English, discussing a couple of use cases. What I’d do in a particular situation, what experience I have with a certain type of problem. There were no tricks designed to trip me up, and I genuinely enjoyed myself throughout.”
Being part of Netguru’s team
Once here, Damian was positively surprised by the amount of emphasis Netguru’s team places on code quality. He’s also happy to note that interpersonal relations are kept on a very high level. “We have a nice atmosphere, little work-related stress, good communication between team members, and we can always count on each other for help,” Damian says. “I’ve never been a part of such a well-matched team. A big part of screening candidates during recruitment is making sure that there’s culture fit. The result is an environment built by like-minded individuals that suits their needs perfectly.”
Team members receive the support they need when they encounter work-related challenges. There are special Slack channels for knowledge sharing, where seniors can impart their knowledge to younger colleagues. “If you ask for help, people will always find time for you,” Damian says. “I’ve only encountered this phenomenon once before, in England. This solidarity and support. Even if I really messed up, the team wouldn’t point fingers. Instead, people would try to help.”
According to Damian, Netguru isn’t too dissimilar to the work culture he experienced in England. “I met great people at both companies. At Netguru, we spend time together by choice after work, or chatting over lunch, and we use Slack channels to form smaller communities based on our interest. Other work cultures I encountered, even those of the USA and Scandinavia, we much more formal and involved fewer personal interactions.”
What’s different at Netguru (as compared to the English company), is that the people here are much more eager to offer help. “If I ask someone to help me, they will most likely take some time off their work day and make sure my problem gets solved,” Damian says. “During my time in Englad, my coworkers required more independent problem solving from each other. If I went to them for help, they’d point me in the right direction, showing me where I can find the information I needed to solve my problem, but wouldn’t often get involved beyond that.” This approach has its pros and cons: building great team relations vs. efficiency and time management. Although it could be argued that helping someone with a difficult problem helps them and the company save time.
Facing senior-level challenges
Damian is satisfied with the level of expertise shown by Netguru developers. “I like the flow,. We have GitHub integrated with CodeClimate and we use it to monitor code quality. If we get errors, we try to fix them and improve our code score as much as possible, while keeping in mind project deadlines and the efficiency of our work. We also try to always use the newest versions of languages, frameworks and libraries in our stack.”
Damian warns that it’s not always best to prioritise updating tools and improving working code. One of his projects included a redundant Elasticsearch library, besides a PostgreSQL one. Working around these two libraries meant some wasted time, but the app worked and the client wasn’t dealing with a lot of traffic at the time. Because of this, Damian made the decision to postpone improvements. “The project does work well at the moment. Removing Elasticsearch could help avoid future problems and boost performance, but that’s not in the client’s best interest. The database is deeply embedded in the app’s architecture. It would take a lot of work to uproot it, so we took a pragmatic approach to the situation.”
“I a problem does occur, we will deal with it accordingly, but at the moment, it makes no sense to do a major rework. The team would love to do it, but from the business perspective it would be an unnecessary cost without any palpable value at the end of the process,” Damian says. Many developers would prefer to update their work immediately, use the newest versions of their tools, and rework their code until it becomes perfect (spoiler: it never will). But more often than not, this approach doesn’t benefit the client at all, and instead adds project costs. A developer with Damian’s experience needs to be able to see this.
As a senior, Damian doesn’t have as much room for growth as he used to. He takes advantage of internal training opportunities and knowledge sharing meetings. He shares what he knows, too, through talks or by writing informative articles. The team counts many experts with vast reserves of knowledge and experience, so there’s always someone to talk to who knows more than you about certain subjects.
The company promotes constant growth through internal procedures and aids. Every employee has a growth budget that can be used to attend events, participate in courses or procure learning materials. Each team member has a leader who helps them decide on a personal development plan, complete with quarterly goals. “I’m learning Python and Machine Learning at the moment,” says Damian. “My leader and I have scheduled talks every three months to review my progress and decide on further goals. If I’m consistent in working towards these goals, I get a pay bump every six months. And I get a lot of freedom in deciding what I want to focus on, as long as my goals align somewhat with the goals of the company. I do some of that learning during working hours, which means I’m effectively getting paid to learn.”
The speed and direction of a software developer’s professional growth depends on the projects they work on. If they take part in a large project, with plenty of difficult challenges, large numbers of users, and so on, they can learn a lot in a short amount of time. “What’s great is that you can always switch between projects when you feel like you’re stagnating,” Damian says. “It’s not an instant thing, as there has to be an opening somewhere else and someone to take over your job in your old project, but it happens all the time. All you need to do is talk to your leader and they’ll help you find a better growth opportunity within the company.”
As a senior, Damian gets to make meaningful decisions in his projects, allowing him further room to grow. He’s currently the only senior dev in his project, so he can choose any tools he wants, as long as they match Netguru’s general requirements for quality, efficiency and security. “I just need to have the argumentation behind my choice. Proof that what I want to do will work. And I can’t propose something crazy: it’s a good practice to use more popular tools and technologies to avoid maintenance issues in the future. But Netguru’s stack is huge. Besides, if I really want to, I can experiment with something more unusual as part of my personal growth goals.”
Damian’s story doesn’t end here. He’s preparing to move onto a new project, and gaining experience in people and project management. We hope to watch him grow beyond his own expectations, sharing his hard-earned knowledge with the rest of the team. Celebrating and sharing experience is a crucial step in building a truly outstanding team.