Becoming a software development expert
After reading James Blach’s article on Becoming a software testing expert, I thought the web was lacking a good blog article on “becoming a software development expert”, so here it is. 🙂
Becoming an expert in anything is never easy and takes a lot of time and attention. There are three ways to become an expert. You can think by yourself and read good books without taking everything for granted, this is the noblest way. You can learn by imitating others and following trends, this is the easiest way. You can learn by personnal experience, always comparing different methods, this is the longest and most painful way. So, let me give you some worthful advice on software development expertise.
First, you should be passionate about software engineering and read a few books about programming, designing software and surviving in the corporate world 😉 like The Career Programmer: Guerilla Tactics for an Imperfect World.
You should have very good writing skills since writing code is not fundamentally different from writing a book except that the reader is far more difficult to content. Besides, the first steps of a project require to formalize the project requirement and there are few technical writers who can handle this kind of job properly on the behalf of the software developer. You should know design methods and UML methodologies.
Then, you should be familiar with the main programming languages like C++, Java and PHP. You should know a lot of languages by experience. For the projects involving IA, you might want to use prolog, lisp or scheme but if you require a very short response time, you would prefer a compiled language anyway or a better hardware 😉 .
Problems of expertise, maintenability and portability are also to take under consideration. A project which lasts longer in time or which uses more human resources, requires better infrastructure, that sometimes means a better documentation system or new procedures.
You must know the main development cycles and XP. You must be able to discuss their advantages. But you should customize the methods you use to fit your project needs. You should be able to explain what software development methods you use in less than a minute.
You should read software reviews and give special attention to user ratings. You should be able to name great software products and explain why they are so great.
You should know the IEEE standards and be able to sum them up in five minutes. Because in the corporate world, your boss won’t give you any more time. BTW try to master the language of the management. 😉
You should know a lot of software development technologies and you should know their benefits and their drawbacks. This is specially true for new technologies like RubyOnRails or C#.
You should know the software configuration management processes. It greatly secures the developent process if the instructions are followed. I would recommend using SVN over CVS, Darcs, or Visual Source Safe for performance.
Remember that everyone can become an expert in any field if passionate enough and that software is still a young industry so be indulgeous. 😉