So if I am a Business guy and I want a Web Site... I could just buy one, but I want to actually make something, so how do I start? I know a little bit about this stuff, so I get a domain, I put together some rough HTML and throw it up on the domain.
This is where we are now...
I now have an identity, what's next? Define a bit about what it does.
I've been developing databases and software for nearly 30 years, that's more than half my life…
Why do I want to keep doing it?
OK, enough said, it's sort of the core of my being. Back to the reflection… I started thinking "What really launched my career?" I mean, I have gone from a simple kid with no understanding of what I was doing, hacking away at graphics on an Atari 800, to being a major architectural influence (to at least the people I work with).
So how did that happen? Years of study? Intense courses? Well, I admit I have done some of that, but it's not what really made a difference, it usually left me frustrated and confused. I've spent months untangling what I learned into what I could use.
Then what did it?
VB?!? As in Visual Basic? Yup. Really? Explain!
OK, I have to digress a little…
In the Late 1980s (before the internet) I was building a point-of-sale company. Way back then we didn't have things like PayPal, QuickBooks, Mint.com and iPhones with credit card readers in them. After all, the "Personal Computer" was even fairly new. After running a small Computer Store selling Kaypro’s and what later became Dell, I had decided to specialize on point-of-sale instead of being a general PC shop that tried to do everything. Small Business owners had very little choice at the time if they needed cash registers, inventory control, invoicing, employee time keeping, etc. They could buy the "Big Iron" from companies like IBM and NCR but few could afford it. There was a great demand for someone to come in and serve the Small to Medium Business sector and consolidate all this stuff into something people could understand and afford.
So, I did that. I invented a new Cash Register that was actually made from a PC (Intel 286 actually). This thing was basically a cash drawer with a small computer that sat on top and covered in a shell. The average computer back then was huge. I manufactured the chassis and imported the guts in the form of motherboard, memory and disk drive from a small company in Taiwan and then assembled it all together in the US to make my point-of-sale system.
I found some software to run the thing I had created from nothing. After learning it and getting it to operate my equipment, I bought the rights to the software from the company. I now had an MS-DOS program written in Quick Basic that pretty much did what I needed. I really wanted this to run on Windows which was really new and fighting with Apple for dominance (some things never change…)
At the time, the only way to program for Windows 2.0 was C++. So I hired some really smart programmers because I didn't really understand C++ and didn't want to learn it... Again… I had dabbled with it before, but C++ for Windows was a beast and I thought I was more of a hardware guy. Bottom line, they pulled it off, at enormous expense, and I didn't really want to be in the hardware business anymore. So what does an entrepreneur do? In 1992 I sold the company and moved to the Bahamas.
Sounds like you had some success, but what does this have to do with VB? OK, enough digression.
While in the Bahamas sipping cool beverages on the beach, I heard about this new programming tool called Visual Basic. It sounded like something interesting to me because I knew BASIC really well. It also was supposed to make programming for Windows easy. I had tried all kinds of things at the time, there where several attempts at making Windows programming easier but they all sucked. I won't bother naming them but there were a bunch (and they all failed and don’t exist anymore) that used a scripting language and either compiled down to C or were so slow they were unusable. They where also what we called CASE tools but these were super complex and expensive.
I flew to Miami and got my hands on a copy of VB installed it on my laptop and started looking at what VB could do.
I could relate most of the stuff I learned from my developers talking about events being different than the procedural stuff we had been using before… This was a weird but entirely fun kind of BASIC. In about and hour I had written a Windows program that could create a Contact, complete with a couple forms, buttons, menus and a dialog box best of all, I didn't need a single pointer of header file. In C++ this would have taken (me) a month. I was sold.
This was in the summer of 1992 and this was VB 1. It was pretty limited in what it could do, but it seriously took the mind numbing drudgery out of making a simple Windows Program. To write real business applications a I really needed some sort of Database. VB didn't have one. I tried my old techniques, writing Linked Lists to disk and that did work for the stuff I mostly needed and I was getting pretty good at this. I moved back to the States and landed in Phoenix. I started automating lots of little business applications and then along came Access. Access had Basic in it, but slightly different from VB and needed a pretty hefty license. About the same time VB upgraded to version 3 with a Jet Interface to Access. Now I was creating real programs for real companies like Intel in no time. Access and VB were really gaining steam and so was I. This was my turning point as I became an Architect.
Then what made VB great? Was it Basic? Certainly not, indeed it was easier to use than C. Was it Access? Nope, but it definitely garnered the hobbyist corner and spawned countless developers who got jobs in companies.
It looked like it was SQL Server. As soon as we learned to connect VB with SQL it was game over. VB shot up to one of the the most widely used language at the time. Recently, I started really thinking about this. Was it really SQL? It was, but it wasn't actually SQL, nope.
I now firmly believe it was removing the pain of Architecture as well as the complexity of Windows. Almost everything we wrote was code behind forms straight to a database. Where the programs perfect and did they follow all the patterns of success? Not really, but they got out the door.
In recent times, I have seen teams working in Scrum take a year to put out one Service. Sure they show incremental updates every few weeks to keep the client off their back, but this is not getting things out the door the way that VB did.
I have spent the last 20 years helping to make VB nearly as complex as C++. It's now on equal parity to C# (including pointers, lambdas, Inversion of Control and other seriously complex things…) Is that bad? No, it's most definitely good. The problem is that since VB.Net was introduced that magic that made VB truly great has eroded to the point it has been lost to increased complexity and the language has declined dramatically in popularity since 2008.
Phones and Tablets change everything, really they do. The customer needs simple and simple is getting met with the Phone and Tablet. At the same time, business needs reliability, accountability and adaptability. If they don't have these things, they are reinventing the wheel every time they write software.
I want THIS: http://www.youtube.com/watch?v=eaMosTtWz10 What's even more amazing it that I have something capable of this that I carry around EVERY DAY and have done so for at least 2 years. Alright, the hardware is actually available today, the software isn't… and what is isn’t cheap. How are we going to program all that complex stuff? Is it really going to be teams of Designers, Developers, Architects, PMs and QA for every small application? I seriously doubt it.
That means that our entire mentality about how we write software has to change. WE MUST stop writing software the same way we have been doing it for the last 25+ years. Does this mean dump Layered Architectures, IoC/DI, Design Patterns, SOA, Behaviors, Commands and all the proven things we have learned? Of course not. It does mean we have to seriously automate all that stuff and we have the tools available to accomplish it.
That automation is not here in a complete package and I don't see an immediate candidate for it yet. Our tools are better, but they are still way too complex and that complexity just keeps rising. We need automated complexity that follows these Design Patterns for us, in the way we need to Architect them, with the mixed languages of our choice. We are on the verge of this, but no one has put it all together yet.
Writing thousands, or even hundreds of lines of handcrafted code has to stop. It's really not necessary any more. This can all be accomplished with DSLs, Compiler as a Service Templates of well known Patterns, Code Generation, and proper IoC/DI.
Who is going to write the VB of Modern Software Architecture?
I am working to launch The Visual Basic Network to do exactly that. This is about the Magic that was VB, not necessarily the language. Though several parts will be written in VB.Net.
This is an Open Source Project that will be pulling in lots of information, sorting, analyzing and forking it to built something truly magical.
Want to be a part of that? Keep checking back as I incrementally release iterative updates.
Yes, I know this layout completely suxors... That's all part of the plan, watch it emerge into something different.