Lucas Mendelowski is a software developer with vast experience. In this interview he shares how he started programming, his advice to junior programmers, what frameworks and languages have caught his attention and how his experience living aborad working as a software developer impacted his career.
How did you become a developer, what’s your developer story?
I got into programming just before joining a bachelor’s degree program at a local university. Previous to that, I always thought I wouldn’t be able to grasp it because I had a short episode with PHP as a teenager, and I couldn’t wrap my head around it (as they say, once bitten, twice shy). Before starting my first semester, I spent a month learning C (as that’s what they were supposed to teach us) to catch up. This time it clicked for me, and I was hooked. During my studies, I also learned C++, and C#. I even planned to become a .NET developer but eventually, I got a PHP gig, and moved on to web development - after a few years of PHP, I got tired of reinventing the wheel and fighting with language inconsistency, and decided to switch to Ruby. I’ve been writing Ruby for almost 5 years, and it’s still my favorite language.
What excites you about software development?
Ability to produce powerful outcomes with such a simple tool as a code editor. I don’t think there is any other field that can produce such tremendous results without requiring specialized equipment.
You’ve worked with many developers throughout your career, what makes one a 10x engineer and how do you think one can become a 10x?
All good software developers I have met, had 2 things in common: they were curious and ambitious. Programming is an engineering profession that uses programming language as a tool to deliver the desired output. And like every engineering field, it requires understanding the domain before being able to run on all cylinders.
More often than not, developers work on various projects through their careers, so being curious helps with understanding the business they interact with.
We also should not forget how fast the IT industry advances every day - today’s code is legacy code tomorrow. Staying motivated to learn new things, and open-minded for innovations requires dedication. At the same time, it’s important to understand that languages and frameworks are just tools for producing the results. It’s up to the developer to filter out the noise and pick the best tool for the job.
Your blog is a great knowledge source for developers, when did you start blogging and what motivates you to do it?
I tried blogging a few times in the past but never stuck with it. I put off writing new articles because I wanted to make sure they are well-written, and describe all potential edge cases. The more I tried to improve them, the more difficult it was to finish them. Eventually, I lost motivation, and never published them.
A few years ago I learned about the TIL (today I learned) concept from the Hashrocket blog. I began publishing various tips & tricks from day-to-day work that I would normally write in my private notebook, and that’s how my current website was born. It was much easier to write these notes regularly because they were short, and straight to the point.
PS. I already caught myself a few times that I was googling for something and ended up on my blog ;).
You’re proficient in PostgreSQL, is there any resource you can recommend to web developers who want to advance in the Postgres and database world in general?
Thanks but I’m just scratching the surface there :) . PostgreSQL is a very powerful, and feature-rich SQL database that can be extended with various existing add-ons. There are plugins for spatial objects (PostGIS), time-series data (TimeScale), accessing other datastores i.e. MongoDB through Postgres API (fdw - foreign data wrappers), and more!
Unfortunately, I don’t have a single resource to recommend as most of my articles were inspired by day-to-day tasks but I heard good things about theartofpostgresql.com (I haven’t read it myself though), and I already bumped into postgresqltutorial.com website a few times while looking for various Postgres related things.
How do you keep your technical skills sharp?
Reddit (i.e. /r/ruby, /r/rails), Hacker News, and RSS reader (with website feeds I curated over the years), are my go-to sources to read about the latest discoveries. Twitter is still my favorite medium to interact with other developers - length-limited tweets produce straightforward conversations that I can follow up in my own time.
I also like to listen to programming-related podcasts, watch conference talks, and read technical books (however I have less and less time for those).
Being a developer I know that often you might get stuck when you’re coding and can’t figure the way out for hours, how do you get out of those situations, any secrets?
Never hesitate to ask your teammates for advice. Looking at the problem from a fresh perspective can bring tremendous results. The worst thing you can do is blindly overfocus on a single issue and become insusceptible to the obvious hurdles. Don’t hesitate to change the task if you don’t feel that you are making progress. Get back to the troublesome one after a few hours or even the next day.
What do you wish you had known when you began your career as a software developer?
I wish someone had told me that programming is not as difficult as most people think. It’s a matter of finding a good resource / teacher / community. People are different and prefer different ways of learning (books vs videos, tutorials vs reference books, starting with language vs starting with the framework). There is no best way that fits everyone, you need to find material that works for you, and keep practicing.
If you were limited to passing on one piece of advice to junior programmers, what would that be?
Don’t be afraid to read the source code. It might look magical at first, so I would recommend starting with small and isolated parts and then go from there - you don’t need to grasp everything at once. It’s similar to learning foreign languages - you don’t need to know every word in the article to comprehend it.
What piece of software/technology excites you the most at the moment?
I’m interested in learning one of those new, fast, and compiled languages with concurrent capabilities. At the moment Crystal is the front-runner for me as it shares a lot of similarities with Ruby, and provides enough flexibility for strictly typed language. Its compiler and standard libraries are also written in Crystal so it’s a great way to see what’s under the hood!
I’m also really impressed with the capabilities of the latest GPUs integrated into AMD processors. In the past, you needed powerful, and power-consumed graphic cards to play games at a decent frame rate. With overpriced GPUs these days, those AMD processors are godsent for casual gamers like me who just want to play a few CS matches per week :).
What about the future? Do you have your sights set on something that’s yet to be released?
On a software / technology-related topic, I’m excited about the Hanami 2 framework. I like the ideas it promotes (modular architecture, dependency injection, scalability, etc.), and I’d also love to see diversity in the web-oriented area of the Ruby land.
Apart from that, I’m looking forward to the end of the pandemic, and hope that once everyone is vaccinated, we will return to the life we had before.
To what extent are soft skills needed for a software developer?
Soft skills are important but a specific skill set might depend on the exact position you hold, and the organization you work in. Startups and smaller companies usually engage engineers at the planning phase so being able to effectively participate in the design stage is as important as the implementation itself.
At the end of the day, we are still humans who work in teams, so the ability to write good documentation, provide meaningful comments in code reviews, and be kind to each other is universal and important for every company.
You’ve lived abroad working as a developer for a multinational company, can you share how enriching that experience was for you, did it boost your career and would you recommend it?
It opened my eyes to diversity, taught me patience, and made me more comfortable with interacting with people from other countries. Initially, the language barrier was a showstopper for me (learning foreign languages was never my strong side). Living in another country allowed me to break the ice - I stopped worrying about my mistakes and started enjoying conversations with peers and colleagues. The more discussions I had, the more confident I was. Thanks to all the debates I had, I learned more about the culture, history, and roots of my interlocutor.
I highly recommend everyone to try working for an international company (with all remote offers, it’s easier than ever to find such an organization) as it is a great experience that will broaden your horizons, and expand your knowledge of the world we live in.
What do you think about the future of remote work after the pandemic is over? Will the tech industry accept the distributed way of working and what’s your experience working from home?
I think it all depends on the company, and the industry they are in. Not every activity can be performed remotely. Despite that many IT organizations that never worked remotely before, are just scratching the surface of the possibilities.
Even if a small percentage of those companies stick to the asynchronous, and remote way of working, all of us will benefit from it.
What are the first 3 words that come to your mind when you think of ‘software development’?
Coffee, headphones, and terminal haha…
You didn’t ask for a link but I will leave it here anyway as it’s semi-related 😄
In the Picks section you can share any resource that’s worth checking out. Do you have any picks for us?
One of the polish writers - Jakub Szamałek (he also was a producer of “The Wither” games), published an interesting trilogy called “Hidden Network”. It’s a crime story that touches internet privacy, artificial intelligence, cyber attacks, and online crime topics. I highly recommend it to any avid internet user to become more aware of how those big corporations process our data to deliver all these nice, and innocent tools that we use every day. You probably never thought about the consequences of possessing this data by the wrong person.
Shame, the books haven’t been yet translated to English but I will let you know when they are published so you can read it as well!
What’s your favourite developer’s joke?
Not the favourite one but that’s the only one that’s coming to my mind at the moment: A SQL query walks into a bar and sees two tables. He walks up to them and says ‘Can I join you?’