I started in the IT industry back in the early 1990s, working for Ford Company in the U.K. Since then I've observed with interest the trends in the skill set required to be successful in our industry.
Looking back, I realize I was extremely fortunate to work for such a progressive company when IT was merely a fledgling career path. My first job was in marketing systems with a James Martins CASE (Computer Aided Systems Engineering) tool called IEF (or Information Engineering Facility, now CA Gen), building management information systems for monitoring and reporting vehicle production and dealer stock levels in our European markets.
Some of the practices we followed back then were similar to the Agile approaches we know today, such as Scrum and XP. We used the early Agile methodology Rapid Applicant Development (RAD) approach, working closely with a business representative who was the business expert. We didn't have formal iterations back then, but we conducted weekly workshops during which we could prototype screens and data objects that we would then build and demo in the following session. We were very light on documentation (sometimes there was none) and focused on producing working software.
We did it all. As systems analysts, we were truly-cross functional and would cover the full systems development life cycle. We data-modeled, performed analysis (and yes, we actually spoke to our customer), wrote the code, designed the screens, tested each other's code, and implemented and supported the applications we produced. I recollect that there was not a business analyst, project manager, or tester in sight!
As my career as a consultant progressed, I moved to other companies and was exposed to different methods and techniques. The roles I just listed began to emerge, with distinct separations among them. Developers stopped talking to customers, as this was considered wasteful and unproductive. Project plans began to appear, as did weighty tomes of detailed requirements.
So much for the trip down memory lane. What's the point? My point is that we have gone through a natural maturity process in our profession. We started as generalists (at least I did), doing what was needed. We later moved to specialization as technology and tools became more complex. Now, as part of the Agile movement, I see us returning to that generalist approach — with improved tools and a need for lower cost and overhead.
I also see a further trend in the younger generation joining the work force, a trend of more technical analysts and testers, and of developers with better communication skills. All of them are accepting Agile as the way to work. In my view, there is no place in the modern Agile environment for analysts who just want to talk to the customer and write down requirements, nor is there a place for the developer who wants to just sit and write code, or for testers who just want to push buttons. It isn't a case of being a jack of all trades and master of none, but simply a shift in the skills required to do our jobs efficiently. There is now a need for what I have heard called "T-shaped" individuals, those having a depth of skill in one area but the capacity to perform other functions as required.
I'm sure these trends will continue to change as we constantly inspect and adapt what and how we do, but for now the return of the generalist is a fact. As the Agile movement gains momentum (after several false dawns in the past decade), I believe we are finally coming of age and joining the mainstream.