I’ve been working in classical product development environments and consulting as well. Actually, I think what developers do is often quite similar, regardless of the environment. Depending on the requirements, software will be developed for the customers. However, there are a few differences of course which include the whole project management. I do not want to talk about all the differences here. It is a complex topic.
Just to mention a few: Some product developers argue that because of budget consultants often write more dirty code in order to get the things done asap. Therefore they might use less software patterns, write more boiler plate code and so on. Also, in terms of project management it is still common in consulting to do things more in a classical way (defining all requirements, then design architecture, then start with implementation) instead of going an agile way (this is going to change soon, I am quite sure about this). As already said, this is not the focus here.
However, there is one important thing I experienced also several times and I am not sure if there is a gold standard way of how to handle it: External Frameworks! I just had a project to extend but there was no real documentation of course. The project contained many external libraries I did not used before. This made it a lot harder to get into it. I needed a lot more time to finish my tasks.
This leads to the question if usage of external libraries is recommended in consulting. If you have a product development team there is no problem because if you have a new developer in the team it is easier to introduce all the structures of the solutions. If you have a consulting project you must be aware that:
- The solution might be maintained by someone else. This person needs not just a knowledge transfer for the solution but also for the frameworks you’ve used (=more costs for knowledge transfer)
- The solution might be maintained by another company. This is important if you have a framework that is not free. Is it allowed to transfer the license between the companies? Will the customer pay another license?
- Generally to keep in mind: After you leave the project or the project is finished, who cares about support for the external library? If it was not free: What about maintenance? If it was free or open source without support: Are you able to replace it or do you have an overview to change the source code if it might be necessary to do so?
These are just a few problems that could occur using external libraries and I personally tend to try to avoid them in consulting as much as possible. As I mentioned, it is a different thing if you have a team where always almost the same people work together. In consulting it might be a lot easier for everyone, if you try to use the standard frameworks which are most used by everyone. I am talking about frameworks like jQuery or AngularJS which can be expected to be a part of all main skills (or at least they are not completely special).