My name is Steven Oberholzer and I've been in the software development game for the past 14 years. It is a passion of mine, and I strongly believe in the KISS (Keep It Simple Stupid) principle. Most systems that are being developed are failures, because they don't adhere to this principle, but tend to be overly complex in design, or developed using technologies that are new and not well known to the programmers.
To demonstrate this statement, I'm going to reiterate a well known fact: Over the last few years, Microsoft has brought out a lot of exciting and interesting technologies. Nothing wrong with that, as a programmer, it is vital to stay up to date with the latest and greatest. A trend has emerged though from these developments. Programmers and software development houses, use customers to learn new technologies. They zealously jump into writing software, using new (not matured and stable) technologies, and end up making their lives and the lives of their customers a misery.
That said, I believe that a customer's needs should come first, and if it means using a technology that is 10 years old to meet those needs... well then so be it. One cannot use customers as guinea pigs try out new technologies. Doing so is unethical, because the customer is now paying your "school fees", and also not receiving a service that he/she is paying for. This result in systems being developed, going over budget, being more complex than required, and impossible to maintain by the poor developer(s) that stay behind if the system is lucky enough to see the light of the day.
A better approach in a situation like that would have been to develop the system using tried-and-tested technologies, in other words older and more stable and reliable technologies. After release of the system, i.e. when the customer has a way to meet their needs, one can always revisit the system and either upgrade it, or totally rewrite it. It is always a good idea to let the technology mature a bit before embarking on this journey. By the time that you do the "version 2" of the system, you know more about the needs of the customer, and the customer has had time to think about what they want in a solution.
Enough rambling... I'm a practical person. The idea is to get it out, and once it is out, we can improve on it, "it" being the solution, program or other means to an end...
My core skills are in the .NET world, and I currently develop solutions primarily using MOSS2007, ASP.NET, WinForms, C# and SQL Server. I also have a healthy respect for the Open Source world, and have done some projects using mySQL and PHP. I also keep a keen eye on the new developments in the Ubuntu, SuSE and Fedora Linux distributions, as well as the Mono Framework - a Linux distribution of the .NET Framework. Other skills include older languages like C++ and VB6, the ability to setup computers, networks, gather and document requirements, help writing, training. I'm not the typical programmer that sits in a corner and is never heard. Far from it...
Some of my favorite tools are AutoIT, and VMWare Player 3. AutoIT is a tiny script-based tool that you can use to automate menial tasks, record mouse movements, keystrokes and things like that. This tool is free, and you can download it from http://www.autoitscript.com. What is beautiful with this tool, is that scripts can be compiled into "clean" executables, i.e. executables that don't require runtime files. From VMWare Player 3 on, you have the ability to create Virtual Machines, and the setup is only 90MB. Older versions only had the ability to run VM's. You can get this tool from http://www.vmware.com. Both of these tools are FREE.
I wish that this industry could become a more professional industry... one that could be compared with industries such as engineering.