The North Sprint Review with Kacper F.

David Maric
North Code
Published in
8 min readDec 1, 2020

In this North Sprint Review, we’ll talk about underwater drones, beautiful code, the doer mindset, and a different flavor of a day-to-day routine with one of our members — Kacper F.

David: Could you introduce yourself? What’s your background? What do you do?

Kacper: Hi! I’m Kacper, and I’m a backend software developer as part of Telepat North. For the past 9 years, I’ve been enjoying my adventure as a programmer, enhancing my coding skills pretty much every day. I believe I have quite a broad range of interests, having a little bit of knowledge in mathematics, algorithms, robotics, cybersecurity, and other topics — thanks to the opportunities offered by the Polish high school I graduated from, and the university I’m currently studying at. In my spare time, I enjoy playing video games and classical guitar, as well as pursuing all activities related to further expanding my academic knowledge, for example by building an underwater, remotely operated vehicle for the international MATE competition.

David: When did you get interested in computers and programming?

Kacper: It started simple, with a passion for video games. When I was in middle school, I decided I wanted to try creating some myself, and I enrolled in a Java programming course at a local university. It got me hooked, and since then I always intended to be a programmer, but, as it later turned out, not necessarily in the games industry. I much prefer playing rather than creating them! If I were to follow a different path in life, I would probably end up as a veterinarian. I love animals and it’s one of my life goals to help save them. This is why I became a vegetarian — at least for starters.

Aye Aye, Captain!

David: Can you tell us more about your underwater vehicle?

Kacper: Sure! The ROV (Remotely Operated Vehicle) is created by the Engineering Projects Society, Newcastle University. Its purpose is to complete a collection of tasks specified by the MATE ROV competition, and every year these include image recognition, mechanical gripper action, and autonomous control.

The vehicle consists of 3 layers — low-level controllers to interact with hardware devices, a middle-level to prepare the data for networking outside of the vehicle, and a high-level control station to perform the majority of computations. Some of the more interesting challenges include controlling all 6 degrees of freedom of the vehicle or designing the glass enclosures to allow maintainability, while not allowing any water to come through (underwater pressure).

Due to the nature of the tasks, the software must have a high level of parallelism. In particular, we have a central data management system with multiple components running in separate threads or processes. This design becomes especially useful for tasks such as autonomous driving — frames from multiple camera streams have to be passed to computer vision algorithms, which then derive control commands and pass them using networking interface to the vehicle. All this while displaying the information in a nice format, in a graphical user interface. This would be a nightmare without concurrency!

As for my role, this is my 4th year being the lead developer, or, as we call it, System’s Captain. My tasks include management of other software engineers in the society, coordination with the other, interdisciplinary teams, and design of the system architecture. I am also responsible for the implementation of a few trickier components as well as overall improvements of existing solutions.

So far this is one of the coolest things I’ve ever done, and I couldn’t be more grateful for the opportunities the project offered!

David: Can you describe beautiful code?

Kacper: I think a well-written application should be readable and understandable. To do that, it could follow some pre-defined standards and include a reasonable amount of documentation, but there is no explicit moment of when does it start being good enough. Furthermore, I think the idea of “less is more” would play quite nicely in terms of clean code, as simpler solutions often prove to be better. I believe “beautiful” could be associated with “practical” in terms of programming.

A different type of routine.

David: Do you have a routine? What does your day-to-day work look like, and what motivates you to do it each day? What are your favorite tools for working remotely?

Kacper: I don’t have a routine, I follow a much more relaxed and flexible pattern. If I feel like writing code, I will just sit down and write code. When I’m getting tired, I will stop, play some classical music for 30 minutes, and get back to it.
Sometimes I would skip an entire day of work to do something vastly different, to reset my mind by focusing on non-relevant topics. I think this approach is very healthy and allows me to avoid burn-out since I never repeat the same pattern in a day — it’s always a little bit different, a little bit more exciting. As for the tools, I don’t have a particular preference, but I quite like GitHub integration in general. I enjoy the idea of having everything in one place, and currently, it contains version control, Kanban-based planning, CI/CD systems, and other stuff, which is great to reduce the amount of programs/accounts I would otherwise have to keep track of.

David: What do you consider the most difficult part of programming?

Kacper: Starting! It’s so hard to plan everything in your head (or on paper), attempt to come up with the list of issues that may arise, and simply start coding. Once the first few lines are written, or maybe the structure is created, it always goes much more smoothly.

David: What sort of processes do you go through when you design or develop software? Do you think there’s a right way to write code?

Kacper: There are a few tricks I like to start with, before deep-diving into the
implementation details. First of all, it’s important to understand the goal of the software and the associated flow. You can’t really code unless you know what you are trying to achieve. Another aspect I really enjoy going through is designing the project’s structure. It always forces me to anticipate how things will look like in the future, and whether the proposed layout is a good solution — even if the entire structure will be scrapped at some point in the development process. Finally, I try to let other software do some of the work for me. Linters, IDE-s, code snippets — all those exist to help, so using them makes the most sense. To summarise, while it’s important to keep in mind that everyone will write their code differently, I do think that having a clear understanding of the project and logically analysing it will help greatly.

David: Any tools or languages that you like to use or are excited about?

Kacper: I love JetBrains, I try to use their editors for every single language — and that’s about it for the tools. Regarding the languages, I’m quite excited to see the increasing usage of Rust. I think its model for memory management is superb, and I really wish there were more projects in it.

David: What’s your overall favorite programming language? How do you see the future of that language?

Kacper: I tend to use Python for most things, it’s just fast to write code in it. In
addition, it has a lot of exciting, open-source tools, and, if needed, I can always optimise things further thanks to the language being based on C. It will probably stay on its current popularity level for a few more years. Other than that, I’m fairly excited about Rust (see above). I’m hoping it will soon take over at least in terms of performance-related tasks.

David: How do you go about learning new programming languages?

Kacper: Learn by examples — code snippets, existing open-source tools, and quick start guides are great! Combining these with documentation and Stack Overflow generally allows me to “learn” a language in a day or two. Of course, by no means I would be a master of it, but I could definitely write some relatively simple code. It naturally follows that it’s much harder to learn about newly emerged languages, due to the lack of examples and tools written in them.

David: What type of project do you enjoy working on the most?

Kacper: I love projects with complex mathematics. Unfortunately, I don’t understand most of the calculations and ideas involved, but I am working hard to get better at it. For me, any software following the basic pattern of a website with a database is simply boring. I much prefer seeing things like computer vision algorithms utilised in a reinforcement learning based robot to perform a high-risk assessment of an industrial workspace. It just sounds cooler, doesn’t it?

“Stop thinking and just do things.”

David: What’s the best advice you’ve received about being a developer? What advice do you have for people who want to pursue a career in programming?

Kacper: I was once told to stop thinking and just do things. So I did, and I’m doing relatively well by now. Whenever I’m considering starting something or learning about something, I usually just do it and see how it goes. If it’s not for me, I stop. This way I have managed to understand how computer games are created, or how cybersecurity applications work — but I am not intending to pursue these paths any further — I learned they aren’t for me by practice. Therefore, to start coding, I think the best advice is to just… start coding. Find a simple goal and do everything you can to achieve it. Maybe write a simple calendar application, or write a reminder tool for your kids to make sure they study long enough, instead of watching YouTube all day. It doesn’t have to be extremely complicated, but you have to just do it. There is no other way to learn programming.

If you enjoyed this article, press the “Follow” button below to get more content that will help you become a better technology professional.

Join the accelerator club for outstanding developers.

Telepat North is a club for outstanding coders, offering members free books, courses, learning resources, swag, and remote work opportunities!

If you’re interested, you can learn more by visiting Telepat North.

You can also subscribe to our YouTube channel, and follow us on Facebook, and connect with us on LinkedIn.

--

--