The developer tool suite offered by Microsoft for Excel is currently a set of three complimentary technologies:
- Visual Studio Tools for Office (Dot Net)
- Visual Basic For Applications
The VBA language is an interesting one. Often referred to as the “jewel in the crown” of the Office suite, there is no doubt that VBA is largely behind the huge success of desktop Office. Yet Microsoft seems to consider it to be an unwanted child and has left it to stagnate for 15+ years – except for the 64-bit support in
VBA7 which was grudgingly conceded for Office 2010.
Whilst Microsoft has made it clear that it will continue to support VBA for now, it has been incredibly indecisive on how to replace it, leaving VBA developers such as myself in a perpetual state of uncertainty as we live out the long tail. I honestly have no idea when a decision will finally be made but, for now, Microsoft seems to be concentrating its efforts on building out the BI capabilities of Excel and support for various platform endpoints. Excel is here to stay and has even been recently praised by Microsoft’s CEO, but if you ask any developer they’ll tell you there isn’t a future in VBA development.
The recent volatility (read: Brexit) has caused me to think very carefully about how to secure my professional future. Reskilling is something I’ve delayed for far too long: it took me ages to get good with VBA and I know that it will take me equally long – or likely longer – to get to the same standard in another technology. I’ve dabbled here and there, but I haven’t really committed. The time for dallying is over.
The question then becomes: which technology should I turn to? As far as I’m concerned VSTO has long been a dead turkey and, whilst Apps for Office is potentially worth learning, I don’t see any demand for it out in the market. Perhaps that’s because it is too new – or perhaps it is another turkey. The information available to me suggests that I need to look beyond Microsoft’s Excel development tool suite and possibly even beyond the wonderful world of Excel development itself.
I have to be realistic. I can’t just declare myself to be a Haskell developer and expect the job offers to come flooding in. A more pragmatic approach is to find a hybrid role – one where the key skill is Excel/VBA so I can deliver solid results – but where there is also an opportunity to use other technologies. There’s nothing like learning a new skill on-the-job.
In London’s finance sector where I work, Excel developer job requirements have a common theme:
- Outstanding Excel and Excel VBA knowledge
- Good business knowledge and experience. [RAD developer roles are business facing, often on trading floors.]
- C#.Net or Python or Java (or C++ for the more quantitative positions).
- Good database skills: typically SQL Server or Oracle. MS Access is often useful
The number of Excel-focused developer jobs here is decreasing, but I believe there is still enough time left in the tail to pick up one of the “alternative” skills highlighted above in bold and progress it on-the-job. After a couple of years that skill should be decent enough to apply for developer roles which have nothing to do with Excel – if one needs to.
Database skills are essential but, since I already have decent SQL Server, my focus is drawn towards learning either C#.Net, Python or Java. Python and Java are both excellent options, but I seem to notice more Excel developer roles advertised with C# attached to them. What is interesting about the Excel/C# roles is there’s usually very little mention of VSTO: the experience the recruiters are looking for tends to be on third party products such as Excel-DNA, Add-In Express and Spreadsheet Gear.
Other than immediate job opportunities, C# appeals to me for a number of different reasons:
Firstly, I already have some experience with C#. Don’t get me wrong – I’m a beginner to intermediate level at best – but at least I’m already a little way along the learning curve. C#.Net is a Microsoft technology so perhaps it will feel more familiar to me than Python or Java, thereby making it easier to pick up.
Secondly, and very significantly, the contract I currently have does have some scope for C# projects which I can leverage. I’m happy where I am and it can help get me where I need to get to.
Thirdly, it’s a great, central language to have under one’s belt. Once you’re good at C#, the Java language syntax is very similar and shouldn’t be too hard to pick up (or so I’m told). Knowledge of the .Net framework is transferable to other .Net languages such as VB.Net. The OOP principles and concepts are shared by many other languages. It can target many different endpoints. It certainly seems to open up a lot of doors.
Fourthly, I live with the ever-diminishing hope that Microsoft will decide to replace VBA with .Net. I’d love to be able to jump on that bandwagon. And, if by some miracle, VSTO is revitalised, then I would be in a strong position to leverage that too.
Fifthly, the C# language is still evolving. It’s an exciting and dynamic space to be involved in. No tails in sight here.
And finally, getting started with C# is free.
- Microsoft’s Visual Studio Community is a very rich IDE and is free to download from MSDN for individual developers. There are other free IDEs available out there – such as SharpDevelop – but I’ve never used them.
- Channel9 on MSDN offers hundreds of hours of free C# training videos.
- There are plenty of free e-books and online forums.
- Oh, did I mention, it’s free?
So that’s my current line of thinking. How about you? Are you an Excel developer? Where do you see yourself in 2-5 years’ time?
Probably still in VBA. Where the developers of that future will still probably be telling me there isn’t a future in it. :-)
I think the prospect of MS stripping out VBA is about as likely as the prospect of MS stripping out VLOOKUP: You can build spreadsheets that do lookups without VLOOKUP just fine. But you still have those other 50,000 spreadsheets in your organisation that use it.
VBA may be the kid that’s left to its own devices as ever more ‘cuter’ babies are delivered. But i don’t think it likely that VBA will ever be completely disowned. And with all those legacy mission-critical spreadsheets out there, maybe one could make a really good living in one’s sunset years with this sunset language.
So while the market share of VBA jobs might decline, that might not be any concern to a competent, entrenched VBA developer. Because they don’t live at the margins where this shrinkage occurs, and it’s unlikely to shrink to zero any time soon. I hope.
Good stuff Colin. The highest ranked item over on Excel User Voice is Python as an Excel scripting language. Indeed, much effort already in 3rd party area. DataNitro, pyvot, etc…
One item I do not see on your list is R. R is the highest ranked language on StackOverflow.com probably in terms of mentions. Since Microsoft bought Revolution Analytics, R is showing up everywhere in the Microsoft world (Microsoft R Open aka MRO, R Tools for Visual Studio, SQL Server 2016, Power BI)
Perhaps we will see R or MRO in the next major release of Excel either as an Add-in or part of the core exe.
Heh Colin. Trust you are well buddy. C# and Excel DNA are my current areas of interest. Python looks very interesting though especially with all the interest in Machine Learning these days. Add to that the relatively recent outing of PyXLL and I wonder if that might be a worthwhile avenue to explore.
I was a VBA dev for several years and then a wise man asked me, “Do you want to be a VBA developer, or do you want to be a Developer?” So I started learning C# in my own time, for many of the reasons you mentioned, although I was able to leverage it with my SSIS work from time to time.
Two years later, I’ve worked with WebForms, MVC, Winforms, WPF, UWP, streaming data via serial port, and motion control of hydraulic systems. All because I didn’t want to be a [insert technology here] developer, and I’m much better for it.
If you can’t get experience at something new at work, get involved with an Open Source project that uses the tech you want to learn. The best part of that is you can freely show your work to prospective employers.
Great post. Just like you, I am a seasoned VBA Excel developer and still find myself learning new techniques from other users, To follow your post them, I can also see the end of this technology in the horizon. Microsoft simply does not provide new libraries or better tools for it. Other software with better eye candy from other companies, like Tableau, constantly make Excel look obsolete in this field. Even Google offers free tools that act better than Excel.
Since the last couple of years I have been looking for the next wave to catch it in time before I am left behind. I considered Python and R, but my chances of using these at my job are almost null. Large companies only prefer well known packages and will never install open source software. This is the first time I hear of #C being a trend. My job place will probably choose any Microsoft software over any other. I should probably also start looking at #C. Thanks for the advice.
Interesting, my advice: don’t let MS decide, I’m already waiting 30 years for that kind of decision. They just offer tools, no more, no less. My contractor has a lot of tools, but his real advantage is experience and qualification. The more qualification you can offer, the more opportunities you get. VBA, VSTO and other “scripting” tools are derivations from high level “native” languages (VB, C/C#). Once you know these natives, it’s very easy to use the other ones. Learn C# or VB and it’s easy to adopt PHP, java, VBA, VSTO, … Once you can paint it’s easy to decorate your house, no matter what kind of paint you want to use.
The point is that you become a more generic developer, more independent, and you are gaining control again over your projects and the new worlds you want to explore, boldly, … but that’s another blog I think. Cheers mate!