Windows 8 and the software gap !
Not enough apps for Windows 8 new modern UI !
So that is what I hear anyway. So from the perspective of a non-Microsoft language developer, what do I think is part of the problem ?
While I understand the so called Modern UI concept and some of the reasons Microsoft has created it, I find that one serious flaw is failing to appreciate what Windows already has. The Windows Store (aka. Metro) environment is so radically different that it can not even run so called legacy software. There has to be a separate desktop for that, giving it a second class status.
So, didn’t I say I like Windows 8, before this ? Yes, I do. But many of the concepts of Windows store apps could have just as well been implimented using the WIN32 API’s by providing a few extra API’s to tap into. The strength of Windows is its long history. Backward compatiblity is something rare today in the tech industry, but Windows has provided this for many years now. Windows 8 attempts to break this and this may be a seriously failing in it. Yes, the desktop is still very backward compatible with the WIN32 API’s, but will it stay that way.
Another problem I see is Windows RT. OK, I understand the value of ARM for some things, but Intel is doing an amazing job of catch up and Windows and Intel (or AMD) for decades has been like a hand and glove fit. There is nothing wrong with improving CPU’s, but backward compatiblity is also important there too. Now cross platform sounds great in theory, but having been programming since the 80’s, I have found that concentrating on a single platform that “just works” makes life so much easier and you can tap into the power of the platform more fully.
Software developers have not made things any better in my opinion. It hasn’t been enough to just improve programming languages, but too many want to make radical changes to programming languages in the unending quest for the perfect language. Programmers want their tools to solve all their problems, rather than become better programmers. There is nothing wrong with building better tools, but at some point it all comes down to coding. Yes, coding to some is considered a bad word. I like RAD tools just as much as the next guy, but programming is all about coding. Have you ever tried to keep up with all the latest programming lingo today ?
Terms like:
- abstractions
- agile
- design patterns
- fuzzy logic
- obfuscation
- polymorphism
- waterfall model
- namespaces
Now of course there are always going to be unique terms to any trade, but I have found that despite having been programming for a couple decades now, that I some times dislike reading articles about programming because, what should be relatively easy tends to be made overly complex. Windows programming has experienced the same thing. You don’t appreciate how something really looks until someone who has never seen it before sees it for the first time. Are they excited by what they see or are they confused ? Having been a non-Microsoft language programmer for nearly a decade now, I was excited to get a look at the latest Visual Studio for building Windows 8 (Metro) apps. I had once been an avid fan of Visual Basic (now some call it Classic Visual Basic). I had purchased Visual Basic versions 1.0, 2.0 and later 50 Professional. Visual Basic, despite its limitations (performance) was a dream to use. It was easy to use and concentrate on building software quickly. When I switched to PowerBasic, which required an extensive knowledge of the Windows API back then, it was a challenge. I was learning how to program the hard way (like C programmers of old use to). Compared to Visual Basic it was 10 times harder (not the core language, but the GUI stuff using the WIN32 API’s). But I endured and today, much of it is relatively easy for me. Now having endured a decade of learning the Windows API, you would think, anything else would be childs play for me. Not so.
When I downloaded the latest Visual Studio and started to play with it, my first reaction was “what happened to programming ?”. Even by resorting to the Visual Basic part of Visual Studio, nothing felt familar. Object Oriented Programming had changed programming and not for the better, in my opinion. If the editor did not have intellisense, it would be totally unusable. Complexity has ruined programming.
When you break down programming to its lowest level, it is simply the act of moving a lot of bytes around, doing a lot of calculations and trying to make it all mesh together to get some work done. The new Windows 8 style of everything being so flat in appearance, so much open space in apps, etc. does not make it more productive. True, designing for touch is quite different than designing for a PC with a mouse and large screen, but it is not the operating system and a bunch of UI rules which determine how well suited an application is to the device it will be used on, but it is how well the apps developer took into consideration the different device type he expected the app to be run on. What works well with touch may not work well with the mouse and visa versa.
Windows 8 has a lot of potential and I do not consider it a failure as some may. But software is software, no matter the device. Software must be designed to get work done and do it well. Software must take into consideration the devices it will be used on and remember, it isn’t always possible to make something so universal that it works perfectly on all devices. Maybe it would be better of the software had the ability to know what kind of device it is running on and then to morph into what would work best for the specific device it is run on. If run on a tablet, then dynamically change the app so it looks well on a tablet. If it is run on a desktop, then dynamically change so it works well on the desktop, even if it is significantly different looking than the tablet version.
Also software developers need the freedom to be creative. At times the best software comes from those who see the need to do things just a little bit differently, because the situation warrants it. Have you ever noticed that trees are not all alike ? Some trees are well adapted to living in areas with a lot of swamps. Some trees have large bean like pods they drop (for seeds), because in a swamp they stick in the mud and grow better because of their design. Other trees drop acorns or nuts (not in a swamp of course) and they get seedlings to grow and also feed all the squirrels. The point is that some times different makes sense, when it accomplishes something practical.
Software design is similar ! As a programmer, I just want to be able to easily access the core functionality of the operating system without having to jump through hoops. Native procedural based API’s are the simplest form of this. Sure, if you want to add some layers on top (be it OOP or COM) fine, but the core of an operating system needs to be simple and easy to access. This allows a variety of developers to even build new tools for programming applications for the platform. The long time WIN32 API’s had this advantage, though I would not have called them easy. Still they were easily accessable, so programmers could built upon them. But don’t we need high level tools to get work done ?
Of course, but high level languages don’t always mean simple. Sure, I would like to see some of the low level API’s in Windows made a good bit easier. But the high level tools used today don’t appear very easy to me. Visual Studio is overwhelming and not friendly to a new programmer. High level is only beneficial when it really is easy to use and it really accomplishes important tasks. Modern OOP based languages are not easy by any means. Remember, building an application which does its job well is hard enough to begin with. But why make the development of an application any harder or more complex than it needs to be ?
Now many would take issue with me, because I have been a long time BASIC programmer. BASIC is not a professional language some will say. But what is the definition of professional ? Does someone using tools which are too hard to use or more complex than need be make them a professional ? Professionals are those who know how to choose the best tools which make their life easier and more productive, not more complex. If a programmer chooses a language because it is easier to use, more readable (easier to maintain), requires less resources and produces smaller and faster applications, how does that make him a novice rather than a professional ?
In many trades, more experienced tradesmen are often noted for telling the novices of their trade the often heard lesson or rule of “Keep it Simple” (or something similar). Yes, professionals know how to keep it simple, not make things more complex. Microsoft could learn a few things from this. It is time to get back to basics and to “keep it simple”. Windows reimagined doesn’t have to mean a total face lift and more complexity. Why not reimagine Windows and make it easier for developers ? Why not make programming so simple that even a child could do it ? (aren’t they the next generation of developers). While I have yet to tackle building Windows Store apps using a non-Microsoft language yet (that is one of my goals), I currently have been doing so for the desktop for a decade now and making things “easy” , while still providing power features, is my goal.
As a developer of tools (EZGUI) for programmers (PowerBasic programmers), I don’t want to see all my customers build the exact same thing. I want them to build the best they can for their particular need or market. The variety of user interfaces that some of my more experienced customers are designing is surprising. Windows (even previous versions, not just Win8) has so much untapped power in it, it would amaze you. Windows 8 would benefit from having more developers tapping into that power.