I have now worked for about two years as a IT consult in Sweden. During this time I have worked in many different project with different size, challenges and customers. There has been both successful projects where the customers really became happy, but also projects with less satisfied customers. There are parts in being a consultant which I have discovered the hard way. This post lists some of the most important learnings which I done so far when it comes to be a good IT consultant.
Satisfy the customer: This is obvious but satisfying the customer is the most important task. Customer satisfaction may not always come by solving what the customer asks for. You are the innovative expert and must be able to understand what the customer truly needs in order to come up with innovative solutions which really solves the customers needs.
Work together with the customer: You must actively work on increasing the customers knowledge of how tasks are being solved. The deeper a customer is involve, the more will the customer understand what has been ordered. A customer who understands the solution will make better decision in prioritizing tasks and identifying task which may not be needed in the final solution. An involved customer is also more forgiving when tasks turns out to be more difficult than you initially thought.
It’s common that the customers resists in being involved since there are extra work which needs to be done by the customer. One way to involve the customers which often works is to ask the customer to do a few simple usability tasks. The customer could review wire frame and help finding people for usability testing. This kind of tasks does not take much of the customers energy but it gives the customer a much better understanding of what actually is being developed.
Trust the solution: Be very clear that you will not be able to finish all the tasks which the customer has asked for if the given budget is too limited for the project. Some times a customer have an own idea of how to solve things and that idea may use technologies which for sure will cause trouble or the suggested solution itself will not solve the needs which the customer has. In those cases it’s important to ask the customer what she or he would like to achieve and give your view of how to satisfy the needs which the customer has. Don’t participate in the project if you for some reason think that the project will fail.
Learn the organization of the customer: There is a lot to learn about a customers organization. Who takes the decision? Are there other parts of the organization where you could aid in some way? Are there any internal conflicts which will affect you? Which persons should participate in usability testing? Try to learn as much as you can and it will make your decision making much easier.
Know your teammates: You can’t force your teammates to be motivated. The only way to make sure that the entire team is motivated is to create the condition for motivation to grow. As a first step it’s necessary to get to know your teammates on a deeper level then just the professional.
Make sure to create good documentation: Make sure to create sufficient documentation so that that the project can move on even if one team mate unexpectedly leaves. Also make sure not to create to much documentation since there is a cost of both creating and maintaining the documentation. Make sure that the code at least have good class documentation and that it’s easy to get an overview of how all services and components fits together.
There are of course a lot of other important points which could be suitable on this list such as work agile and involve the users. But how you work and which tasks you choose to include is always project specific and may differ from project to project. I think that the listed points are true for all consultancy work which a normal IT consultant will participate in. I’m also sure that the list will look differently if I do the same reflection after I been working a few more years as a consultant.