Wednesday, August 27, 2008

A Part of the Future of Developing Software

I have been running across people asking questions along the lines of "What is the future of real coding?" What with the advent of technologies like SharePoint and Google Sites, will we really need people to develop code in the future. I believe that there are two answers to that question and at their simplest, they are yes and yes. Writing code by hand will never go away entirely. But you may also need to broaden what your definition of 'real' coding is.

First, there will always be a need for developers to write the low level code. Developers that use third generation programming languages rely on the ongoing work of developers that use lower level languages for the operating systems, device drivers and embedded systems that they write their software for. This is the same as SharePoint developers that, while they can create impressive, usable applications without writing a line of ASP, C# or VB .NET, would not be doing so if a bunch of .NET and C++ developers had not written SharePoint to allow for that possibility in the first place. There may be fewer jobs writing business applications in straight ASP.NET, but there probably aren't going to be fewer jobs creating those applications. Each application may not take as many people or as much time to create, but that just allows for more and varied applications to be created.

This leads me to the second yes. Are you less of a developer because you use a third generation language to write programs than a person who still develops in assembly language? Should a developer that uses SharePoint not be considered a 'real' developer if they don't use ASP and C# or VB? Personally, I don't think so. I don't believe a good developer is defined so simply as being a person that is literate in a particular computer language. The true abilities that make a good developer are a combination of understanding to determine what problems need to be solved; organization to manage the complexity of the problem; talent to be able to think on multiple abstract levels to realize the solution; and discipline to make sure that the solution works correctly, is documented, is easy to maintain and is delivered on time.

SharePoint is not a platform that someone can just pick up and meet those goals. It takes a good amount of study, planning and energy to create a SharePoint site that won't be forgotten about in three months. And that is before you open up Visual Studio if you even need to. While I will be the last to admit that you can create an outstanding SharePoint site without any C# or VB today, that doesn't mean that you won't be able to someday. But, the advent of a truly 'code-less' platform will not mean that there will be no need for developers for that platform, it just means that one of the less important skills of being a developer, the literacy in a third generation coding laguage, will be further marginalized.

Monday, August 25, 2008

Microsoft Quality

I read a question on the internet today that basically asked why Microsoft quality was so bad compared to Apple. The author gave the example of his printer not working with Vista. Wow, where to begin? Oh, I am a Microsoft supporter so if that's not the direction you thought this was going, you might want to read something else.

The simplest reason that your printer does not work with Vista is that the manufacturer of your printer did not want to bother making sure that their software was compatible with the new operating system. The fact that your printer does not work with Vista is not Microsoft's fault in any way. Oh sure, Microsoft could go out of their way and try to accommodate you and your problem, but then they would need to do that for everyone and all the printers they bought from lazy third parties. No one does that, not even Apple. Oh wait, Microsoft does do that.

Microsoft writes compatibility fix after compatibility fix into every operating system they've written since Windows 3. The problem is that the x86 hardware and Microsoft software architectures are so much more wide open than Apple that it is impossible for one company even the size of Microsoft to make sure everyone is covered. I am sorry that they missed your particular compatibility problem. I am. But, no other operating system writer would have even tried in the first place.

Once you accept the fact that most 'Microsoft quality issues' are the vast majority of the time not Microsoft's fault, we can start talking about the differences between Apple and Microsoft that cause so many more issues on the x86/MS platform. Apple does provide a tighter user experience I'll admit that. Apple products get the job done in ways that people want at a price many are willing to pay for. I'm not writing this to say that one is good and the other is evil, or that one is inherently better than the other. I'm just writing it to say that they have different priorities.

Apple may be considered a creative company by some, but their biggest strength is polish. Oh, they can polish anything, from marketing campaigns to computer hardware, they're great at it. And I won't say that isn't important, it's very important. It is exactly that polish that creates the Apple user experiences that everyone loves. But they don't write the guts of their software and they don't create the guts of their machines anymore. A situation I don't find very creative or innovative. They pick up existing technology and they lock down everything they can which is why their computers are able to provide a more stable experience. And because of that lock down, Apple products don't get the job done for me. They might be x86 machines right now, but I can't play my media on them. Every so many years when they rewrite their OS they make a conscious decision that existing software will not run on the new OS. My peripherals and consumer electronics don't work with their operating systems. Their hardware is more expensive for the same performance. I don't trust that Apple cares about giving their users options now or cares about their users' long term investments in Apple as a platform.

But my software has always worked when Microsoft has released a new OS. I rarely have a detrimental compatibility problem with MS products and never one that isn't fixed soon enough for me. I just don't upgrade until it's all good. The open direction Microsoft has decided to go means that there are many more entities in their game. Sometimes this is bad, from lazy third parties to virus writers, x86/MS just has more of them. But usually the open platform is a good thing. From video cards and printers to any type of software, there are many more people creating for x86/MS than for Apple. I like this. To me, it means more options. It is the open architectures of x86/MS that have allowed for so many choices and advancements in hardware and software over the years and will continue to do so into the future. The Mac would not exist in its current form without x86/MS. And I find it very hard to believe that something better would have coallesced given the lack of history of Apple as an innovator of hardware or software with staying power.

Staying power in hardware and software is important. This might not be a big deal to the minority that can afford to buy and prioritize buying not only more expensive Apple hardware, but also buying another copy of most of their software from time to time. But I don't want to spend that money and I know I'm not alone. Fine Apples can be dual booted now and so I wouldn't need to buy new software, but if all of my software runs on MS, why would I need the Mac OS on the machine at all? Why would I pay more money for one of their machines? I just don't think it's worth it. And in the business realm, I don't think you could numerically or otherwise prove that a company with 20 years of x86/MS platforms investment would ever make back the money it would cost to transition. Linux may be free, but all the man hours to rewrite software, install, support, re-educate users etc. is not. And I won't even dig too deep into the total cost of ownership debate. What with everything being GUI based now, it's probably about the same anyway. But Apple's history of jettisoning OS's makes it a risky proposition to start even a gradual transition. It might be Linux based now, but Apple has yet to prove that they are willing to tie themselves to any technology. And even if they do stick with Linux, I'm still skeptical that they will ever commit to creating a platform that will be anywhere near as backwards compatible as Microsoft has been over the years. I'm not saying that MS was perfect in that regard, just that they have been better than everyone else and good enough for me.

In the end, deciding if Apple is a better platform than Microsoft for your purposes is a give and take on what is important to you. Do you want the open nature of the x86/MS platform and the lower cost of hardware? Do you want all the hardware upgrade, peripheral and software options that come with such a platform? Are you willing to take a bit more responsibility to make sure your systems run smoothly? On the flip side, are you willing to pay more for hardware, have fewer options and probably re-buy all your software from time to time in order to get the tighter Apple user experience? You can tell where my preferences lie, but I don't think other people are stupid for not agreeing with me. I just think that people use the tools that get the job done best for them.

Monday, August 18, 2008

Anti Virus Experience

As the title might suggest, I ran into a situation with my anti virus software over the weekend. The software was Norton AntiVirus. To be honest, I forget what my original annoyance with the product was. It was completely overshadowed by my miserable experience trying to cancel my subscription to the product. I was eventually able to cancel my subscription, I think, but that sense of uncertainty is yet another aspect of this ordeal I highly recommend other people avoid.

My journey to prevent Symantec from taking any more of my money started out on their web site. I was completely unable to find any information about my account even though they require you to create one to use their products. After much clicking around, I ended up at a page deep in their support site. I found a Flash video of all things that explains how to cancel your subscription. Until recently, this information could not be indexed by any web search engine and at this point no one could convince me this was an accident on the part of Symantec.

So I fill out the form that the flash video directs me to and submit it. But I have this little voice nagging me. "If Symantec is this bunch of computer experts, why do I need to fill out a form that appears to need manual intervention to cancel my account. They can figure out who I am. When I install the software, they require me to sign into an account. Why can't I sign into that account and just cancel my subscription?" This prompted me to search around on the internet and found out that there are many complaints about Symantec's customer service in regards to account management. Many of the complaints take some form of "I filled out the form before my card was charged, my card was charged anyway and Symantec said it was my fault. I then had to take it up with my credit card company which was easy, but it shouldn't have come to that." And I agree. And I wasn't convinced that my subscription would actually get canceled.

At this point I remembered about all those emails that you receive when you sign up for new accounts on the internet. Within one of those emails I found an address for Norton account management. Wow, the account management page I was searching for. I found a list of my products and a convenient little 'cancel subscription' button. I wonder why there aren't any easy to find links to this site on Symantec's main web site. Fine, I'm not that naive. I don't wonder at all. But I do wonder why the people in charge of making this decision think that it won't upset people greatly.

For some strange reason, I was still not entirely convinced that my subscription was truly deactivated. I would hazard a guess that the reason was all the distrust that Symantec so cleverly engineered their web site to so efficiently create. However, Symantec was nice enough to inform me that my credit card on file with them was going to expire before my next auto renewal and that was the only warm, fuzzy feeling that the customer service features of the Symantec web site were able to instill in me.

I promptly went out and researched some other antivirus software. The one I chose was BitDefender. While they provide more or less the same services at comparable prices, the best selling point for me was the first link on the top most navigation menu 'My BitDefender'. I couldn't log in yet, but I was sold. They didn't disappoint either. After buying the product and creating my account I clicked on that link. I was sent to a log in page. After logging in I clicked on the 'My Page' link and was treated to a list of my products, their status, and actions to be taken including 'renew'. Oh, and the software seems to be doing a good job so far and is easy enough to use as well. Keep up the great work BitDefender.

As a software entrepreneur, I could draw many conclusions from this experience on the importance of quality customer experiences, but I just don't need to. It's already been done. Successful entrepreneurs and writers such as Joel Spolsky and Eric Sink have already put these things down on paper in much more understandable ways than I ever could. That and I'm just too busy writing my own software to take the time. =)