Programmers Day 2023, the SoftwareMill way
Today, we celebrate the brilliant minds behind the digital world!
Programmers Day is celebrated on the 256th day of the year – chosen because this is the number of distinct values that can be represented with an eight-bit byte and the highest power of two, which is less than 365. And when this number is translated to binary code? It reads 1 0000 0000. Clever!
Source: daysoftheyear.com
Programmers - you are the architects of innovation, the creators of solutions, and the masters of code. Your dedication and creativity shape our technology-driven lives. As a programmer, you're constantly weaving your way through the intricate tapestry of technology. Whether you're just starting or have years of experience, the quest for improvement is unending.
At SoftwareMill, we emphasize the continuous development of skills. Our team members write blogs, create technical newsletters: Scala Times and Data Times, organize Scalar Conference, participate in tech events, create educational video materials, and exchange knowledge during our internal tech presentations.
Last 365 days of change
A lot has happened in the last 365 days in the programming world. Besides releases of new versions of languages, probably the biggest revolution was the launch of ChatGpt on 30th November. It totally changed the way people code! AI-powered tools are revolutionizing programming by increasing efficiency, reducing errors, and expanding the capabilities of programmers.
However, it's essential to balance the use of AI with human expertise, as creativity, critical thinking, and domain knowledge continue to be indispensable in software development, which needs constant learning of new things.
What we have learned this year
Like the previous year, we gathered a fine selection of our favourite programming memes and an update on the skills some of us have worked on lately.
Bartłomiej Żyliński, Senior Scala Software Engineer
Meme source
What have you learned this year?
What a multidimensional question, so let's split the answer into two dimensions known to anyone: hard-skill and soft-skills.
From a technical perspective, I learned a lot about Java, deepening my knowledge around Java core topics like compilation, concurrency, and performance. What is more, I found some time to get familiar with JMH (Java Microbenchmark Harness) and how to write microbenchmarks.
From a soft skills perspective, I learned a thing or two about IT projects and self-managed teams. Now, I know better how to contribute more to the team and help my colleagues.
Mieszko Sabo, Software Engineer
Meme source
What have you learned this year?
I set a goal for myself this year: mastering type-level programming in TypeScript. Although I still have a long way to go, I'm quite pleased with the progress I've made so far. I've come a long way from my job interview, where I barely knew what the 'infer' keyword in TypeScript was. Now, I've written several in-depth articles on the subject, such as this one. Additionally, I've embarked on the exciting journey of developing my own step-by-step TypeScript types evaluator, which I plan to reveal soon!
The project I'm currently engaged in has been a fantastic source of new learning experiences:
- We successfully migrated a multi-project repository into a fully-fledged Nx monorepo. This endeavor has exposed us to both the advantages and challenges that come with such a transition.
- I delved into the Capacitor framework and had the opportunity to compare it directly with React Native.
- I'm in the process of learning Apollo GraphQL for an upcoming service we plan to develop using this technology.
Moreover, it's worth mentioning our internal Softwaremill learning initiatives, which have proven to be invaluable:
- We have various reading clubs, and I'm currently attending one focused on cybersecurity.
- Mock architecture interviews have been incredibly helpful in enhancing my skills.
- I've been fortunate to participate in engaging frontend talks and many other enriching activities.
Being in such an environment has made learning a lot nearly impossible to escape!
Michał Matłoka, Software Architect
Meme source
What have you learned this year?
I had the opportunity to take part in the project with team members experienced with… SQL. I saw real life usages of some of the newer PostgreSQL features like, e.g., introduced in PostgreSQL 15 MERGE
keyword. We also used Common Table Expressions (CTEs) (WITH
clause) and others.
PostgreSQL can handle more than you think. However, cloud providers may not be supporting every feature you want. Google Cloud Platform (GCP) added PostgreSQL 15 support just in May.
Robert Pudlik, Software Developer
Meme source
What have you learned this year?
I knew that microservices were not always the solution, but never in practice until then. I recently joined a project and found out first-hand that microservices are not always the solution, definitely not at the very beginning of a project where a lot of things change. Our problem was that our microservices were effectively a distributed monolith, the only advantage of which was that the repositories were smaller. Instead, we had to worry about things like availability and communication between services.
It is definitely better to start with a modular monolith with well-thought-out and separated domains. This will make it possible to break down the monolith into microservices later on and scale a specific part of the application if necessary. There is no point in blindly following a trend.
Katarzyna Kozłowska, Frontend Developer
Meme source
What have you learned this year?
This year, I’ve learned (the hard way…) that web security is not just an optional layer of protection - it’s an absolute imperative. I’ve become more curious about it. I started reading books about cybersecurity; we also discussed one of them in the SML reading book club. Since web technology is always changing, we need to keep up to ensure our applications are trustworthy and safe.
I’ve definitely become a more conscious developer this year. In the end, front-end development is about more than just aesthetics and efficiency.
Jacek Centkowski, Senior Software Engineer
Meme source
What have you learned this year?
This year, I have started learning Scala and its FP paradigm. It sounds cliché, but stepping out of my comfort zone (I used to develop in Java) was refreshing (I needed that) and very rewarding (that was a bit unexpected).
Wonder no more about leaving the old paths. Just do it!
Łukasz Lenart, Senior Software Developer
Meme source
What have you learned this year?
I had the extraordinary opportunity to work as a Technical Lead on a major project for a U.S. corporation. My role involved managing a team of talented specialists.
One of the key aspects of my role was setting priorities and determining what was most important for the project. However, instead of assigning specific tasks, I focused on creating an environment where our team members could independently decide how to achieve these goals. It required not only technical skills from them, but also responsibility and the ability to self-organize.
During the project, I had to coordinate our work with other teams working on different aspects of the Commerce area. This required effective communication and coordination to ensure the consistency and efficiency of the entire project. Resolving conflicts between teams, identifying project dependencies, and adjusting schedules were all part of my daily work.
This experience taught me not only the technical aspects of working on the platform but also team management skills and coordination between many teams. It was a unique and valuable experience that helped me develop as both a team leader and a professional.
Rafał Pytel, Senior Machine Learning Engineer
Meme source
What have you learned this year?
This year, I learned quite a lot of new things, but probably the most influential was a formalisation of MLOps (Machine Learning Operations) in my head and its importance in working with ML systems.
Before, I had heard about loose terms: experiments tracking, model deployment practices, some form of monitoring, and dataset versioning. However, after some projects and broader coverage in the media, the whole term started to have some form in my head, and now I have an in-depth understanding of how to improve or debug various components and problems of the ML pipeline.
When we have a project of Q&A system with LLM basing its knowledge on LangChain-created context, we have a lot of stages here that can go wrong. If we want to debug our system, just observing the final responses will not give you much insight (very similar to debugging in the software world). A vital part of MLOps is actually monitoring the deployed model. You need to design mechanisms to monitor various steps of the system (i.e., which documents were chosen to create the context for an answer). Only then will you know where you should primarily focus to improve the system.
Michał Stopyra, Software Developer
Meme source
What have you learned this year?
I've learned what it's like to work on a huge-scale project (based on AWS Services) whose main requirement is its high availability. Architecture leveraging multi-instance setup showed me that problems, which sound like a piece of cake at first, are not that simple if you consider such a design. This taught me to dive into the details of the problems only after I had looked at them from the bird's eye view first.
I've also seen that plenty of patterns, which can be found in different technical books, actually do apply in real-life scenarios, and this knowledge can often come in handy when making critical project-related decisions.
Marcin Baraniecki Senior Frontend Engineer
Meme source
What have you learned this year?
This year, I embarked on a side quest focused on cybersecurity. In my free time, I've been honing various skills. I listen to podcasts - David Bombal's and Network Chuck's channels on YouTube are must-watches - and I've also read a few books, with OccupyTheWeb emerging as my favorite author so far. In addition, I'm diving deep into courses offered by HackTheBox Academy. This allows me to test my newly acquired skills on HackTheBox's extensive range of machines.
My goal isn't necessarily to become a hacker but rather to pay closer attention to security, both in my career in software craftsmanship and in everyday life. I find this learning path to be not only enjoyable but also quite different from anything I've experienced before - and incredibly mature. I highly recommend it to everyone, regardless of their experience level in IT.
Krzysztof Atłasik, Senior Software Developer
Meme source
What have you learned this year?
I mostly do Scala programming for a living. This year, I decided to try something different, and I started learning Rust. It was both challenging and inspiring for a variety of reasons. Some of my skills were transferable from Scala (like using function result types to denote errors), but some concepts were completely foreign to me (like ownership and borrowing). I needed some time and practice to gain confidence while programming in Rust, but I love it so far!
What is your favourite programming meme? Share in the comments section!