As a software engineer, it’s important to build good habits

Ask questions Research chat →

https://prplcode.hashnode.dev/5-good-habits-of-a-software-engineer?source=newsletter · scraped

career

Attachments

Scraped Content

— 911 words · 2026-02-14 17:37:53 UTC ·

Excerpt

![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/8f9e16e0-4ab9-4c86-af6e-44b0c8cc9feb/image?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB46633GLGWX3%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T173753Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIFDUa4g4%2B69iLf%2FxizbGRNJXSNmhEUP7dUgeFPeN0El2AiAZApFjqiqHmJszUw2HU9M20b9Mb3IbJaewDSUGDPiEoyr%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMFqFGpY%2BeGPdQWNqyKtwDawIFSuch652fKV5ak7Nl%2FyX8RUh81KqDXqYj5u7gMmUF8v42AD1NNRtAtY9nmVHSjRLKN1%2BJDKJg4IvUPwEZmJtUSJ5XTKIgNAdFJJ8mc67e4IxmRfaZRa6xFDKdI1mo%2FJKZDtgiSIsYQBAEE9Mf15AhTmX5PThJRhsZW93dUas0dBBetUYsaeOaq%2Bk7SkqYLGX0ViBAvMFvLCM2qrHEiU27d1XF51%2Fyic9FrWzYBPBQ7CLEVs%2FR8tsNi4TpvwAKgF%2FxZixtdJ1NcrMTvBNVHYBjoZwduzllOIScJSDYokDhdV9xPYUcTW8uVSaQfGlcMhbZk4iM3sZ9AOA0tj1DBu2s8xK6Rs0fme7AF8ZEOXWwB%2FUG7PO7prBp9TCXZk7ke4z5%2ByOjqFAOjdvv04dMVa%2FV0iXWlzowbwRAYKKA%2FvJDAFwE8
![](https://prod-files-secure.s3.us-west-2.amazonaws.com/871f1661-80b8-4d0c-ac3b-2adfc6ff4c66/8f9e16e0-4ab9-4c86-af6e-44b0c8cc9feb/image?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAZI2LB46633GLGWX3%2F20260214%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20260214T173753Z&X-Amz-Expires=3600&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEEEaCXVzLXdlc3QtMiJGMEQCIFDUa4g4%2B69iLf%2FxizbGRNJXSNmhEUP7dUgeFPeN0El2AiAZApFjqiqHmJszUw2HU9M20b9Mb3IbJaewDSUGDPiEoyr%2FAwgKEAAaDDYzNzQyMzE4MzgwNSIMFqFGpY%2BeGPdQWNqyKtwDawIFSuch652fKV5ak7Nl%2FyX8RUh81KqDXqYj5u7gMmUF8v42AD1NNRtAtY9nmVHSjRLKN1%2BJDKJg4IvUPwEZmJtUSJ5XTKIgNAdFJJ8mc67e4IxmRfaZRa6xFDKdI1mo%2FJKZDtgiSIsYQBAEE9Mf15AhTmX5PThJRhsZW93dUas0dBBetUYsaeOaq%2Bk7SkqYLGX0ViBAvMFvLCM2qrHEiU27d1XF51%2Fyic9FrWzYBPBQ7CLEVs%2FR8tsNi4TpvwAKgF%2FxZixtdJ1NcrMTvBNVHYBjoZwduzllOIScJSDYokDhdV9xPYUcTW8uVSaQfGlcMhbZk4iM3sZ9AOA0tj1DBu2s8xK6Rs0fme7AF8ZEOXWwB%2FUG7PO7prBp9TCXZk7ke4z5%2ByOjqFAOjdvv04dMVa%2FV0iXWlzowbwRAYKKA%2FvJDAFwE846zvasGT7LcI%2FZhsF4Gy%2BJ4m%2FtvZTwfzXZ3EIUNlRgy6KYiQErVz4rpKTE4AUNfXjvJ1QJwaxUS7v%2Fc3Hy1mv1ULO8CJW%2FldOIETDb06mPbGtHWDmOxTWiX4cRpR1dCDBJCjt2MxbeEhojVrEbtQHwdTYiV87Xgkq6cDSdd%2B8nglpOghjIwksOPGTX62rpN1kmpPz4jJCww8dHCzAY6pgE1SHz5pUb0OE11rjkBco4OjbLVxpCG6U2nHJXnP1vCCKVdVbRiYSObH%2Br0DTeXS7cZykcC%2Bqnn2lrjWlSqhiWP%2FZQUgWuamRWWLeJ0HHf4wxgQA7xiLWh4Va5lNp59%2FPEha%2Bi%2Fi6jFaDedQmzKC14R8J8lRefB4I9msMzoAq%2Fxn1kZu6VjrdeBi%2F3NnJhVPwyuH1hiOpY3RGK%2BI5PbVBhpyDF60w6J&X-Amz-Signature=f0fe6e472d4e95a2ae02c4fd8ef6257f4fbbe957a485fb867913a47230696f68&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) ## As a software engineer, it’s important to build good habits As a software engineer or developer, especially if you are at the beginning of your career, it’s important to build good habits. Good habits speed you and your team up and help you write maintainable code. ## Know Your Tools At first thought, this might seem obvious. “Duh, obviously I know how to write code in my editor and use grep in my shell”. My point goes beyond this. What I mean is that you should really know (master) your tools to the point where you are utilizing features that speed you up. Let’s look at an example! My favorite IDEAs come from JetBrains. They create IntelliJ, PyCharm, WebStorm, and more. These IDEAs have (pretty much) the same features and key bindings. Over the years I’ve dedicated time to learning the most useful shortcuts and this makes refactoring really quick. Rename a class? One shortcut. Extract code to a method? One shortcut. Run test in debug mode. One shortcut. This is a simple example but I think you get my point. I often see engineers, from associate and senior level, using their mouse to click buttons in the UI or copy-paste when renaming a variable. Don’t treat your IDEA as a simple text editor; use it as the powerful tool it is! Not only will you save time but you will also feel awesome ⭐️ ## Don’t Strive For Perfection At the beginning of my career, I wanted all the code in my team’s system to be perfect. I’d spend hours refactoring CSS classes, thinking about variable names, and creating nice abstractions. Then one day, it was decided the system was gonna be superseded by another system from a different team 😮 All my perfect code just became useless. Since then I’ve come to understand the value of shipping code that’s maintainable but not perfect. You might even ship code that’s not maintainable if it provides value to the business or customer. The code you write is simply a tool to solve real-life problems and if the problem warrants it, you should be OK with shipping non-perfect code. Tech debt is not the end of the world. You get used to living in a broken world, and that’s fine because your work is not about producing perfect code but to provide value to the business or customer you are working for. ## Understand What You Are Building Too many times I’ve seen experienced engineers I work with jump on a task with the goal of finishing it as quick as possible. This is a bad habit. On the other hand, for engineers at the beginning of their career, this might be exactly what they need — they need to write code, feel productive, and most importantly learn. Experienced engineers though should always understand what the task they want to do achieves, both the value it provides as well as how it fits in with the bigger picture. This is how you learn about the domain to eventually become a domain expert that will greatly help you in progressing in your career. ## Abstract, But Not Too Early Abstractions are great. Everyone loves a good abstraction! But choosing a good abstraction is difficult. Far too many times I’ve seen fellow engineers make abstractions during the design stage, and this is not a good idea. Abstractions hide complexity and we have different tools to hide them. In code, we have methods, functions, abstract classes, interfaces etc. Now, why should you not abstract too early? Consider this: you’re tasked with building a website with a specific design. A menu at the top of the page, for example. “Aha!” you say, “Let me save myself and my colleagues time by creating an TopMenuWebsite component we can re-use for the next website”. The next week the business or client tells you they want the menu on the right instead of at the top. “Oh shoot, I just spent so much time building the TopMenuWebsite component but now it’s worthless”. Yes, this is a simple example, but you get the point. A good rule of thumb is: don’t abstract until you have three examples. This will give you a good understanding of what parts can be abstracted and which parts can not. ## Don’t Over-Engineer I’m an engineer — I’ve spent years in school learning about compilers, math, and low-level languages. That means I must create complex software, right? No! Ever heard of the KISS principle? The KISS principle states that most systems work best if they are kept simple rather than made complicated; therefore, simplicity should be a key goal in design, and unnecessary complexity should be avoided. en.wikipedia.org/wiki/KISS_principle Many times I’ve encountered codebases where the engineers were trying to achieve greatness solving trivial problems. Or taking on too many problems for a single system. This is a classic trap that we all fall into sometimes. ## Conclusion These are my five favorite habits of an engineer that’s in the start / mid of their career or just someone who needs a reminder. Building good habits takes time and you learn by making mistakes, so if you ever did any of these don’t feel bad. I’ve done them all countless times but I always try to learn something from them. Follow me on Twitter @prplcode ### Did you find this article valuable? Support Simon Egersand 🎈 by becoming a sponsor. Any amount is appreciated!

Visibility

Visible to everyone

Reading Status

Related Bookmarks

My Note


Saved!

Annotations

Export as Markdown
+ Annotate selection

Add Annotation