M
Michael C#
Agreed. But the so-called "office developers" who use VBA AFAIK aren't in
any danger of having the VBA engine pulled out from under them any time
soon. After all, the VBA engine hasn't been updated in what - almost a
decade? I haven't heard of any plans to move update it either... although
there definitely could be some.
If lack of knowledge and motivation are just symptoms, what is - in your
opinion - the real problem?
For real application developers the move to .NET for new projects is not
such a big problem. However, to be able to do that, there must be a
seamless way to use existing VB6 code by the new .NET projects without a
rewrite. In addition to that, existing code still must be maintained for
years to satisfy the needs of the customers. On the other hand there is
the group of what I call "office developers", secretaries etc. who don't
have in-depth programming skills, and use VBA/VB simply for writing loops
and procedures. For them, OO increses complexity because it detracts from
the "simple" problem they want to solve.
I won't even get into the problems often caused by applications developed by
"office developers" who dabble in programming. I've seen large
organizations hire outside consultants to audit years' of financial data,
because a broken VBA macro caused their numbers to not match. I don't think
OO "detracts from the 'simple' problem they want to solve." I do think,
that in many respects, it forces you to think a problem through more
thoroughly before you jump in and hack out a half-arsed solution. I agree
that an "office developer" might not be able to put out as much poor quality
code using true OO models as they could with VBA, but the code they do put
out could be of considerably higher quality. Besides, I maintain that .NET
hides a lot of the complexity of OO programming from the user for simple
projects; unlike unmanaged C++, where you have a lot of internal management
issues to take care of in addition to the basic functionality you're trying
to implement.
That's true for office developers who I wouldn't consider to be real
developers mostly. However, OO is not the right tool for them.
It might be, it might not be. They're not currently faced with having to
change anytime soon, however.
Imagine you are a carpenter and use a little handsaw. This tool is
opmtimized for the work you do, so there is absolutely no need for a
change of the tool.
To take your analogy further, to apply it to VBA "office developers", the
ability to use your handsaw to cut 100 pieces of wood each day may make you
feel that the tool is "optimized for the work you do"; but in the end, if
those 100 pieces of wood were cut wrong, what difference does it make how
efficiently you can turn large pieces of wood into small pieces of wood?
Would you learn how to use the power saw if it doesn't fit your needs as
exactly as the handsaw did, or would you consider to buy a new handsaw
from another manufacturer instead? Would you buy a tool that is
dysfunctional because you cannot use it to do your work? I think it's
absolutely clear that those people don't want to change.
I wouldn't disavow the existence of the power saw just because I've spent
money on "Handsaw" attachments. I would use the handsaw where it worked,
and use the powersaw where it applied. Same thing I personally do with
programming languages right now. For me personally, however, VB6 and VB.NET
are two different versions of the same type of saw; not two completely
different tools altogether - as would be unmanaged C++ and VB.NET.
That's exactly what I think.
I think the support issue is more or less the main issue they're going to
have to deal with more than anything else. Like you said, a lot of
businesses and individuals have installed a lot of $$$ in VB6-based COM
technology and among those people, I can understand the unhappiness about
the lack of support for COM from MS. There are better ways than COM to get
the job done, but like you said, it's hard to justify upgrading to new
technology when the old technology appears to work just fine.