6 tips to improve your software engineering skills

Programming is a mentally demanding field with a very high curve where many people "flunk out" before they become a successful coder. One of the main reasons is because people don't have a proper support structure and people to keep encouraging them not to give up. One of the bright sides of this is it creates a survival of the fittest environment of the people who do make it and become productive into the coding community. On the other hand it also creates a high barrier to entry and unsupportive communities for newcomers like Stack Overflow.

Whether the question is valid or not, the Stack Overflow community will make sure to decimate anyone who makes any mistake in their question.

So how can you actually improve as a software engineer? Note how the first paragraph uses the word "programmer" instead of "software engineer" and it's important to know the difference.

Software engineering tends to correlate strongly with programming and therefore follows a similar notion of the lone programmer stigma who codes in their basement all day. They are in fact very similar in many ways but as a software engineer you will be expected to attend meetings, interact with coworkers and managers, write documentation etc. This is not to say you won't do this as a programmer but anyone who writes a calculator program or script can be considered a programmer so we need to differentiate the two.

1) You have to write code

This seems fairly obvious but you do have to perform the action consistently you want to perform better at. It's also important to know that writing any code will do. You can easily fall into a loop of writing bad code under the guise of getting better when your actually limiting yourself. Contributing to open source software is one of the best ways to improve your skills because it forces you to work with other people and follow guidelines to get your commit merged. These skills will help you tremendously as you transition into the professional world.

If your not able to make open source contributions for some reason, some code is better than none. Working on personal projects is a great way to improve, but try to have a friend or someone with domain knowledge to review your code as well.

2) Write down what you learn

Starting a blog is a great way to help information stick and determining what you actually understand by sharing your knowledge with others. You more than likely will not feel comfortable writing down information to share but everyone starts somewhere. You don't even actually have to publish it online, you can let a friend read over it with their thoughts. They don't necessarily have to be technical either and this is a great way to see if there are any knowledge gaps you may have skipped in your writing.

3) Focus on solving problems

Software engineering is the art of solving problems so it's also important you exercise your problem solving skills. You'll need to master the art of google-fu first, without it you won't be in for a great ride in your career. Not all your problems will be technical so you should also focus on become a strong and effective communicator and how to work with people and lead. Not everyone wants or has what it takes to become a leader, and that's okay, you can just work on becoming a strong software engineer and programmer. You should still strive to help those around you and share what you learn with other people because someone might find your information useful.

4) Read, Read, Read

Before you can contribute information effectively to other people you need to learn the information first. Read blogs, books, and any other information you can get your hands on. Software engineering on Stack Exchange is a great resource to utilize to improve general domain knowledge. Similarly Stack Overflow is also great for technical coding knowledge and to understand why certain things are better than others. Although know that i bashed the site earlier, it is a great place to find information, but it is definitely not the most welcoming for beginners. It's best not to post questions when first starting out because more than likely some has an answer somewhere else and you just have to find it. On a side note it's also important to filter out good information from the bad. It's best to stick with information which has been upvoted or is highly regarded but that doesn't automatically make the information gospel (and vice versa) so be weary.

5)  Find a mentor

Find someone who is in a position where you want to be or has been working in the field a long time. It's important to have interaction with a real person not only to motivate you but also to help guide you in the right path based on your personal needs. Along with tip #4, even if your mentor is very respected, they're still humans and make mistakes, so don't take everything they say as gospel. Mentors can also provide their life experiences and what mistakes they made in their career to help you avoid the same ones. You might not have someone personally available to mentor you but as a swe you can check out, a peer to peer coding platform just for developers where you might find a mentor. You can also check out similar mentor sites and online platforms to find someone.

Software engineering is a very much a field of delayed gratification where you don't reap the rewards till much later. This leads me to my last tip:

6) Never Give up

This may be the most important tip of all, because without it everything else is all for naught. This also may be the greatest pro of having a mentor or someone to push you because it's very easy to throw it all away without accountability. There will be times where you feel you aren't progressing or you feel dumb and these are all reactions of a normal learning process. Someone who has the motivation to keep working towards a goal everyday will more than likely succeed especially in a field such as this where knowledge pays dividends.

Thank you for reading, if you find this information useful or interesting, sharing it or a quick look at my other posts would be much appreciated.