How to grow as a developer
Tags: beginners, opensource, codenewbie, career
Published: 2020-11-12 13:20:45

> Become a well-rounded developer and keep improving

## Intro

This year I've spoken to a couple of beginner developers who need advice on how to grow their skills and career. Here are some ideas which are top of mind from my recent discussions. 

The tips are aimed at beginners, but will also be useful for someone with experience who is looking for ways to improve themselves all-round or try a different direction (like hobby projects or open source or learning a new language). I plan to use this as a reference to keep myself challenged and inspired when I feel like I am stuck.

For background, I am a Senior Software Engineer and I have been developing professionally in Python and JavaScript since 2017. The tips here are things that have I have discovered on my journey and they have helped me.


## Stay curious

On the technical side, you're going to have to keep learning in your career or hobby as a developer.

There are plenty of free online courses and sites with material for you to use.

Don't get stuck in tutorials - take the concepts and syntax you've learned and put them into practice. Build something. Experiment. Throw away your code or keep it as a reminder of what you made. Don't feel like you have to know a lot about a topic or tool to use it - you just have to know enough to get started and you'll figure things out as you go.

Draw your application on paper before coding. What are the pieces needed and how to they relate? What are the opportunities and costs of decisions? How will another developer or an end-user use your application?


## Goals

Keep your goals small and achievable at the start so you'll build confidence, focus on a few well-defined problems, and avoiding getting discouraged when you feel stuck or overwhelmed.

Don't get obsessed over perfection and understanding everything. Be patient with yourself. Being a developer means sometimes accepting uncertainty or being patient as you work through it. 

Don't get sidetracked with [bikeshedding](https://en.wiktionary.org/wiki/bikeshedding). Debates like tabs vs spaces and which language or tool is "best" takes you away from writing better software. Your development style will change over time as you write code and learn from other codebases and experts. Seek to improve, but don't expect to get to perfection as changes happen in real-life. You'll have to adapt parts of your code and even rewrite or get rid of applications, when they no longer fit your needs as a personal project or the needs of the end-users.


## Connect with people

Go to coding meetup events in your areas. AWS also has a few online sessions a month that you can join, covering both presentations and the chance to chat to others over a chatroom or video.

Share your learnings and what you've made with your friends and colleagues and in some public space (like GitHub or a blog). You'll be encouraged by positive reactions. You'll get feedback on how to add to your code or application in ways that you hadn't thought of. And you'll find out about bugs or friction that people experience installing or using your application. 


## Get help from the open source community

If you're lucky, you'll get contributions to your repos from the GitHub community such as issues or Pull Requests. Go to the Settings section of your repo. Disable this option: **Restrict editing to collaborators only**. Then when someone makes a fork of your repo, they'll be allowed to submit a Pull Request. Also, this option allows anyone to add issues to your repo.

Be kind in your code reviews. Not everyone knows the language, tools and projects a well as you. They may have ideas or code styles that are different to yours. Seek to learn, understand and ask questions, before judging someone and their input or code.


## Contribute to the open source community

Find ways to contribute to Open Source projects - such as repos that you like or packages that you use. I would not recommend focusing on contributing to Open Source too early on as a beginner. Start with your own projects, as you will have a lot of freedom to mess around.

Over time, you'll find  public projects that matter to you and you'll be able to match your skills against the problems.

But when you do get to the point of having your Pull Requests on repos merged, it is very satisfying. 

You'll also learn a lot about CI (automated tests and deploys), reviewing code, and getting familiar with another codebase. These skills are invaluable for working as a developer and getting practice on open source repos is a great way to hone these skills. Plus you're making the tech world a better place.

## Conclusion

I hope these ideas resonate with you and that you can pick at least one idea and run with it.

## Related

This is a re-post from my blog on `GitHub.io`. I list some older posts there which are similar, in case you are interested.

- [Resources](https://michaelcurrin.github.io/coding-blog/2020/10/29/resources.html) for code challenges and choosing projects to build.
- [How to be a developer](https://michaelcurrin.github.io/coding-blog/2020/01/27/learn-to-be-a-developer.html) with technical and non-technical skills
- [How to find inspiration](https://michaelcurrin.github.io/coding-blog/2020/01/27/how-to-find-inspiration.html) - stay motivated as a developer with big and small goals and projects.
- [How to choose tech projects](https://michaelcurrin.github.io/coding-blog/2020/01/27/how-to-choose-tech-projects.html) - some suggestions on how to find project ideas worth building

## Credits

Photo by [@yogendras31](https://unsplash.com/photos/YWpwqk3CMak) on Unsplash.