Microsoft Surface–A home run or a foul ball?

Neither.  First of all, it should be noted throughout the Microsoft web site that “Images are design renderings and not photographs.”  It is important to note that what you see isn’t necessarily what you get.

Success points.
Finally there is a tablet that is designed for Windows as opposed to a tablet designed for almost anything that just happens to be hosting a Windows operating system.  Like the Apple ecosystem that has worked so well, Microsoft realizes that getting the software and the hardware working well together is one of the features that makes the iOS line a success.  Not because it is the best, but that it works well together.
The design is both good and bad.  I think that overall it is a very clean device that looks good with only a single major visual flaw:  the windows logo on the front.  It really needs to go.  There is a big logo on the back, leave that one and clean up the front.  Other than that there don’t appear to be, initially, any significant design issues. The magnesium cover I am expecting to be both strong and lightweight.

The integrated kick stand looks like a solid piece of engineering that is required for most tablets.
The plethora of connectivity options looks like it will connect up to almost any environment and allow you to hook up most devices.  My biggest complaint about the iPad is the limited connectivity options.  While this has been sort of resolved by third parties, the fact that the options are built into the Surface is a very good thing.

Things to work on.

I can see the lawyers getting ready for this.  Microsoft needs to ensure that the price it offers for the ARM version of Surface is able to be matched by competitors like ASUS, so it is going to need to be very careful about licensing Windows 8 RT and Office at a price which allows other companies to compete.  If not, you can expect to see anti-trust lawsuits right away.  Why does Apple get away with it?  They don’t pretend to offer iOS to anyone else.  You want iOS you need to be Apple hardware.  Microsoft relies on others to manufacture hardware (yes, even with Surface) and if it can be shown that they are acting in a manner which prohibits competition then the lawyers are going to be jumping all over it.

Microsoft still likes taking choices away from people.  While the think the integrated kickstand is an interesting idea, what about portrait?  Why must it be in landscape mode and why must it be in a very specific landscape mode?  Did you notice the Windows logo on the front of the device?  That won’t look good upside down so they force the table to be only one way up for landscape.  Portrait mode?  Why bother?  There were some obvious reasons why (Touch Cover and Type Cover), but taking away choice is what makes people annoyed.  At the moment this looks like nothing more than a very thin netbook, not a tablet.

22 degree angle to the onboard camera?  Really?  I have to twist the damn thing in my hands if I want to take a picture?  This is not a user friendly option.  The tablet is meant to be used on the go and to me that means free hand or sitting with friends at a restaurant.  I see something and I pick up my tablet to snap a picture and I twist my hands to get the damn thing lined up.  Seriously?  This looks like a business item, not a consumer item.

The two different Surface models, with two completely different architectures, is going to confuse people.  “Why can’t I run the same apps as my friend?  Why can I download something from the App Store that they can’t?”  While Microsoft had to do it, calling them both Surface is going to confuse the issue.  Simplicity is the rule.

Unknowns

Tactile feedback is quite important when typing and that is one of the reasons why typing on a piece of glass can be so annoying as you can’t feel when you have pressed a key.  I don’t know how the two different covers are going to feel.  My gut feeling is that the Touch Cover is going to be too thin to provide the tactile response that I am looking for while typing.  I could be wrong but I am willing to give them the benefit of the doubt.

I am a little confused over the marketing.  It appears to be targeted at consumers (see all the pictures on the Microsoft web site), but many of the design decisions (no rotation capability, 22 degree LifeCam, keyboard that requires special connectivity) all seem to be focused on business.  Apple focused on the consumer and entertainment and entered business almost by accident.  Microsoft looks like it wants to tackle both, but isn’t sure which one is important.

iPad Killer?

Don’t know.  I think Microsoft will sell millions of tablets.  There will be a pent up demand and they will sell millions as soon as the doors open.  Will the demand be there long term?  I don’t know.  They need to straighten out their marketing.  They need to make it seamless and inexpensive to get “apps”.  They need to cannibalize their Windows desktop to sell their Windows tablet.  If you have to pay full price to run Office on your tablet and an additional license for Office on your desktop then we’re going to have a problem.
Microsoft is trying to straddle two markets:  tech savvy consumer and the enterprise.  Without really good marketing they are only going to take one, not both.  The marketing so far has been light weight and … fluffy.  Only time will tell whether or not they can achieve the right balance.


A bit of a Trend

I’m seeing a bit of a trend thee days in the Blogosphere that seems to be rising quite rapidly this year.  I’m not sure if it started with the Learn to Code challenge from Codeacademy or whether it has been building for a while and I’ve only just noticed it now, but there are a lot of bloggers out there complaining about, well let’s call it The State of Programming.

They all seem to start with the premise that there is a lot of common sense that is not being used and end up with dispensing a lot of hints and tips about how to do things correctly.  These hints and tips range from:

  • Keeping the code size to its smallest possible state.  Constant refactoring should allow you to reduce the complexity of the code and increase the flexibility of that same code base.
  • Don’t implement things that you don’t need.  Sure embedding Twitter or Facebook into your application might seem “neat” or “cool”, but unless it provides a distinct advantage to your user, don’t do it.
  • Just because an application is complex does not mean that it is good/well designed/well written/the answer to your prayers.  The best code is the simplest code.  Does it do 100% of what you think you need?  Maybe not, but I bet it does 80% of what you need at 20% of the price.
  • Water-Scrum-Fall is most likely what you are doing, not pure Agile.  Don’t look at me, read the report and see if you agree.
  • The tool you are using is not the reason why your project is large/cumbersome/unwieldy/poorly tested.  “It’s a poor carpenter who blames his tools”.

Now, it may be that I am sleep blogging under a whole host of names and nationalities, but I don’t think so.  I’m seeing it from older people (Nick Bradbury turned 45 in May),  people who have been in the industry for a long period of time and even on t-shirts.  Much like everything else these days it is polarizing a group of people (programmers/developers) and causing inter-personal issues and intra-team issues within organizations.

The question behind all of this is quite simple:  is the standard for programmers/developers rising or falling?  What do you think?

Getting Help

First of all, let me state that this is not meant as an insult. 

Secondly, most people in IT suck at designing databases.

Third, it’s not their fault.

There is an art to designing a database correctly, from determining the correct number of filegroups, the indexes that need to be created, the clustered keys, the primary keys, when to use GUIDs vs. Identity columns and when to use stored procedures vs. dynamic SQL.  There is a lot to learn to become really good at it and when you come across someone who is good at it you know. 

I worked with this guy who would stare at the diagram of the tables for a long time, not moving, just tapping his fingers.  Suddenly he would start typing madly and in ten minutes he would have solved a couple of the hardest database issues you could throw at him.  He was never sure how he did it, but he said that he visualized the tables in his head and all of the primary and foreign keys and moved things around until they looked “right”.  He was very good at squeezing every last bit of performance he could out of the system.

Not everyone can do that.  Not everyone should be able to do that.

What you need to be good at is recognizing when you need help, recognizing that there is an issue in front of you that goes beyond your expertise and asking for help.  Too often our egos stand in the way of us actually getting the help we require because we believe that others expect us to somehow know everything about everything.  It doesn’t work.  Know enough to know when to get help.  That is the key to success.