The cursor blinks in your terminal. Your eyes blink back. You’ve stared at
git push origin master for the last 10 minutes. You’ve got an interview in 12 hours and you want to show them something new you’ve worked on… but you just can’t bring yourself to press return and push this latest code to GitHub.
You’ve got tests in place, but you can think of a half dozen corner case you’ve missed, and the tests take almost 25 seconds to run - you’ve heard they should run in 10 seconds or less.
You’ve refactored as much as you can, but you can’t manage to clean up the parsing logic and make it any more readable. How does anyone expect you to write readable regular expressions, anyway?
You’ve tried to invert dependencies, and organize your code into isolated responsibilities. You’ve followed DRY and Demeter and SOLID down to the last line of code.
But you still wonder…
What if the lead engineer rips your code apart tomorrow?
What if they say, “Have you heard of this gem that does the exact same thing… only better?”
What if they ask you about a decision you made, and you can only respond with: “Because it seemed to work” ?
What if they thank you for your time… and send you on your way without a job offer?
What if future employers see your code and decide to not even bring you in for an interview, because you clearly don’t know how to write code to the professional standard they expect?
You want to build up a portfolio on GitHub that makes employers come to you.
You want to get feedback on your code and your projects before you show it to employers.
You want to join the open source community, a community of software developers that solve problems and share their work with the world, and who constantly improve their abilities through practice.
You want to write great code that elegantly solves a problem, so that you can prove to software companies that you can write code to solve their problems - so that they’ll pay you for it.
What if you could demonstrate not just your abilitiy to write code, but also your improvement over time?
What if you could show potential employers that you constantly learn about new tools and technologies, and that you can quickly learn whatever you need to get the job done?
What if you could break free from your position on the outside looking in, and start playing the open source game?
It starts with pushing your code to GitHub, right now.
Sure, you might know that you have a lot of things you can improve. Nobody writes perfect code.
You will get better simply by writing and sharing code. The more you do it, the better you’ll get, and the more confidence you will build in your ability to write and share code.
If you fear the response from employers or strangers on the internet, you can create a secret account and not tell anyone about it, so you can still get in the habit.
But if you really want to get good, and you want to build a portfolio, then you’ll want to contribute to open source projects.
You don’t need to write perfect code. If you send a pull request to a project, and the maintainers find something wrong with it, they’ll let you know and give you a chance to fix it.
If they respond like jerks… well then you should find another project to contribute to. Their loss.
Lurk around open source projects a bit… find the ones that have supportive maintainers, that welcome contributions from new people.
Read any contributing guidelines so that you can confidently submit pull requests, knowing that your code matches the project’s standards.
Over time, you will build up a portfolio of projects you’ve built on your own, and projects you’ve contributed to. This portfolio will tell employers more than any single line of code in any single project will… it will tell them that you care about making software, that you improve your abilities day after day, week after week, month after month, and year after year.
If contributing to an open source project still scares you, why not check out one of the RubySteps open source projects? We’d love to have you contribute, and will do everything we can to help you get started.