Dean Wampler, one of the ever great ObjectMentor team, writes about the need to incorporate multiple development languages into a project.
I agree with most of the things he said. It is important to choose the correct tool for the correct job. In our projects we have C#, C++, VB (6), SQL, HTML and VB script. Usually, the developers we got on board were one of two kinds: C++/C# and VB/HTML/T-SQL. The distinction was their purpose in the team. The GUI side, where RAD was needed, came from the VB side, while algorithmic and hardware driver implementers came from the C++ side. So basically, the make up of the team, is actually divided by those skills.
Now we have a framework of tasks based on the skills. But the people coming from the RAD side of the road have less OO skills and low level API knowledge. So that dictates not only their current tasks, but also their next. So now we’re having two career paths inside the development organization.
And this is OK to a point. I think the problem starts with maintenance. We chose a technology and we needed to stick with it. And coming up with people today who know VB6 gets harder. Not to mention that moving away from VB6 is hard because of the large code base, and VB is currently not so tempting for potentially employees.
So my point is this: Yes, it’s OK to use the most fit technology (and while we’re at it, I agree mostly with the “just-in-time optimization” idea although, I’ve pre-selected C++ for a driver communication over VB). But there’s also a maintenance cost.
Today (if pressed really hard) I’d write in VB components with interfaces, and using factories in order for the ability to later unplug it, and place a C# component instead. I’d use C++ COM object in order to be able to replace it later, rather than using it with regular static function calls.
I’d rather consider the correct people with the correct skills to learn and prepare for new technologies, using TDD, patterns, etc. rather than arbitrarily dump a task on their desk and let them go ahead with this, just because they are C++ or VB people. This way I’ll try to keep the future maintenance cost lower.