With the rise of AI-generated code, becoming a good developer is very important. In this article, I will share what I think would help achieve great coding skills improvement and better job security.
I wouldn't say that I am the best developer out there but I am recognized as a developer that gets the job done even in challenging fields such as corporate finance. I also produce a fairly clean code. In my opinion, becoming a pro developer comes from learning and being productive.
Learn by doing
This a very important mindset to start your developer career with. During education, there is always a curriculum dictating what you learn and teachers explaining things to you. Therefore, learning on your own will be, somewhat, challenging. Some of the programming topics are hard to fathom and can cause a lot of frustration. Practice will help here, as it can be better than reading a whole article. I can give the example of async methods in C#, I didn't understand this concept until I have written some code and debugged it step by step.
Junior developers are often the biggest "Tutorial" consumers, the problem is that tutorials over-simplify things. However, tutorials tend to oversimplify. While preparing for the AWS Certified Developer Associate exam, I didn't feel like labs were helpful because instructions tell me to get Full Access permissions, which is not a security best practice. But when I tried giving the necessary permissions only, it was far harder and I learned a lot just by choosing the hard way. That's why I would recommend tackling a real-world project for learning, not just what the tutorial tells you to do!
You can't learn everything at work
Developers need to get things done, no matter their level of expertise, we are paid to add new features, fix bugs, etc... And nobody cares if we learned new things along the way or not. Also, if a company does not use a specific technology or features in a programming language, developers in that company will not learn it. I worked for a company that doesn't require unit testing because they rely on a QA team and integration testing tools, I didn't learn unit testing until later, when I've done some research and discovered its benefits.
Don't shy away from tech discussions
As someone that doesn't like talking about work outside of working time, I had some humbling discussions with other developers during break time because for me, failing to explain a coding concept to a junior developer means that I don't have the necessary knowledge about the topic, and when I was a newbie, failing to understand what the veterans are talking about means more homework to do. That's the habit I encourage other developers to have.
Being able to assess your level is a key ingredient to your success as a developer. Not being able to recognize your weaknesses will slow down improvement. And relying on your employer for feedback will not always work for your good because employers will always favor what works well for their business. Here is what I do to have a better idea about my current level:
Get out of your comfort zone by tackling different projects or roles.
Interviews: Being interviewed for different developer jobs is a great way to know your worth: When I apply for a new position and get denied, I revisit the questions I failed to answer during the interview as areas of improvement.
Focus on the big picture
At the beginning of my career, I was questioning every technical decision made in the existing code, I didn't understand a lot of it. After a couple of projects later on, I started to have an idea about what goes beyond coding like backward compatibility, performance, hosting, budget, etc... considering this will help you choose the career path that suits you while following the employment market trends.
I can't stress this enough, being organized is the number 1 productivity booster, I had the chance to look into some top-tier developers' PCs during screen shares, and I was blown away! Work Files on disks, browser bookmarks and mailing inbox rules are the first areas that need to be organized well enough and by enough I mean it is easy to find what you're looking for, it's hard to misplace anything and impossible to delete the wrong resource.
Less is More
The thing that bothers me the most when working for a big company is the number of tools and apps that need to be used daily, for instance, having Microsoft Teams and Skype at the same time or using Jira and an Excel sheet to track tasks and worse having three different websites for tile tracking and absences... For me, this is a productivity killer as it contradicts "Staying organized". I do prefer minimalism and in such environments, the best thing to do is to close everything that is not necessary for the task at hand. This will help you avoid losing focus and enforce less room for error.
Find a routine
OK, this is a little bit touchy. My WFH morning routine is taking breakfast, making coffee and having a short gaming session (30 min), then working. This routine works well for me, something about having the gaming session gets things flowing through my body and helps me stop procrastinating the whole morning at least. It doesn't have to be gaming, other people may prefer going to the gym, doing yoga or meditating etc... The idea is to find an activity that helps you start your work day with an energy boost.
Finding the right tools
As a developer, having access to a PC is not an issue and for a long time, I thought I only needed my PC to organize my work and the tools I use frequently. However, being a husband and a dad, this may change and time -on-screen is not always affordable. That's why I moved to more mobile-friendly tools: I use Notion for my to-do list containing links to blog drafts, google docs and slides, and Udemy courses I need to watch. This hybrid workflow gives me easy access from mobile and PC and I can make progress on my work commutes or while keeping an eye on my daughter. It helped me a lot with my AWS certification when I was struggling to find some free time.
I am passionate about software development and always looking for ways to improve my craft. However, I think working as a developer is not the end goal for me, it's just a tool. Once in a while, I reflect on my life and answer the question: am I satisfied with what I did and how I did it? Having a great work/life balance is a key element to staying healthy physically and mentally, and always motivated.