Occasionally, in my line of work, I am often asked by customers and clients whether our AppDev learning series cover “Best Practices”. Don’t get me wrong, I’m well aware of Microsoft’s use of the term “Best Practices” which has been written on around every product it sells. But think about it… to me, it seems a loaded question. It is like the classic, “have you stopped beating your wife/husband?” I mean, really… What is the alternative to teaching “Best Practices?”… “Worst Practices?”
Ok, this leads me to question the whole purpose of the “Best Practices” movement; and I'm not alone here (Ted Neward, Tim Berry, Dan North). It seems to me this term implies there are cookie cutter solutions to all developers’ problems. It is equating programming to a cooking recipe; follow these simple steps and your application will be totally secure… or super-efficient… or crash proof… or waterproof. I don’t believe that this Nirvana exists. Compared to other IT disciplines like networking infrastructure, programming clearly provides the widest range of possible solutions to any one problem. How many ways are there to add a user to Active Directory? How many ways are there to sort an array?
Being a programmer is more about having the right tool belt. It's about having the knowledge of many different ways to solve a given problem. Solving issues from the macro level, “Is this something that requires Web Services?”, “Is this something that requires C# or C++?” and the micro level, “Is this better solved by using collections, linked lists or arrays?”, “Should I use a local variable or should I use a global?” If a developer is restricted or bound to one set of solutions and cannot (or does not) take into account the many unique variables that surround the current project, that developer (or perhaps the company that hired the developer) is in trouble.
A quote I like from Alvin Toffler goes, “The illiterate of the 21st century will not be those who cannot read or write, but those who cannot learn, unlearn, and relearn.” Developers must constantly evolve and increase the size of their developer’s belt. Each problem should be analyzed and provided its own unique solution—and keep in mind, solutions today may not be good solutions of tomorrow.
Learn… and relearn my friend…
More than ever, technology is advancing and changing at a neck-breaking speed. Developers are constantly struggling to keep their skills up-to-date and a recent developer survey by Embarcadero shows it. Get a copy of it here.
Buried among the many survey questions relating to Windows 7 development and general developer trends are two that stuck out for me:
- What are the biggest challenges you have as a developer?
- What type of developer activities do you wish you had more time to do?
The number one answer (at 51%) for the first question was "not enough time to accomplish work tasks". The number one answer (at 60%) for the second question was "learn new programming languages and technologies." The second top answer (at 58.6%) for the second question was "keep current skills up to date."
It illustrates the key challenge developers have. They need to get more done with less time and yet, to do that, they need to allocate time to update their skills. New technology keeps coming out that provide developers better tools and techniques that make them more efficient. Developers are contantly looking for ways to maximize their learning time in order to keep their edge.
Are you able to hold onto your edge?
Somaseger announced yesterday the introduction of a new product called Visual Studio LightSwitch. If you were a developer from the 1990's like me then you likely spent time with some of time working with products like Microsoft Access or Microsoft Visual FoxPro. These development tools pre-baked much of the user interface and data access programming making development easier. These tools were esspecially great for prototyping. You could get an application built and in front of your customers/clients quickly providing early feedback and design and features before you invested a ton of development. Of course, this left you with having to explain to your customer/client why you need so much additional time to complete the project.
Applications built using LightSwitch can target WinClients, WebClients, and Windows Azure. You can pull from various data sources like SQL Server, SQL Azure, SharePoint and others. You can see how easy it is to build a LightSwitch app by visiting Jason Zanders blog.
Microsoft is opening this up to a public Beta on August 23rd. This is a product AppDev will keep an eye on to consider in our library of learning materials. If you get a chance to download and review it, please post your comments (good or bad) about the experience.