dotnet / vblang

The home for design of the Visual Basic .NET programming language and runtime library.
289 stars 65 forks source link

MS "Limited resources..." #447

Open WolvenRA opened 5 years ago

WolvenRA commented 5 years ago

As I've read through various "Issues" here I keep running across comments alluding to Microsoft's "limited resources" (paraphrased). It comes up a lot in discussions about why MS seems to be losing interest or not investing in VB as much as other .net languages. Often used as an excuse like; "Well, there are only so many resources available so it's only natural that MS would focus on those products (languages) with the most users." Apparently, people making such comments haven't spent any time analyzing the premise with actual facts.

I don't know how many MS developers there actually are on the VB.net team but, just for fun, let's do a little math. Let's say MS hired 100 developers just to work on VB.net alone. Let's say with salary, benefits, and overhead, each of those developers cost $300,000.00\year. That would total 30 Million\year. MS net income for 2018 was 30.3 BILLION. After a "one time charge" of 13.7 Billion related to new federal tax laws, its net income was a "paltry" 16.6 Billion.

So now, let's consider the total cost of those fictitious 100 VB.net developers as a percentage of MS's net income. NOT Gross Income mind you, Net Income. And not the "real" Net Income for 2018, just the "paltry" amount left after the one time charge. 0.18% LESS THAN 2\10th's OF 1 PERCENT OF THE NET PROFIT! Let's go crazy and add another 100 programmers to the various related teams just to support the VB.net efforts. That would still be LESS THAN 4\10th's OF 1 PERCENT OF THE NET PROFIT!

What percentage of total revenue is generated by all of the MS products and services businesses purchase due to the fact that their main business applications are written in VB.net?

I realize MS has a Lot of products and efforts to support. But PLEASE, let's stop stating, pretending, or insinuating that "Limited resources" has anything whatsoever to do with any real or perceived lack of resources dedicated to VB,net. That simply isn't true.

ocdtrekkie commented 5 years ago

@WolvenRA The part of the equation you are missing is that businesses are going to invest in things that they expect to return more than they put into them. Microsoft obviously does not think throwing 100 more developers at VB is worth the money at this time. Surely Microsoft considers VB valuable and worth keeping since they continue to invest developer resources in supporting and updating and even occasionally expanding it... just not that much.

WolvenRA commented 5 years ago

@ocdtrekkie Agreed, The only point I was trying to make is that "limited resources" i.e. lack of money isn't the problem. And again, I would be very interested in finding out how many end user business applications (such as accounting) are written in VB.net and how much of MS's total revenue comes from the MS products and services (Windows Server, SQL Server, etc.) businesses purchase related to those business applications. I may be wrong, but somehow I suspect the number is far greater than the amount of dollars MS invests in VB.net's development each year.

ocdtrekkie commented 5 years ago

@WolvenRA But again, all of that revenue is money Microsoft is making with their current level of investment in VB. That doesn't mean throwing more money at VB means more profits. Especially if they feel say, adding a developer to C# or working on doing more with Python because it's exciting to people these days is going to create more profit than adding a developer to VB.

WolvenRA commented 5 years ago

Speaking of Python... I've "looked" at it but haven't actually written anything with it. Just from my, admittedly cursory, review I was left wondering... why would anyone use that instead of VB? They seem quite similar. I'm just guessing but I would suspect VB has more functionality than Python and although I use it I don't have to "worry" about indentation. I can understand its popularity from the perspective that it's nice, clean, and easy to read... just like VB. But why it would be "quite popular" while VB gets consistently crapped on I find confusing. The only reason I could come up with is that Python is NOT MS... whereas VB.net is. Maybe someone can enlighten me.

zspitz commented 5 years ago

@WolvenRA

"limited resources" i.e. lack of money

It seems to me that interpreting "limited resources" as a lack of money is incorrect; not everything can be solved with money, or by throwing more developers at it.

Consider -- language design requires a high degree of skill and familiarity with multiple programming languages; and C# and VB.NET language design also require being familiar with the ins and outs of the Roslyn compiler. Developers at this level are indeed a precious and limited resource, and Microsoft has to prioritize their paid time in accordance with the company's business goals.

Consider also that a new feature consists of far more than just design -- the feature needs to be spec'ced, the design has to work on its own and along with the rest of the language, it has to be implemented, and tested, and documented (and this is an iterative process -- at any point it may be necessary to go back to the drawing board). The people who Microsoft employs to do the rest of this work also need to be highly skilled in their various fields -- the testing mindset is different from the implementer's mindset, which differs again from the documentation author's -- and their time is also at a premium, and must be prioritized.

Consider also that VB.NET is a more complex language to evolve than C#, because 1) the VB.NET compiler has more going on in the background (I don't have hard data for this, but it feels right to me). Also, 2) C# can borrow from multiple sources of inspiration -- the C/Java family of languages, functional programming languages; at least on the level of being able to say, "That's how it's done in C++, we're not doing it in C# because of X". VB.NET has only one real ancestor -- VB6 -- so virtually all of the design work is starting from scratch. 3) VB.NET has the stated goal of being usable by beginners, so there isn't the luxury of having an oddly designed feature and directing users to the manual.

All this falls under "limited resources".

So, what can be done?

I think that the community can provide much of the grunt work of running down implementation dead ends, suggesting specs, testing potential PRs. If members of the community present 5 PRs for a given feature, it's far easier to discuss the pros and cons of each possible implementation; than have to start from scratch. Ultimately, even if the LDT decides to choose a different implementation, the language will have been advanced by these contributions.

Nukepayload2 commented 5 years ago

@WolvenRA

why would anyone use that instead of VB?

Because python supports more workloads. Many of my classmates use python to write data science related apps or websites.

Padanian commented 5 years ago

@WolvenRA The part of the equation you are missing is that businesses are going to invest in things that they expect to return more than they put into them.

That must be the reason why they have a Linux subsystem now. They are making money out of it, right? And that's why they are putting more developers into one the greatest community of developers in the world.

Padanian commented 5 years ago

@WolvenRA

why would anyone use that instead of VB?

Because python supports more workloads. Many of my classmates use python to write data science related apps or websites.

That'a common misconception. Python does not support NATIVELY any more workloads that any other OOPL. And for what concerns math or science libraries, well, those have nothing to do with the language itself. There are great, and better documented, engineering, chart or calc libraries also for .net. And frankly the indentation thing is an embarassment for Python.

ocdtrekkie commented 5 years ago

Python is not inherently "more capable" than any other language. But it's currently popular in a lot of different circles, so a lot of stuff has been built for it recently, and it's often one of the first languages taught in college these days (in many cases, replacing a position VB used to enjoy).

WolvenRA commented 5 years ago

Python is not inherently "more capable" than any other language. But it's currently popular in a lot of different circles, so a lot of stuff has been built for it recently, and it's often one of the first languages taught in college these days (in many cases, replacing a position VB used to enjoy).

With as much money as MS spends on evangelizing their products and their STEM education efforts, it's odd that they would seemingly sit back and watch the popularity of Python grow rapidly while not promoting VB.net to colleges, high schools, tech schools etc.. In many ways, MS today reminds me of IBM 30 years ago... Grand New Strategic Initiatives to implement the Next Big Thing that wind up failing and being dropped after alienating and abandoning existing partners\customers. MS should know better... it's how they defeated the Goliath that IBM was. "Those that fail to learn from history are doomed to repeat it."

jrmoreno1 commented 5 years ago

This isn’t a language feature, can it be closed?

rskar-git commented 5 years ago

@jrmoreno1

This isn’t a language feature, can it be closed?

Yep, it probably should be closed.

@WolvenRA

MS "Limited resources..."

What I think is going on is this: The programming language business isn’t what it used to be. I think that VB.NET and C# and F# are now "loss-leaders" (https://en.wikipedia.org/wiki/Loss_leader). When VB6 was among the kings of programming, one had to buy a development system. But the programming language market shifted dramatically with the rise of Linux serving so much of the web/mobile development needs (e.g. the so-called LAMP, and later on MEAN - https://en.wikipedia.org/wiki/LAMP_(software_bundle), https://en.wikipedia.org/wiki/MEAN_(software_bundle)). These are crowds that much prefer languages/libraries/tooling that are either: free (as in "free beer") and/or not "under the thumb" of a single vendor (i.e. having meaningful avenues to drive future development and usage, which often means some sort of F/RAND arrangement - https://en.wikipedia.org/wiki/Reasonable_and_non-discriminatory_licensing).

It would not be until about 2005 that Microsoft began a sort of freemium model to address this, starting with the Express editions of Visual Studio; and by 2014, with the Community editions - https://en.wikipedia.org/wiki/Microsoft_Visual_Studio_Express, https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#Community. The programming languages are now the central interest meant to bring new clientele towards Visual Studio, become familiar with Microsoft's libraries and infrastructures (new buzzword here is "stack" - e.g. SQL Server, Azure, M2.NET), and otherwise build interest in their various other offerings.

C# gets particular attention largely because it is the lingua-franca of .NET (C#/.NET co-evolution rather much mirrors that of C/C++/Unix and Java/JVM), and it doesn't hurt to be standard, too (ECMA-334), since that signals F/RAND. F# has its own foundation - IANAL, but it seems this foundation is the owner of the language proper (not its implementation, though, which is another thing), even though it originated from Microsoft, and Microsoft still makes documentation and coding contributions, particularly for .NET on Windows. While there's plenty to love about F#, it hasn't rocketed as yet (see e.g. https://news.ycombinator.com/item?id=18668638). FWIW, PYPL (http://pypl.github.io/PYPL.html) doesn't have F# in its top twenty (although VBA and VB are).

And then there's VB.NET. While there's plenty to love about C#, VB.NET certainly also has its charms. However, the general developer mindset regarding VB.NET (mostly from the LAMP/MEAN side) is filled with misunderstandings about it and includes conflations with VBA/VB6 and VBScript (e.g. https://developers.slashdot.org/story/19/06/22/2138248/the-rise-and-fall-of-visual-basic#comments). This mindset issue can only be countered by a factually growing community of VB.NET developers. The recent rise of VB.NET into to the top 10 (and even for moments the top 5) of TIOBE (https://www.tiobe.com/tiobe-index/) is indicative of there being a growing number of developers who are taking on VB.NET related job assignments or gigs. The focus should be capitalizing on that momentum if you're someone who's fearing about VB.NET going zombie. Perhaps most of these developers are just looking to pay the bills, but you never know...

So my advice is to cheer on Microsoft in getting .NET Core v3.0 finalized, and in the meantime do some cool things with VB.NET and blog about it, perhaps at https://gitter.im/VB-NET among other venues. If someone you meet expresses an interest in programming, offer to tutor and mentor them in VB.NET. In its present state, VB.NET is a wonderful language for line-of-business, manufacturing, and hobbyist uses.

If anyone asks why VB.NET should be in learned in 2019, tell them there are plenty of job opportunities out there, and it's a fine way toward getting expert at the Microsoft stack and programming in general. Every market is different. Near as I can figure, VB.NET developers earn about the same as C# ones, and besides other factors come into play anyway, such as other expertise you may bring beyond IT, and the industry (e.g. https://www.payscale.com/research/US/Skill=VB.Net/Salary, https://www.payscale.com/research/US/Job=C%23_Developer/Salary, https://www.payscale.com/research/US/Job=.NET_Software_Developer_%2F_Programmer/Salary).

So don't fret too much on this. Do cool stuff, share that with the world, make some like-minded friends, and thereby organically grow a community.