7 ms·
It's an interesting story but it's told as a "person A did this, Person B did that, and Person C had this idea, etc." Maybe it's a consequence how my brain wor
by jasode 12y ago
It's an interesting story but it's told as a "person A did this, Person B did that, and Person C had this idea, etc." Maybe it's a consequence how my brain works but any time I read that type of recap, I forget everyone's name and the other trivia 5 minutes after I'm done reading it.
When revisiting technology history, what tends to stick in my mind is the context and industry forces prevalent at the time and the story doesn't have that.
So my recollection of context in 1990 would include...
1st: The prevailing method of writing Windows programs in 1990 (the Windows v3.0 & v3.1 era) was the raw Win32 API. That meant the 'C' Language WndProc(), giant switch case statements to handle WM_PAINT messages. Basically, all the stuff taught in the thick Charles Petzold book.[1] This was very tedious and complex type of programming. It was not friendly to corporate aka "enterprise apps" aka LOB "line of business" type of programming. (Java would arrive on the scene 5 years later but I didn't see a lot of corporate adoption until v1.3 which was year 2000.)
2nd: You had a large base of old-style DOS text mode developers for line-of-business apps using programming languages such as dBASE III, Clipper, FoxPro, and other 4GL tools, etc. The typical skillset of those programmers did not include the C Language.
In 1990, Windows 3.0 was becoming popular as a platform for corporate desktops and businesses wanted to write apps for it.
Visual Basic v1.0 hit that perfect sweet spot for a bunch of refugees from the DOS text mode 4GL languages to write Windows programs. They didn't have to learn the low-level C language or mess around for months with the Petzold book. Visual Basic had this ingenious abstraction called "forms" that hid the WndProc() monster and its messy switch case statements. It was a huge transformation. It was phenomenal how VB "democratized" the programming of Windows apps. A bunch of ISVs sprung up that built their business around Visual Basic.
The recent parallels to VB as an "inviting tool for newcomers" might be PHP replacing a lot of CGI+PERL and maybe JQuery eliminating a lot of low-level Javascript getelementbyid(). Today, when I look at the iOS and Android landscape, I still haven't seen anything (Titanium? Xamarin?) that grabs mindshare the way VB did back in 1990.
[1]http://www.amazon.com/Programming-Windows-3-1-Charles-Petzold/dp/1556153953 http://www.amazon.com/Programming-Windows-3-1-Charles-Petzol...
- analog31 12y agoIn 1990, the Win32 API thing seemed to be simply prohibitive for me to approach. In Microsoft's defense, my impression of the Apple Mac was even worse, but my Mac had HyperCard. The introduction of VB is what tipped the scales for me, in favor of Windows, as it was apparent that Apple's interest in HC was waning. Naturally, it's a horses-for-courses thing, but I agree that VB was huge.
- Fritsdehacker 12y agoI agree. Thanks for taking the time tot write this nice summary!
- monstermonster 12y agoI'm a corporate neckbeard. Probably the opposite of everyone here. And a lurker, so hello! I work for a company that ignored the industry trends, we picked a winner with "Petzold style" win32 as you put it. We have a 800kloc 20 year old codebase for a LOB product that hasn't had to be rewritten four times due to the abstraction of the hour being changed. No VB, MFC, no ATL, no Winforms, no C#, no WPF, no ASP, barely any COM. The biggest irony of all of our intentional ignorance of technological progress is that our software works 100% perfectly on Wine on OSX and Linux. It also compiles with GCC under mingw32 and works natively on ReactOS bar a few problems with the OS. Do all these magical abstractions and platforms do you any good? I'm less convinced every day. You're right about mindshare though and as a vendor, that is what pays the bills. Going to fire up textpad, nmake, windbg and write some code now...
- gtirloni 12y agoWhat's the learning curve like for a junior developer joining your company to work on this 800kloc product?
- zamalek 12y ago10mloc product here, about 1 month for a university rookie. Once you get over, I guess, 500kloc you start having teams with extremely distinct responsibilities (50kloc to 800kloc depending on the complexity of each team's responsibility). This means that you only need to care about your slice of the product. Knowing what's going on with the other systems makes you immensely more productive, but you can actually get places with just knowing your slice. In terms of mastering the entire codebase? Most likely 6 years: that's about how long it took me. It's a very strange place to say this, but working on a massive codebase (as opposed to a startup) gives you a very rewarding skillset. I would definitely recommend it if you are considering diving into a massive existing codebase. At the end of the day, the more you know [how to do]...
- monstermonster 12y agoWell I was the last hire in 2004 and we don't have anyone junior in our 3 person team so I can't answer that really other than a ballpark figure. A good win32 programmer with sector experience could probably jump straight in. Someone with no experience of win32 and the sector would probably be 6 months of work for them and us which isn't a problem. We interviewed one guy in 2010 who was a "rockstar" win32 and C# programmer (apparently) who wanted a pile of cash and came well recommended. We dumped him on a machine with notepad and the windows SDK and documentation. No visual studio. He didn't even get a message box on the screen. We just paid the guy who was leaving a pile more cash and I suspect that was his ploy anyway. That's our only problem!
- zamalek 12y ago> Visual Basic v1.0 hit that perfect sweet spot for a bunch of refugees from the DOS text mode 4GL languages to write Windows programs. They didn't have to learn the low-level C language or mess around for months with the Petzold book. Visual Basic had this ingenious abstraction called "forms" that hid the WndProc() monster and its messy switch case statements VB also hit that sweet spot with me. I had no prior advanced programming experience (beyond silly "What is your name?" QBasic and VicBasic). It was a bridge to the OOP landscape we have today, it catered for zero-OOP (modules) but at the same time did actually have those OOP concepts that you could eventually transition to. My nephew is much the same as me, he just "gets" computers and logic in general. I struggle to find a recent language that he can pick up and start having a rewarding experience, like I did with VB.
- jasode 12y ago>I struggle to find a recent language that he can pick up and start having a rewarding experience, like I did with VB. For kids, I recommend Javascript in the web browser. My friend is showing it to his 10-year old son and it's working out great. Javascript benefits include free development tool (notepad or textmate) and cross-platform (Win/Mac/Linux). Javascript will be around for the next 50 years. In my opinion, all the other candidate languages (Python, VB, C#, Java Android, etc) have too much friction in terms of setup (download, then install, etc). One drawback is that it's hard to deploy Javascript as a self-contained exe unless you include paid tools such as Adobe Flex with ActionScript. (That was another strength of VB -- the ability to compile to an exe with a small msvbvm.dll dependency.) But then again, a lot of kids have their own smartphones so he could type out a Javascript game on the pc, fire up a web server on the home wifi, and then point his phone's web browser to it. Instant deployment and gratification.
- j_s 12y agoFWIW, here's a fairly recent discussion of several options for deploying JS as a self-contained exe - things are getting better! Turn Node Applications into Executables https://news.ycombinator.com/item?id=8221233 https://news.ycombinator.com/item?id=8221233