I recently had a pretty big change in my life. My company went through an internal reorganization. I was left with a choice of moving my family a few hundred miles or finding new work. Since the prior wasn’t really an option for us, I took the opportunity to make a career move.
Now was as good a time as any. Luckily, I didn’t have too much trouble finding a replacement job, but finding it was quite an experience. It turns out that nobody is interested in hiring a VB6 developer these days, and if they are, they want to make your job title “Excel Analyst” and severely underpay you. Seriously people, a good VBA dev is worth their weight in gold compared to all the people writing spaghetti with the macro recorder. Find a real programmer and pay them what they’re worth. You may spend more now, but it will save you tremendously in maintenance costs. But I digress…
VB6 was replaced by .Net twelve years ago, so I was looking to move on from VBA development and (professionally) into .Net development anyway. Getting my foot in the door without any professional .Net experience turned out to be quite a task though. I can’t tell you how many times I heard a recruiter or HR screener say, “But where is your .Net experience. All I see is this open source project. Don’t you have any real experience?” Even now, months later, that statement makes my blood boil. Let me tell you folks, experience writing open source software is real experience. The last time I checked, Rubberduck was at over 35,000 lines of code excluding the ANTLR generated code. It’s as large and complex as any CRUD app I’ve created in 5 years of professional software development, if not more so. Open source development teaches you more than just code though. It teaches you a number of other things as well.
- How to effectively work with source control and a remote team.
- Customer Service / Help Desk
- Project and feature management.
- How to determine which tasks will be accomplished in a sprint.
- How to configure a build server for automated testing.
- How to effectively document
The list goes on, at least if you’re doing it right.
The funny thing is, once my resume got past these clowns and in front of other developers, finding work was easy. Other programmers already understand that open source experience is real development experience. They understand that not only do you have to write the code, but you have to architect and design the system too. Plus they get a chance to see your work, up front, before they ever meet you. Outside of visual design type work, I can’t think of another field where this is possible. That’s all without mention of the passion it takes to do what you do as a job for a hobby. If you’re hiring right now, do yourself a favor and let your HR people know how you feel about open source projects on resumes. Otherwise, you’ll never even know that you’re filtering out great candidates.
There were some other priceless gems from the job search too. One place I applied to was looking for a SQL/ETL dev.
Can you send us some code from your current employer?
No. I cannot. Even if I wasn’t contractually bound by a non-disclosure agreement, I will not send you code I was paid to write for somebody else. However, thank you for letting me know about the level of ethics at your company and that I don’t want to work for you.
Here’s another great conversation I had with a senior developer at a firm. I had just finished answering the question “What is Dependency Injection?”
Him: So what IoC container are you using?
Me: I’m not.
Him: What do you mean you’re not? How are you doing dependency injection without an inversion of control container?!
Me: I’m just using Pure (poor man’s) DI. You don’t need an IoC container to inject dependencies into a class. At this point, there’s no need for the overhead of framework.
Him (stunned): But… How can you do DI without an IoC?!
I’m still shaking my head over that one. Here was this “senior” dev who had no clue what dependency injection really is and couldn’t wrap his head around the fact that you don’t need a fancy framework to do it. Don’t get me wrong, they’re great and we’re moving Rubberduck to the Ninject framework for our DI, but you don’t need it. Again, thank you for letting me know that I don’t want to work for you.
Finally I found a great company and had a fantastic interview. We just sat around talking about code for a few hours. They asked about my VB6/VBA experience, even though they were hiring a .Net developer, because they realized that a good programmer can do it in any language. They asked about my open source project. We talked about OOP and different design pattern (and anti-patterns). They admitted that the legacy code base was awful and in need of some serious love. The whole experience was laid back and honest. Today, even though the legacy code base truly is terrible to work with, I love working there because the people are fantastic to work with.
So, to all of the people who tossed my resume because open source experience isn’t real experience and the people who decided that I suddenly couldn’t telecommute after 3 years of working that way, I’m sorry. You’ve missed out on working with a smart, passionate developer. I’ll be here turning spaghetti into something to be proud of for the foreseeable future.
And I couldn’t be happier about it.