We all strive to be the best version of ourselves. There are some habits that will make us excel in whatever career we are in right now. It took me a while before I start developing these habits that made me a better Software Developer.
The beginning of a software development career is usually about getting to a basic level of competence. It usually goes something like this. First, learn a chosen language with all its peculiarities. Then proceed with learning the whole ecosystem around the language, popular libraries, frameworks, build systems, conventions, best practices.
I’ve learned a lot about how to avoid some of the most common mistakes developers make, and I wanted to some of these tips with you today :
Constantly Solving Problems
Software development is 100% about solving problems. Like cutting wood is an essential skill for carpentry, so as the problem-solving is an essential skill for software development. All software is designed to solve user problems and within that general solution is a wide array of smaller problems that make it up. When I start solving problems daily, the easier problems I encounter on a day-to-day basis seem to get a lot easier. This has, in turn, helped me hone my own software development skills.
Writing good code
Writing good code is more Art than Science and also an important differentiating factor between an average developer vs. a good developer. Since many training courses have only taught me programming languages but not the art of coding, it still remains one of the self-learned skills which I acquired in the job.
One of the key things that I learned is that software development is all about describing the metaphysical. Every time while I am writing code, I am focusing on naming things, as most of the understanding about that code is gained from the names of things in it.
It is hard to know if the code is correct or efficient by looking at it, but if someone reads it and can understand it, they can assume that I know what I am doing.
Clean code is one of the best books for java developers. This book has helped me write better code. This book incorporates code smell, function and data structure, object-oriented design principles, design patterns.
Always Writing Tests
Another thing I’m practicing in my job as a Software Developer is to always write tests. Test-Driven Development (TDD) in my personal opinion is a very important discipline to implement when writing your Unit Tests.
The idea behind this approach is to let the test drive the design of your functions and predict its output before you even write implementations for it. At first, this has sounded confusing and not making any sense to me. But when I start practicing it, I realized its uses and its benefits that outweigh the cons of using this approach. Good tests let us know as soon as we’ve broken something in our code. Tests have given me the confidence to make the changes and improvements that the codebase needs.
Modeling Problems by Architecting Solutions
Furthermore, I started the practice of planning my code away from the computer. This always helps me build a clear mental model before I start. This gives a mental image of the problem distilled in graphical form to provide a good overview of what I am trying to code up.
Once that is done, I can usually make a big list of things to do and implement each item on the list straight in code.
Documenting what I learned through blogging
As I understand it, writing blogs for the things you have just realized in programming will in fact make you a better one. Especially when you write it down and share it with developers around the world.
This also helps in building great writing and communication skills which directly translates to programming capability.
Another benefit of writing blogs is that it increases the retention of that information into your brain. So based on that information, I’m using a blog writing as an outlet to better retain and process that information better, ready to be seen by the techies around the world.
You might have noticed that good software engineers write blogs. This is what they’re probably aiming for aside from showcasing their skills and marketing themselves as a personal brand.
Reading technical content
Reading allows you to learn new information you can relate or connect with your current skills and solve problems more efficiently than anyone who is not reading at all.
I also started with the habit of reading the source code of the famous open-source software. It might be tempting to look for main() and start from there, but you’re likely to spend a lot of time just reading set-up code and command-line parsing. I prefer to scan the filenames to look for some activity that interests me and then dig into those files. It’s not crucial to understand the whole project or the ins and outs of the entire design, you’ll wear yourself out doing this. Read the code. Look at the comments, see what the authors are doing, and how they went about it
It made me a better thinker and a better Software Engineer as a whole.
Praise is fantastic, and it’s something that we seek out to fuel us and keep us going. While praise is important, constructive criticism is also essential to help you improve as a developer. Constructive criticism has helped me identify those areas where I can improve my approach and code. One thing I have realized while working with other developers who are reviewing your pull requests, you’re probably getting regular feedback on your code on a line by line basis, but may be missing feedback on your overall approach to solving problems, or other skills like how you work with others on your team. If you work on a team with a different development workflow, like pairing, you’re likely to get much more immediate feedback.
I have also learned a great deal by pairing with more experienced developers. They’re most likely faster in many senses of the word: faster at writing code, faster at solving problems, and faster at identifying the cause of bugs and errors. I can still understand the pain of controlling the keyboard while a more senior developer is sitting back and directing if you’re still working out all the shortcuts in your IDE, or how to think through problems on the fly.🌝
Software development is an enormous field, and everyone has something to teach you.
Found a great mentor
We’re building on work that started decades ago, and those that came before us even by a few years have a wealth of knowledge we can benefit from. You will always be responsible for doing the groundwork, but you should have someone who can have some objective oversight on what you’re doing and where you’re going if you want to make sure you don’t deviate from your goals.
Learning from someone who is a more experienced programmer than you is great. You’ll pick up many things by osmosis from working together with smart people. This helps in leveraging skillset. So it’s sometimes nice to have someone specific that you can seek for advice.
At Xebia, I’m lucky to be surrounded by people who care about sharing what they know and helping others to be better. I came across one such personality, Shekhar Gulati, who is imparting his knowledge and experiences to get people inch closer for a better tomorrow.
There are no secrets to becoming a better developer. It takes patience, practice, and perseverance. Stay curious, make it fun, and never be too proud to ask for help. The reward is in the journey and enjoying each stop along the way. Happy coding!