Staying Sharp in Software Engineering
Tags: career, motivation
Published: 2023-01-07 21:15:24

When it comes to working, learning is often a key concern. That is especially true in software engineering, where there is always a way to do something faster, cheaper, or better, which often requires new technologies. In this field, it is also crucial to ensure high-quality code. That includes not only coding, but also dependency management, testing, code review, continuous integration and deployment, tracing, monitoring, and measuring.

Fortunately, most of those tasks can be automated, allowing developers to focus on the actual coding. However, this is just the beginning of the journey to becoming a developer.

Acquiring experience in software engineering is a long and tedious process that requires constant practice and learning. However, it is easy to get comfortable, relying on familiar ideas and solutions. After a year, you may know enough about how and where to do things, but after five years, all the projects may start to look the same. Finding new ways to challenge yourself and try new things is indispensable to avoid stagnation.

I was talking to friends at work and this topic came to life. I will share what I often do to continue learning. Please, join me on this journey.

## Online Coding Challenges

One way to keep learning is by participating in online coding challenges. These challenges can be a fun and engaging way to learn, as they often have a game-like structure with small challenges that increase in difficulty as you progress.

One benefit is that coding challenges can help you stay up-to-date with the latest technologies and programming languages. These platforms offer also challenges in different areas, such as algorithms, data structures, and design patterns.

Another benefit is that coding challenges can help you develop problem-solving and critical-thinking skills. Many challenges require you to think creatively and bring solutions to complex problems, which can be a great way to exercise your brain and improve your overall problem-solving abilities.

Coding challenges can also be a great way to build your portfolio and demonstrate your skills. Many platforms allow you to share your progress and accomplishments, and earning badges or ranking highly on leaderboards can be a great way to showcase your abilities to others.

However, this approach can be time-consuming, as it often requires a significant investment of time and effort to finish. Additionally, the competitive nature of these platforms can be stressful for some people and may not be a good fit for everyone.

## Have a coding partner

Another way to challenge yourself and learn new things is to work with a peer. Having someone alongside can help keep your motivation up and provide opportunities for feedback and review.

There are several ways you can find a peer to learn software engineering with:

- Join online communities or forums related to software engineering. These communities often have members willing to mentor or collaborate with others.

- Reach out to local meetup groups or attend industry events in your area. These events can be a great way to meet other software engineers and find potential peers.

- Connect with people in your professional network. Ask around to see if anyone is interested in collaborating or learning together.

- Consider joining a study group or starting one of your own. You can find other people interested in learning what you want to learn and meet regularly to study and learn together.

Overall, the key is to be proactive and put yourself out there. Don't be afraid to reach out to people and ask if they would be interested in learning together. That is a valuable way to deepen your understanding of a topic and gain new perspectives, but there are potential challenges.

One challenge is time constraints. Depending on your schedules, usually, it is hard to find time to work together. We need to be flexible and work around each other's schedules.

Motivation can also be a challenge when learning with a peer, especially when working on a difficult or complex topic. You must be proactive to keep each other motivated and on track.

Finally, conflicts can arise when working with a peer. You should be open to feedback and find ways to resolve any disagreement that may emerge constructively.

## Code for yourself

The benefits of working on projects relevant to your interests or needs are clear goals and purpose. By that, you are more likely to stay engaged and motivated, which can help you learn more effectively.

In addition to the learning opportunities, working on real-world problems can give you valuable experience that can be helpful when applying for jobs or working on professional projects. This hands-on experience can help you stand out in a competitive job market and give you confidence in your abilities.

Finally, seeing a project through from start to finish is very rewarding. Developing a tool or application to solve a specific need can be a very fulfilling accomplishment, as you see the results of your work practically and tangibly.

On the other hand, you may encounter different challenges, like time constraints. Balancing these projects with other commitments, such as work or family, can be quite difficult. Finding time to work on your projects can require careful planning and time management.

Debugging and troubleshooting can also be more challenging when working on your own. Without the benefit of colleagues to collaborate with, you may have to spend more time figuring out problems and fixing errors.

Finally, limited exposure can be challenging when working on projects for yourself. Without a team or organization behind you, it can be harder to get your work noticed and recognized by others. That can make it harder to build a portfolio or get feedback on your work.

## To cut it short

While stepping out of your comfort zone can be time-consuming and require a lot of effort, it will help you gain new perspectives and be very beneficial in the long run.

It's imperative to seek out different resources, such as books, courses, real-world projects, or friends, to ensure that you are well-rounded and have a broad range of experience.

## Useful links
- [Brilliant](https://brilliant.org/) - Huge variety of content, from Quantum Mechanics to Computer Science
- [3Blue1Brown](https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw) - Youtube Channel to learn Linear Algebra, Calculus and more
- [HackerRank](https://www.hackerrank.com) - Very good online coding platform
- [Kaggle](https://www.kaggle.com/) - Public datasets and competitions for Machine Learning
- [NotRocketScience_](http://rocket.nergal.xyz/) - Technical challenges proposed by [László](https://github.com/nerg4l)
- [Google Qwiklabs](https://googlecloud.qwiklabs.com/) - Hands-on oriented web courses for Google Cloud Computing
- [LinkedIn Learning](https://www.linkedin.com/learning) - Web courses
- [Coursera](https://www.coursera.org/) - More web courses
- [Udemy](https://www.udemy.com/) - And more web courses

**See you | Bis geschwënn | Até mais | À bientôt**