Hello everyone, as I promised we are continuing with the second (and last) part of critical success factors of an IT Consultant. Now, we will switch our focus from business skills to regular technical skills and personality traits. LET’S Do It!
From a technical point of view …
You are open to working on different platforms: Typically, IT Consultants are quite mobile and change projects frequently, it is not uncommon for an IT Consultant to work on three or four projects each year. Typically, with different clients, industries, and platforms. That means you need to be open to using different (possibly outdated!) technologies and NOT to stubbornly stick to a particular technology. For example, if your favorite DevOps tool is Azure DevOps, but you were assigned to a client that uses Jira and GitHub, you need to peacefully accept that change, even though you will have some initial CHANGE resistance. However, as the time goes, I cannot explain how VALUABLE that would be, with time you will be able to clearly articulate why you recommend one platform over another, by giving factual experimental evidence which transforms into EXPERT power. More importantly, your mind will become better at acquiring news skills, and it will boost your self-confidence.
You know your tools: The fact that you are mobile means you will have pretty steep learning curves; You will spend time analyzing project architectures, navigating code bases and understanding infrastructure architecture. Moreover, you might be required to identify performance bottlenecks, possible security holes, etc. I cannot stress how important proper tooling would be, using code analysis tools will provide you with certain metrics that would give you a good idea of the DEVILISH parts in the code-base where nasty entangled loops exist; architecture analysis tools will give you a great idea about coupling and cohesion and to what extend proper architecture practices are implemented and so one. ALWAYS have a tool at your bag to help you abstract things away so that you do not waste too much time on unnecessary details, but instead focusing on fixing the 20% which provides 80% of business value ; ).
You have balanced technical depth and technical breadth: IT industry is becoming aggressive over the years, and technologies, frameworks, methodologies are changing aggressively over time in an accelerated manner; at a rate, NO human being can address. In an ideal world, an IT Consultant would be expert on all needed technologies and knows every possible alternative, it is HOW we physiologically perceive the EXPERT consultant, isn’t it? How can we resolve this conflict? Between how the technology is really being fast, and people are putting too many expectations?
It by your ability to balance what is called technical depth (focused expertise on a specific area) and technical breadth (wide expertise in multiple areas). You need to have a core selling skillset, such as web development, mobile development, etc. A skill that you spend considerable time honing and improving by reading books, applying tutorials and getting your hand DIRTY with. This will ensure that you are a reliable consultant who can successfully deliver the required tasks with high quality and on-time. This way you will improve your known-knowns, and you will have some known-unknowns around your focused area that you know you need to improve. For example, if you are mastering NodeJS, you might know that you have some knowledge holes that you need to fill, for example, you know you need to learn how to implement CSP security headers.
However, this is not enough, the real treasure lies in the unknown-unknowns area, it is where certain technologies and tricks you do not know that they exist will make your life easier. For example, you might be used to implement a CRUD application in a typical way, preparing a database, data access layer, UI with validations. However, if you came to know that there is a technology such as Microsoft Light-switch (I know, it is dead, just take for the sake of argument) will scaffold full-fledged Line of Business Application for you in matter of seconds by just writing your model classes, you will save A LOT of time and provide HUGE business value for your team. Technical breadth can be improved by subscribing to different RSS feeds in various blogs, watching multiple high-level online courses, discussion with people with different background, etc.
In a future post, we will have a detailed discussion properly choosing your technology specialization, setting up your learning plans, and developing technical depth and breadth.
From a personal traits point of view …
You are someone who can successfully manage his time: IT Consultants typically work under high-stress projects in tight deadlines (exceptions exist of course), and possibly among a couple of concurrent project deliveries at the same time frame. It becomes an absolute must for a consultant to manage his time as well as client expectations so that you do not need to spend your life at the office to keep everyone happy. The very first step towards successful time management is to use time planning tool and stick to it, I find Outlook tasks handy to manage things based on urgency and importance, but several tools exist in the market to use. However, tools can ONLY enable you to organize things, but you need to manage your commitments and ensure you stick to the tool and do not overbook yourself (i.e., learn how to say NO). I am planning to write something on the future of this topic too.
You are GREAT listener and communicator: Excellent communication skills are highly needed in IT industry; we deal with conceptual software, not building blocks, and it can be quite difficult to convey the meaning with plain words which could cause confusion and misunderstanding with clients. Therefore, practice drawing on the whiteboards to explain architectures, protocols, and implementations. Learn how to explain things brick by brick, starting from basic ideas to complex ones; being able to properly articulate something is a rare and valuable skill. More important, develop an excellent listening skill to understand what clients mean; typically we -software developers- quite specific on using technical terms. For example, there is a difference between saying a database update vs. database upgrade. However, clients are quite relaxed on using technical terminologies, a client can ask you for a database upgrade, while what they actually mean a data refresh from production to staging. Therefore, it is imperative to listen carefully to the client and verify your understanding to make sure you both are on the same ground. Do not be afraid of asking questions and rehearsing the client requirements in front of them, it is way cheaper to spend more time analyzing requirements than developing a totally off-point solution.
You are pragmatic: In an ideal life, you have infinite time and budget to implement an infinite quality software. However, this is NOT how it actually works, a project typically has a strict deadline and finite budget. Therefore, most of the time you will need to be PREPARED to compromise the project quality to meet the schedule, you should carefully rethink what you can drop. Non-critical unit tests? Postponed documentation for the least important part of the system? Non-important UI changes? However, you should always put the core business requirements at your heart from the beginning of the project, and clearly raise it to the higher management if you feel the deadlines are not realistic.
You CAN and DO network: Networking is a critical factor for consultants, MOST of the opportunities are published under the radar, not on job portals. As my friend Sajid said:” Opportunities goes to those who are most well-connected not those who are most skilled.” Moreover, networking will expand your horizon into new technologies, businesses, and points of view, never underestimate what you can learn from anyone, regardless of their background.
And NOW, this ends our post for this week. Let us know what do you think about IT Consulting? Do you have any related experience? An extra dimension to think about? Sharing is caring 😊