Date: 2019-10-27
Time to Read: 3 Minutes
Tags: personal development career programming open source
CommentsPhoto By: Chris Ried
Now Going Forward After Graduation
Even if you’re happily employed, there is value in understanding your own market value and attractiveness to potential employers even if you’re not completely interested in leaving your current post. Additionally, there is also value in raising this market value in the future scenario that you do more actively pursue a change in employment. It’s easy for a fully-employed person (especially one with a small family) to find themselves lagging behind their competition in the untimely scenario of losing their job; especially if their current job doesn’t present an opportunity to grow their skill set in a manner that is more applicable to the demands of the broader market.
Continuous education is a requirement of most knowledge worker occupations; but sometimes it feels like software development turns this up to 11. It oftentimes feels like employers expect that in addition to programming at work, you should program at home on your own personal projects or contribute in some manner to the open-source community. The stories of software developers dosing on amphetamines to stave off fatigue as they attempt to churn out code for both their employer and their own personal portfolio isn’t unusual. And don’t forget speaking engagements and research papers. I’m kidding. Kinda.
My recommendation when it comes to extra-curricular programming?
When I undertake the possibility of programming a side-project, I try to take into consideration the following:
Can I use it as an opportunity to learn and gain experience in a new technology that I haven’t learned? Can it be monetized to provide a passive stream of income or can it eventually be turned into a business? Am I doing it on behalf of a client (e.g., freelance work) and thus receiving compensation in that form?
I try to look for some sort of value in the work that I am doing that extends beyond simply programming for programming’s sake. This is even more important in the situation that you have a small family that also makes demands on your available time. This added value also provides an additional element of interest to the interviewer when you’re talking about your personal projects (if prompted of course).
Which brings me to my next point, before the non-technical portion of any specific interview: refresh your knowledge on any past project of relevance and prepare essentially an elevator pitch describing the project and your development of it. A short description, any obstacles or features of interest during development, and your approach or solution(s). This short structured approach is handy and something that I wished I had followed during a phone interview where the interviewer asked about a work project and I proceeded to spend a unnecessary amount of time trying to recall too much detail in an un-directed and almost rambling-like manner. So this is applicable to work projects in your prior experience as well.
What about Open Source project contributions?
I can’t speak very much on contributing to the open source community since my only attempt up-to this point has been resolving a minor node package feature issue that I discovered in the development of my personal website. However, despite my inexperience, I can recognize the benefits of the quasi-volunteer work of open source contributions. Namely, unlike working as a cowboy coder on your own personal projects with very little accountability to anyone else in a technical role; there is a certain satisfaction in having your programming efforts and code quality validated by your pull request having been accepted. Additionally, you learn how to collaborate in a remote fashion to a software development project; adapting to their existing naming conventions, idioms and guidelines, and you also gain a multitude of experience in setting up the development environments for each project that you undertake. And lastly, but also critically important, you learn how to read and navigate the code of people other than yourself which you can later use the same techniques that you learned from said code in your own future projects.
Though it may not be of much value to the hiring manager or recruiter of a prospective employer (unless they obsess over seeing a ton of green boxes on your GitHub contributions timeline); the value that it adds to your own ability as a software developer and computer scientist is great. The whole previous paragraph, honestly, has somewhat inspired me to address my own inexperience in this area.
So where to begin? Well, you could start with any open source tools that you currently use or have intimate knowledge of as a user, though you may find some open source projects are more welcoming of novice contributors than others. However, I will point you toward what I believe to be an ideal starting point.