How to Become a Successful Software Developer: Patryk's Success Story (2022 Updated)
Patryk Kaczmarek is an iOS Software Architect at Netguru with a rather unconventional background. Today, he supports the mobile development department with his experience and knowledge, and improves the company’s internal processes by unifying and optimising them. A few years ago, though, Patryk didn’t expect to be where he is today. He started out with a passion for construction, not software engineering. This is the story of how he changed his own life for the better through hard work and determination.
The road to discovering a love for programming
Patryk’s interest in software development did not come early or naturally. Throughout his initial educational career, he wasn’t interested in it. IT lessons at school weren’t his favourite, and he hated them at the university. In other words, Patryk only truly began learning to program at 25-26 years of age.
After finishing high school, he studied civil and environmental engineering at the Poznań University of Technology, specializing in building and engineering constructions. He was inspired by his father’s colleague, who helped them build a tiny house on a newly bought allotment. After graduating, Patryk got his first full-time job as a construction engineer.
It wasn’t an easy job, as it involved wrangling reluctant workers and managing construction sites in unfavourable conditions. Workers arriving late was only the tip of the iceberg, and Patryk was often held responsible for the situation on site. Over time, he grew dissatisfied with the construction industry.
Patryk applied for an IT university programme only two years after graduating with his M.Sc. degree in engineering. But his interest in it, mild as it was at the time, began earlier. “When I was 15, my brother, a university student, brought a C++ book home one time,” Patryk recalls. “I looked up to him to the point of wanting to be like him, so I started to read the book. I wrote a script that calculated the areas and volumes of simple figures and shapes. I felt so proud of it, and yet I didn’t continue learning to program for many years.”
Patryk volunteered to write a computer program for one of his engineering classes. A manufacturer of metal parts wanted a C++ program that would help them calculate their products’ susceptibility to brittle fracture. They had been using Excel for this and felt it was time to invest in a better tool. Out of the two candidates for completing this task, Patryk was the one who got the job. Using his engineering knowledge and previous experience with programming, he wrote a tool that wasn’t top notch software, but it worked.
“I think I used all the bad programming practices I could” Patryk says. “The program had massive view controllers, only a few classes (some of them up to 4000 lines of code), hardcoded values, a fixed UI, repetitions, and singletons just about everywhere. I didn’t even know that running tests was something programmers should do, I had no knowledge about memory management or basic programming patterns and principles (like DRY). And yet, I created working software. I got so attached to the project that I even wrote a Master’s thesis on brittle fracture. I got top grades.”
After all, software projects aren’t just about code. You also need to be able to communicate with clients in a clear and effective way, to understand business needs, and to know when a shortcut will benefit the client without harming the code too much.
iOS Software Architect
Putting in the hours – learning how to code
The dissatisfaction with the construction industry pushed Patryk to look for other opportunities. He started learning German, hoping to travel to the neighbouring country and look for better employment opportunities there. Dedicated to this cause, Patryk would spend about 6 hours each day on studying. And then his girlfriend (who later became his wife) convinced him to try something else: programming.
“She offered to help me, as she worked in the industry and was in fact involved in an iOS project as a part-time job while still at university,” Patryk recalls. “She had good arguments, too. The money in IT isn’t bad, and there are many job offers. So I made the switch from German to Objective-C.”
It wasn’t easy to learn a complex and almost entirely new set of skills. Patryk spent many hours learning and exercising. His girlfriend was there to help, and she made understanding concepts such as polymorphism or object-oriented programming much easier. Patryk also got an internship at a local company building games using the Corona SDK engine. For a month, he learned LUA and created simple mobile games.
Though that company did not offer him long-term employment, Patryk didn’t lose his drive to learn. “I believe in putting in the effort,” he says. “You have to be stubborn about your goals, and keep going in spite of failures, which are sure to occur. Back then, I couldn’t easily learn from online tutorials, because I didn’t understand English well enough, and there weren’t any useful materials in Polish. I ended up using Google Translate and watching each video several times until I could make myself understand.”
Patryk returned to focusing on iOS and got his first paid job in the industry. He worked at that company full-time for two years, learning all the while – though sadly not from more experienced colleagues. There weren’t any. The company was new and Patryk was their only iOS developer. This was a huge obstacle, with no one to learn from, no mentor, no peer reviews. His girlfriend convinced him that it was a good time to learn some foundations and go to university again to study computer science. So he did. Luckily, the company he worked with helped him finance his education. He also worked on improving his English on his own.
Getting the computer science degree took two years, and in that time, Patryk started working at Netguru.
Working at Netguru – the how and why
About seven years ago, a recruitment expert called Patryk’s girlfriend. Since she wasn’t interested in changing jobs, she recommended Patryk, who was happy to give it a try. As luck would have it, his first recruitment call happened while he was on the bus, providing an extra challenge. Patryk didn’t let that stop him. He joined Netguru’s recently created iOS department soon after.
“I soon found out that the iOS team was actually tiny,” Patryk recalls. “After a while, with only three of us to choose from, I became the team leader. Which was objectively a positive change – bias or no bias – as the previous team leader was a backend RoR developer.” Patryk held that responsibility for almost two years. His focus shifted to taking care of the team, empowering their growth, and giving them a voice in the large (and growing!) Netguru community. As a small team, they sorely needed it.
“Because so much of my time was dedicated to helping team members, I didn’t have enough time left for being a senior developer and improving my own skills. The team started using Swift, which wasn’t as familiar to me as it was to some of my colleagues. This was the trigger that led to me resigning from the position of team leader and focusing on the technical aspects of my work.”
This was the right approach for Patryk. After resigning from the position of team leader, he became a Tech Lead. He has enough time to learn and improve as well as to help others now. As a mentor, Patryk is very exacting, perhaps even harsh. “It might be because of my history of learning so much entirely on my own,” he says. “I want the people I mentor to have much more guidance. To know exactly what they do right or wrong, what they can improve. So maybe I’m strict, but it’s for my team members’ sake.” Patryk is also involved in improving and automating Netguru’s internal processes, helping the whole company grow.
Being a Senior Developer at Netguru
Patryk prefers to work mostly remotely from home. “The office environment reduces my effectiveness by about 30-50%,” he says. “I end up getting involved in conversations rather than programming. But it’s important to note that remote work isn’t for everyone. For those who want to try, I recommend creating a separate, distraction-free workspace. My workspace includes only my Mac, a comfortable chair, and an external display.”
Patryk starts work at 9 or 10 am, and finishes up by 8pm. During the day, he takes breaks for walking his dog, cooking, and other activities. Being a night owl, he’s fine with going to bed late, so the schedule works for him.
These days, his main challenge is to take care of complex projects which require guidance not only from the technical aspect, but especially from an organisational point of view. “The developers I lead often have fantastic tech skills. Sometimes even better than mine” Patryk says. “However, having the development team requires me to focus on a goal we want to achieve within the current phase, so the developers don’t have to. It’s important to gather requirements, identify obstacles, talk to the client about potential difficulties and be sure we exceed his expectations.”.
Patryk enjoys the variety his work brings into his life. As a software architect, he faces problems that are both unique and unconventional – problems he can’t tackle simply by visiting StackOverflow. He also enjoys the responsibility of making decisions that affect his whole team. “Holding such responsibility requires a lot of knowledge, or a lot of time spent on research,” he says. “It’s a fantastic motivator for personal growth.”
Becoming a Senior Dev – the challenges and learning from your mistakes
Patryk’s road to success wasn’t exactly straightforward. He had to learn a lot in a short amount of time, and without any guidance. His first major lesson was to learn to love code reviews and accept the “your code is not you” rule. Taking harsh feedback is difficult, especially for someone who worked alone for a long time. “It was easy to start thinking that people’s opinions about my code translated into their opinions about me,” Patryk recalls.
Some projects pushed his skills to their boundaries. One such challenge was creating a separate React Native module for a big legacy solution. The module required native parts and it was, in Patryk’s own words, “a dependency and architecture hell”. It took him over two weeks and many dead ends to create a tailored automated solution for that unusual integration.
Becoming a team leader was a challenge in itself. It gave Patryk the opportunity to develop his soft skills, to learn new techniques and methodologies. “After all, software projects aren’t just about code,” he says. “You also need to be able to communicate with clients in a clear and effective way, to understand business needs, and to know when a shortcut will benefit the client without harming the code too much. I’ve learned to swallow my programmer’s pride and support my clients’ businesses, instead of blindly following best practices.”
Failing is also an intrinsic part of learning. Patryk remembers many missteps and mistakes in his career. “We’ve built apps based on a cool idea, then ended up never doing anything with them. Sometimes this was because we hadn’t researched our target audience’s needs ahead of time. We’ve also created processes that were too difficult to maintain, and we had to drop them. I led a few internal initiatives that crashed and burned.”
“Another scenario we’ve been through is the too-low estimation. We thought the project would be easy, and that turned out not to be the case. Then we had to explain to the client why everything was taking so long.” Patryk took an important lesson from that experience: it’s better to overestimate the costs and time needed for a project, then surprise the client with a better outcome than they expected, rather than disappoint them.
Recruiting new team members – experience over knowledge
Patryk’s road to becoming a successful software developer was unconventional and full of false starts. At times, he worried that he wouldn’t be as good at his job as someone who spent more time studying computer science. Over the years, he observed an almost opposite trend. “The people who start work at Netguru directly after finishing their degree do have a lot of knowledge - certainly more than I do, in some respects. But they have little ability to write good code and deliver high quality products.”
“Theoretical knowledge simply isn’t enough. It’s important, but has to go hand-in-hand with practical experience. You can’t avoid the hours upon hours of trying things, failing, and trying again. And you need to understand clients’ needs. Even the most beautifully written MVP will be a failure if it isn’t delivered early enough, and the competition beats the client to the punch. Learning how to create the most value at any given time comes with experience.”
Netguru from the perspective of a Senior Developer – the perks and the work in progress
For a senior at Netguru, it’s crucial to show initiative if one wants to climb higher. There are internal recruitment processes and career paths, but at that level, something more than just doing one’s job well is required. “You can look for internal projects or processes to improve,” says Patryk. “But you have to take ownership and responsibility for it. If you do that, there is plenty of room for growth. Be visible, be active, be involved. Make yourself the go-to person for a certain area of your work.”
Patryk’s other rules for growing as a Senior Developer include:
- being professional no matter what you’re working on,
- never leaving people without an answer,
- remembering that no one can know everything there is to know about a subject.
“People know this and will be absolutely okay with you telling them that you don’t know something, but you’ll find out and get back to them,” he says. “As long as you take the responsibility for finding and providing the answer, you’ll be seen as an expert.”
There are two development paths for senior developers at Netguru – Engineering Lead for those who want to focus on their managerial skills and Software Architect for those interested in deepening their technical skills. If you don’t think either is right for you, don’t worry – it’s possible to create your own dream job here. You just have to work hard and do it yourself, instead of waiting for a promotion. This doesn’t mean the company isn’t willing to help. To the contrary. “We’re looking for ways to make our Senior Devs more active,” says Patryk. “We want them to achieve great things with us.”
Some processes at Netguru do need improvement. “We acknowledge and address this as we can,” Patryk says. “For example, we’re working on better filtering for internal projects, to avoid building apps we won’t be able to use. Recently, another Software Architect improved a setup project process. Previously it took at least a day to set up everything. Now, this time has been shortened by half by leveraging some XcodeGen and script usage. However, there is still room for improvement because some things still need to be done manually. This situation shows that we learn day by day in projects and if a solution works on a small scale, then we usually try to use it company-wide to improve the work of others.”
How to become a successful Software Developer, even when you didn’t mean to
Patryk’s story, while a little convoluted, is certainly inspiring. It shows that it’s perfectly possible to make a big career shift without much preparation, and end up doing something you’ll love.
If your current job isn’t what you thought it would be, don’t be afraid of searching for your true passion. Patryk took advantage of every opportunity presented to him and worked hard – this is what got him to where he is today.
And if you think a job at Netguru could be the perfect next step for your career, talk to us. Our doors are always open for those who want to bring positive change, both to their own lives and to the lives of others. Check our career page to learn more.