I came across a post on Programmer’s Stack Exchange yesterday that really irked me. It took me a little while to really digest what upset me about it, but I think I understand now. This developer was asking for more reasons to back up his claim that he should move his solution from VBA to C#. That in itself is fine. As I stated in my response, I understand his desire to move his solution to C#. I wish I could move all of my projects to the .Net platform myself.
No. Wanting to move to a more modern technology was not my issue with his question. My problem was with how he acted like working in an old technology gave him a pass on being a professional.
I prepared a list of points that I could use to try and convince them that a C# solution would be better for this project, this is what I have so far:
- Unit testing.
- Source control.
- Code documentation – for knowledge transfer to other support persons.
- Better coding conventions – can use things like ReSharper to enforce better naming and structure.
- Better IDE – fewer mistakes due to error highlighting.
- More modularity through assemblies – can promote re-use in future tools.
- Managed deployment – can control who this tool is used by.
My reply shot each of these down, one by one. All of these are solved problems in the VBA landscape. Granted, some are solved better than others, but no one has an excuse to neglect any of these bullet points simply because they’re using VBA as a language. Neglecting to properly automate your tests or put your code under source control is simply unprofessional. No wonder VBA is scoffed at and my peers looked down upon by so called “real” developers who use a “real” language. We’re not behaving like professionals, so why would anyone treat us like professionals?
Let me put this another way. If you hired a plumber and he showed up with just a hammer, what would you do? I’m pretty certain I’d send him back out the door and go hire a professional. I’d hire someone who used the tools of the trade. Wouldn’t you?
Simply put, if we want to be treated as professionals, it’s about time we act like it and start using the tools of the trade. We start unit testing out code. We put it under source control. We write better, cleaner, object oriented code. If a tool that we need doesn’t exist, we build it ourselves.
Do you think the first blacksmiths went out and bought their tongs and hammers, or do you think they made their own? They made their own because they couldn’t just run down to the hardware store and buy one. Early blacksmiths made their own tools because they had to in order to properly practice their trade. Now, who built Visual Studio, Eclipse, or ReSharper? Programmers did. That’s the beauty of your tools being made from your medium. You can build them yourself. You’ve absolutely no excuse not to use the tools of your trade when you have the capability to create them yourself. None. So that’s what we’ve been doing with Rubberduck. We’ve been building the tools we need to do our jobs professionally.
I’m calling all of you out. I’m asking that you stand up and behave as professionals. Use the tools of your trade and use them properly. Don’t like the tool we’ve built? Fine. Use someone else’s or build your own, but for the love of code use them.