Profile picture of David Paul McQuiggin
David Paul McQuiggin
[Remote] .NET Lead Engineer | Solution Architect | CTO | Azure | Data | AI
Follow me
Generated by linktime
July 21, 2023
Probably one of the most underappreciated skills in Technical Lead roles is diplomacy, rather than knowledge of a specific architecture, pattern, or language. It's a more difficult skill to learn, but it enables: 1. Bridging the gap between business expectations, and what can be delivered. This can be quite difficult with "projects that are not allowed to fail", have board level attention, but it is (quite understandably) not possible for the board to comprehend the complexity of what is actually involved to achieve their goals. There often has to be bargaining on what can be delivered when factoring in time and resource constraints, as a "Negotiator". 2. Forming a consensus within a technical delivery team (I have yet to meet a Dev who does not have strongly-held opinions on how things should be done). This, I feel, is very important to create a sense of direction, without excluding team members, but also ensuring that the approach is well understood. This is "Herding Cats"... 3. Reducing stress and enjoying the work - I've had several experiences with burn out over the years, and it's not pleasant. Sometimes it's necessary to talk on a more personal level with a team mate, to maybe guide them into a workflow that reduces their daily workload while still delivering. It's a fine line to tread as people often feel defensive over such topics. I'd refer to this as "Advisor". I would summarise that in my opinion, we seem to focus too much on software development skills, when most issues on projects are human, rather than technical. Requirements definition, as I have often said, is the number one reason why projects fail; in 32 years I have yet to encounter a project that was a failure due to a language choice or hosting decision, but I have seen several projects fail that were not properly thought through or were unable to be properly communicated to delivery teams.
Stay updated
Subscribe to receive my future LinkedIn posts in your mailbox.

By clicking "Subscribe", you agree to receive emails from linktime.co.
You can unsubscribe at any time.

July 21, 2023
Sunday evening take: One thing I dislike about working in software development over all these years, is that so much time is spent arguing over software ideology, as if there is an absolute perfection or one true way. e.g. SOLID is guidance, to be taken under consideration, applicable in some scenarios and not in others, it is not the word of god / the one true way. Developers spend too much time fighting over their interpretation of what is basically other people's opinions, something they have read very recently in a blog or seen in a course, as if it is some sort of divine inspiration. They then point-score as to who has the most perfect understanding of the opinion of someone who wrote a book about their own experience, but has no idea of the realities of the project you are now working on. I have been in so many code reviews, where developers were obsessed with arguing over the minutiae of a particular line of code and how it does not meet framework guidelines / latest C# language syntax / a specific pattern in a book, that they completely missed that it did not actually meet the business requirements. Guidance such as SOLID, Clean Coding, DDD etc. is fine if you treat it in the same way as 'look both ways before crossing the road', but not 'you must spend 10 seconds when looking left, and no more than 1 second later, look right for 13 seconds, or a successful crossing of the road will be deemed inadmissible' Be pragmatic instead of dogmatic, is the best advice I can give, after 32 years of building systems.
21 comments
April 3, 2022