November 2024 Edition

10 advices to become a better software engineer, Free AI tools, Pomodoro

Welcome to the Kacper Does Software Newsletter!

I hope you had an excellent November. I wanted to prepare a wide range of topics so that you can find something for yourself.

What you can find in this post 👇

Table of Contents

10 Things That Good Programmers Do

I gathered 10 simple, useful programming habits. If you follow them, they can make a huge difference in your programming experience.

These 10 things aren’t about flashy tricks or advanced algorithms, but practical ways of thinking and working that anyone can adopt.

Good Software Engineers

1. Take their time to do a Code Review

Let’s start with the fact that you should do code reviews in your team.

Code review is a beneficial practice in software development teams. It improves code quality, and readability and is educational for both the author and the reviewer of the code.

Just scrolling through the code and commenting with the famous “LGTM” is not a good code review.

Take time to do it.

If you do not feel like doing the code review, then leave it for the next day.

2. Know that Clean Code saves time

Clean code is saving you time, not wasting it!

I don’t get why people say clean code only slows down development. If you work in a team it will be a necessity.

And if you don’t, in a week you will forget what you were writing and you will have to understand it again — that’s where the clean code matters.

We write code for other programmers, not the computer (and we can treat ourselves from the future as another programmer 😉)

3. Focus on concepts, not programming languages

A programming language is a system of notation for writing computer programs.

That’s the definition from Wikipedia.

I have seen so many people battle what programming language is better. Programming languages have completely different mechanisms and syntax, but in the end, it is just a programming language.

Learn concepts and the notation (programming language) can be changed every time.

4. Are active, because they know the body affects the brain

Studies show that physical exercise can affect a range of brain and cognitive functions.

You can read more about it here:

We need to refresh our brains occasionally; physical exercises are perfect for that.

5. Are not afraid to ask for help

Don’t get me wrong. We shouldn’t ask for help every time, because we are lazy.

We should not be afraid to ask for help when we get stuck with some problem — no matter what is your position level.

It will save time for the task you are doing and both people can learn something from that.

I am not saying we need to try every new library that comes up. I think it is really noticeable when something becomes the leading framework/library in a specific area.

6. Learn new things constantly

Technology moves so fast.

And we always need to catch up. It is important to not stay behind.

I am not saying we need to try every new library that comes up. I think it is really noticeable when something becomes the leading framework/library in a specific area.

7. Are passionate about what they do

If you are already here then you are probably passionate about software development. Still, you can be working in the area, that you don’t like.

If you like game development, don’t get stuck in web development.

You will do things better if you are fully passionate about it.

8. Have specialization

It is better to be an expert in one area, than to be average in everything

Don’t try to master every programming language and framework out there, because it is not possible.

Choose your niche and try to master only that niche. This way you will be specialized in one language or framework.

9. Leverage constructive critics

Constructive criticism is a valuable feedback that you should learn from.

There’s a thin line between hate and criticism, but if the negative feedback is constructive and it is about your work (not you), then most likely it is a criticism.

You shouldn’t be offended. You should analyze it and learn from it so as not to repeat that mistake ever again.

10. Follow my blog 😉

Yeah, I know.

That’s a cheeky advertisement of my blog, but I deliver content that helps you become a better software engineer.

You can find there content I don’t include in the monthly posts. I would love to see You there

Free AI Tools For Software Engineers

As a software engineer, you’re no stranger to problem-solving. From debugging tricky code to optimizing performance, there’s always a new challenge.

But what if there were tools to make some of these tasks a little easier?

I want to introduce free AI-powered tools that can help with everyday software engineering tasks.

Gemini with Project IDX

Project IDX is a web browser IDE made by Google. I reviewed it and wrote the whole article about it if you want to know the details:

But I want to focus on the fact that it is free and has awesome integration with Gemini.

When we enter the Gemini from the button at the bottom, we can enable auto suggestions as we type and our codebase indexing.

This way Gemini is aware of our code and can give us better answers. We can ask directly about classes or methods in our code.

I enjoyed the integration with Gemini. It has a lot of potential and it is a great alternative to GitHub Copilot or Cursor + Claude AI

GitHub Copilot (For Students)

GitHub Copilot is a code assistant I use myself. It integrates well with IntelliJ IDEA with a dedicated plugin. It includes the code assistant and chat that can be loaded with context.

Not many people know that you can get it for free if you have a university email. It comes for free with the GitHub Educational Pack along with other benefits (like 200$ on Digital Cloud).

I described it in detail in the following article:

AI Chats

These are the most popular AI tools almost everyone uses nowadays — AI chats.

There is a big three in this category:

These models are trained on huge amounts of data to find patterns and connections. We need to be aware of that because these chats don’t know the latest news as they were trained on data some time ago.

All of these are free with the possibility of paying to use better models. Some of them offer a few prompts with better models, so it is good to switch them if you run out of prompts on paid models.

Perplexity

When you take a first look at perplexity it looks like a chat similar to Chat GPT etc., but it is completely different. Let me explain how it works.

  1. Understanding Your Question:

  2. Searching the Internet

  3. Summarizing Information

  4. Citing Sources

It is a great tool if you want to find information about something that came up lately or you can just use it as a more intelligent search engine.

Warp Terminal

Warp is a terminal with an awesome design that uses AI to make your terminal easier.

Instead of checking the command online or in another AI tool, you can type what you want to achieve in natural language.

Let’s say you forgot how to check the disk usage on your computer:

I love the idea and have been using the free version for some time. It allows you to make up to 100 AI prompts per month.

You don’t have to remember all the terminal stuff, the terminal can do that for you.

Summary

We shouldn’t be scared of AI, we should treat it as leverage and learn how to use these tools. I hope I made that a little easier for You listing the most useful tools for software engineers in my opinion.

Pomodoro Technique

If you can’t focus while learning or doing something important you might be interested in using the Pomodoro Technique. It helps me to achieve great focus when I learn and I want to share it with You.

The Pomodoro Technique involves breaking work into focused 25-minute intervals (called "pomodoros"), followed by short breaks. Here's how it works traditionally:

  1. Choose a task

  2. Work for 25 minutes without interruption

  3. Take a 5-minute break

  4. After 4 pomodoros, take a longer 15-30 minute break

It is proven by science that it works - a 2014 study published in Computers & Education found that students using time-management techniques like Pomodoro showed improved learning performance and decreased cognitive load

You don’t have to be strictly attached to the time intervals, you can adjust them for your needs 😉

To implement it I use the “Forest” app on my iPhone. It prevents me from using the phone. The digital timer would be also a great option.

Thanks for reading!

I hope you enjoyed this month’s Kacper Does Software newsletter edition. I would love to hear back from You. Feel free to respond to this email, share your thoughts and suggest what you would want me to cover in the next edition.

Connect with me!

See you on other platforms 😉

x / Twitter

LinkedIn

Medium

Instagram

Have a wonderful day ☀️