One of the things I couldn't do at my last job was deliver training and consulting on non-Microsoft technology projects. I find myself these days teaching Agile concepts for developers in C/C++, Java and .NET. Each of these languages has its own frameworks for unit testing and mock objects. each one of these languages has its strengths and weaknesses. I'm learning more and more each day, and its a wonderful experience.
Specifically, I'm opening up to whole new streams of thought about various things. Thoughts that come from a totally different non-MS oriented world, which sometimes have totally different perspectives on things such as architecture, design and working habits. Some of these are contradictory, some are not. If anything, I'm starting to think about problems and solutions with more possible angles.
Today, for example, I'm working on the Eclipse IDE and it's very very cool. Lots of the features I really liked with IntelliJ IDEA are there, although not as well polished, they provide a great coding experience. Again, sometimes better than Visual Studio .NET 2003 and even 2005. One of the things I miss most is the automatic Intellisense pop up when using VS.NET 2005. It's a great feature and I hate having to press CTRL+Space so much. I've become such a lazy coder.
It sometimes amazes me how people can work day in and day out with the same tool and still know so little about how to use it more efficiently. For example, I once came across some very seasoned C++ developers who were using Visual Studio 6.0. Personally, I believe that Visual Studio 6.0 C++ coding experience is one of the worst out there. Still, those people were drudging on using it, because they had little choice in the matter. They were forced to do it by the company they were working in.
Although VS 6.0 sucks in many ways, it does try to provide *some" usability features. For example -adding a new class can be a simple step of right clicking on the class explorer tree in the IDE and selecting "New Class". They typing in the name in the wizard dialog. From that moment on a class is added - a cpp and an h file are added to the solution with matching class name and constructor code already there. Not much but it's a hell of a lot better than ding this god-awful thing yourself every time, wouldn't you say?
Still, I saw these (I'll say again) *seasoned* developers adding classes *manually* with copy pasting files in the file system, renaming them, then removing unneeded code from the file (they were copying other cpp and h files from the existing solution. The same patterns happened when they had to add a new method to the class. They did "copy-paste" development and copied a method implementation, then moved on to the .h file and pasted the name there too.
All the while they could just have right clicked on the class name in the explorer and chose the "add method" wizard. Same thing with adding a variable.
Come on people! How could you not even try and see if this is possible? I would imagine that after doing so for the 1000th time you would say to yourself "hmm, is there a better way of maybe... automating this?"
Now, these same people could not live without Visual-Assist - one of the only productivity Addins for Visual C++ 6.0. So it's not like they weren't productivity oriented - they just didn't try hard enough(or at all) to make their lives better. I find this quality quite amazing, frankly.
To me, true "developers" not "programmers" are productivity seekers no less than they are "quality seekers".
I see this sort of thing in a lot of places though. People are *amazed* when they see Resharper for the first time. People are *amazed* when they see that there is such a thing as DSWatch, Reflector, CodeSmith, CodeSmart and many many more.
People should not be amazed. They should be getting used to the fact that most problems today (productivity problems included) have been at least partially solved for most people. That means that if something is bugging you about how you do things, you're probably not the first one to feel that. Try and see if someone has a solution to this problem. Who knows, there might be one, and it might even be totally free.