In general terms, setting aside the obvious advances in technology, the biggest changes I have seen have been in the attitudes towards disciplines like configuration management, especially in the software development arena.
When I started my career very few people recognised the term 'configuration management', nowadays it is fairly common currency in software development, albeit often only implemented superficially.
Given the pace and scope of projects that I have been involved in it's difficult to point to one specific challenge as the 'biggest challenge', they're all big at the time.
The start of each engagement is simultaneously the most interesting and exciting time, but also the most daunting. The biggest challenge in each contract is working out where to start; where to be most effective in the shorted time. Every contract is unique in that there is no one plan that suits them all.
My brain (I'm rather attached to it).
I don't have a particular prejudice about which tools I use. Each situation requires different functionality and each client has different constraints. The most common mistake made by many people is to impose a solution just because it uses their favourite tool, rather than letting the situation dictate the tool.
If pressed to implement a simple CM system for a software development team (assuming no special requirements), I would use something like:
- Subversion of Git for the version control tool;
- Trac or Bugzilla for issue tracking;
- CruiseControl or Hudson for continuous integration builds; and,
- MediaWiki if the project needed a wiki tool (assuming they're not using Trac's).
This simple setup provides the core features of a good SCM solution at low cost and can be implemented in a matter of hours (even training users takes only a little time).
That said, I would resist such a 'shoot from the hip' implementation in all but the most extreme circumstances. Implement in haste, repent at leisure.
Obviously this depends on your situation, and an interview never provides a true picture of that situation.
The first step is to understand the issues to be addressed. This means talking to everyone involved, finding out what the current situation really is, and establishing what is needed (and how this is different to what people want). Once this is done a simple gap analysis provides the basis for planning and implementation.
There is a world of difference between implementing a simple software control system for a team of ten engineers and implementing a development and deployment environment for thousands of engineers distributed globally.
Yes, some people do still ask this question.
Do I go with the stock reply 'I'm just such a perfectionist', or perhaps the sarcastic 'putting up with this sort of question'?
Frankly, if this is the best question you can think of to test a candidate then please don't trouble yourself contacting me.
I guess that makes my biggest weakness being unable to put up with stupid interview questions.
This is rather like the 'What is your main weakness?' question; lacking in imagination.
If pressed to answer I guess my biggest strength is being able to suppress my laughter when asked facile interview questions.