<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Engineering and Careering]]></title><description><![CDATA[Engineering and Careering]]></description><link>https://engineeringandcareering.co.uk</link><generator>RSS for Node</generator><lastBuildDate>Mon, 20 Apr 2026 10:26:19 GMT</lastBuildDate><atom:link href="https://engineeringandcareering.co.uk/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Bottling the Chaos]]></title><description><![CDATA[It’s 2026! Why aren't you 10x vibe coding?
2025, What a year! Though the last few have been a run; Post Covid, the software development world shifted and shifted again.
Remote shifted back to hybrid and in-office models. Changes in the cost of debt f...]]></description><link>https://engineeringandcareering.co.uk/bottling-the-chaos</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/bottling-the-chaos</guid><category><![CDATA[staff-plus]]></category><category><![CDATA[staff+]]></category><category><![CDATA[2026]]></category><category><![CDATA[scale-up]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Sat, 27 Dec 2025 14:06:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766844266505/ea7e4d33-79bc-40d3-8968-276c8a8fdb91.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-its-2026-why-arent-you-10x-vibe-coding">It’s 2026! Why aren't you 10x vibe coding?</h1>
<p>2025, What a year! Though the last few have been a run; Post Covid, the software development world shifted and shifted again.</p>
<p>Remote shifted back to hybrid and in-office models. Changes in the cost of debt forced start-ups and scale-ups to refocus on revenue before growth. "Do more with less" became a mantra even before LLMs appeared. Engineer salaries stagnated and often fell, with layoffs occurring as frequently as we used to ship new software. In the post-agile era, modern software engineering faces the threat of being overtaken by vibe coding and LLM agents.</p>
<p>Predictions of large skills gaps in IT and software engineering remain, but it doesn’t feel like it on the ground. Career progress and growth occurs within jobs rather than through job changes. However, that's the least of our challenges: organisations and work methodologies are shifting bigly.</p>
<p>How can we best operate? Do we roll with the punches? Could we bottle this chaos and find great new ways to work? I believe these shifts create space for great work, but we will need to chart new paths to reach great outcomes.</p>
<h1 id="heading-whats-a-staff-engineer-anyway">What's a staff engineer anyway?</h1>
<p>The role of staff-plus engineers is relatively new and remains ill-defined. With all this change, that's both a blessing and a curse. Anxiety, frustration, or disappointment can arise when new or shifting  expectations surprise us. But with an awareness of the conditions in hand, we can acknowledge the situation, and switch modes. Taking notes from <a target="_blank" href="https://en.wikipedia.org/wiki/Cynefin_framework">Cynefin</a>, we might do well to operate by sensing, reacting and bringing what's needed, rather than working to what was needed last month and last year.</p>
<p>What might that mean for how we do our jobs?</p>
<h1 id="heading-paper-planes-not-jet-schematics">Paper Planes, Not Jet Schematics</h1>
<p>In 2025, I discovered that my work as a staff engineer was most successful when executed in shorter cycles. Unsurprisingly, a key lesson from Agile that I need to apply to my staff work. My long-term thinking often became irrelevant before usefulness due to shifting needs and priorities. If a task wasn't actively progressing and nearing completion, it was as if it didn't exist.</p>
<p>I needed to be more nimble, finding new collaboration points and quick paths to success, rapidly turning around results or new data. However, juggling too many tasks also diluted focus and slowed progress.</p>
<p>In 2026, my work needs to intersect with the organisation more frequently, delivering valuable outcomes in the shortest cycles possible. Although this approach may seem non-optimal, it ensures that results speak for themselves and can secure approval and focus for subsequent steps.</p>
<p>That doesn’t mean I can’t have agendas and pursuits, but they need to be mission-critical and action-oriented, or relegated to side hustles that can be called on when useful.</p>
<h1 id="heading-let-better-set-the-direction-of-travel-for-your-teams">Let 'better' set the direction of travel for your teams.</h1>
<p>Traditional strategy and planning often turns into multi-year plans and roadmaps. Doing that now can risk generating much waste and sorrow, leaving you high and dry when the flow shifts.</p>
<p>We need to use strategy to set agendas and direction, guiding us forward rather than relying on longer-term goals, plans, and expectations.</p>
<p>I think the teams I support will massively benefit from knowing what they are there for, and which direction 'better' product, system and architecture are in. It will help them strip the noise from the key messages that they can then use to keep focus on driving forwards. Teams need to know where they’re going, and instead of following a fixed plan, I want to equip them with tools to positively adapt to change.</p>
<p>This may be working with the team, building a dynamic strategy towards 'better'. It may also involve collaborations with other senior leaders to ensure that the team can get clarity of brief that will result in good software, long term. Either way, the way to build something coherent and maintainable will need my support.</p>
<h1 id="heading-team-ownership-challenge-accepted">Team ownership challenge accepted.</h1>
<p>Through vibe coding, LLM saddling, or revenue-before-scale re-orientation, doing more with what we have means many teams will end up owning and operating broader sets of work. And this might well include large chunks of valuable but unpolished functionality. In 2026, there is a predicted <a target="_blank" href="https://www.verifiedmarketresearch.com/product/it-staff-augmentation-service-market/">increased demand for on staff augmentation, along with the complexities of onboarding, offboarding, and ownership that w</a>ill accompany it.</p>
<p>For a staff engineer, this means we need to imagine, and help others realise, good management of broader portfolios. And methods to manage a portfolio that might contain a mix of legacy, imperfect and experimental work.</p>
<p>How can I help teams not get swamped? By finding better ways of owning and operating. I'm expecting to be spending time with teams and tech leads<a target="_blank" href="https://www.verifiedmarketresearch.com/product/it-staff-augmentation-service-market/">, finding ways to own more, and still getti</a>ng things done. Toil, incidents, bugs and customer issues will need to be managed differently - can we look to better communication, automation and use LLMs to manage toil? Will <a target="_blank" href="https://www.verifiedmarketresearch.com/product/it-staff-augmentation-service-market/">a focus on self healing (not just reporting</a> of faults) and self-informing systems provide to both the team, org and our customers? Can we add this into what we own, and build new systems with this in mind?</p>
<h1 id="heading-architectures-of-the-future-still-need-to-be-built">Architectures-of-the-future still need to be built.</h1>
<p>We will need to build architectures that meet future needs which are hard to foresee, and do so incrementally as we scan ahead and deliver in small cycles. <a target="_blank" href="https://dzone.com/articles/post-monolith-architecture-2025">Post-microservice architectures that both have a strong event</a> orientation, and high<a target="_blank" href="https://dzone.com/articles/post-monolith-architecture-2025">-level business domain focus are</a> likely to be ones that allow good combinations of scale, evolutional building and Agentic operation.</p>
<p>It's a bet worth placing, but how do we get there with the above challenges is going to be a big mission and maybe a key driver for 2026: understanding that we need future architecture that can be built in pieces and be successful on the w<a target="_blank" href="https://dzone.com/articles/post-monolith-architecture-2025">ay is probably the most interest</a>ing and valuable problem that presents itself.</p>
<h1 id="heading-we-need-to-try-new-things-but-we-need-to-talk-first">We need to try new things, but we need to talk first.</h1>
<p>Staff engineers bring experience, practice and ways of getting stuff done, but we don't scale. In the midst of this change and challenge are all those ace engineers you are there to support and help do great things. My aim will be to help others navigate, and build great things. </p>
<p>In 2026 I want to have more chats, and be in less meetings. In the distributed world I live in I can't rely on a coffee room or corridor chat. These can't be typical mentor chats - these need to be 2 way streets - I need both information to steer what I prioritise and I need to assist and support the problems folk need to solve. </p>
<p>Change is inevitable, but suffering is not. We can be the glue that holds things together, but this glue needs information to cure. I think chats could be the 2 way street to do this. Dear reader, do you have other suggestions?</p>
<h1 id="heading-conclusions-throwing-shapes">Conclusions: Throwing shapes</h1>
<p>If you see the same patterns in 2025, here is what i plan to do to find success in 2026</p>
<ol>
<li><p><strong>Reduce Cycle Time and Thoughts in Progress:</strong> Focus on minimising cycle time and the number of tasks in progress. This approach allows for quicker iterations and more immediate feedback, enabling you to adapt swiftly to changes and deliver results efficiently.</p>
</li>
<li><p><strong>Set Teams Up to Ride the Waves:</strong> Collaborate with your teams to clearly define their mission and set navigation buoys as guides forward. This clarity will help teams stay focused on their objectives and adapt to changes without losing sight of their goals.</p>
</li>
<li><p><strong>Equip teams to handle a Broad Operational Portfolio</strong>. Point them toward building low to no maintenance products, ensure useful documentation and information flows happen, to reduce distraction and toil.</p>
</li>
<li><p><strong>Iterative, Evolutionary Suiting Architecture:</strong> Emphasize the importance of developing architectures that are adaptable and can evolve over time. This approach allows teams to react to unforeseen challenges and opportunities, ensuring that systems remain relevant and effective as needs change.</p>
</li>
<li><p><strong>Talk More:</strong> Encourage regular, meaningful conversations that go beyond formal meetings to share insights, address challenges, and support each other's growth. This will help build a cohesive and resilient team environment.</p>
</li>
</ol>
<p>Cover photo by <a target="_blank" href="https://unsplash.com/@sloppyperfectionist?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Hans-Peter Gauster</a> on <a target="_blank" href="https://unsplash.com/photos/stack-of-jigsaw-puzzle-pieces-3y1zF4hIPCg?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
]]></content:encoded></item><item><title><![CDATA[Video: Helping Engineers Thrive: A Framework for Growth and Retention]]></title><description><![CDATA[https://youtu.be/5S959MblQAw
 
Here’s my talk from Agile on the Beach on engineering career development that directly impacts retention and organizational success.
In my career as an engineer, consultant, and mentor, I've found that growth isn't line...]]></description><link>https://engineeringandcareering.co.uk/helping-engineers-thrive-a-framework-for-growth-and-retention</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/helping-engineers-thrive-a-framework-for-growth-and-retention</guid><category><![CDATA[engineering-management]]></category><category><![CDATA[mentoring program]]></category><category><![CDATA[mentorship]]></category><category><![CDATA[#RetentionStrategies]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Thu, 23 Oct 2025 18:23:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1766839097369/0736d9cb-e803-4c19-9cda-5c8dee37434b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/5S959MblQAw">https://youtu.be/5S959MblQAw</a></div>
<p> </p>
<p>Here’s my talk from Agile on the Beach on engineering career development that directly impacts retention and organizational success.</p>
<p>In my career as an engineer, consultant, and mentor, I've found that growth isn't linear, and one approach doesn't fit all. If you match your support strategy to where engineers are in their journey, you can see both individuals and your organization thrive.</p>
<h1 id="heading-want-more">Want more?</h1>
<p>Here’s a page <a target="_blank" href="https://engineeringandcareering.co.uk/aotb">with some deep-dive articles, handy screenshots and loads of useful links.</a></p>
]]></content:encoded></item><item><title><![CDATA[Building Paved Paths to raise a secure tide]]></title><description><![CDATA[You might be tasked with enhancing security at your organisation. Communicating this effectively and ensuring teams build sufficiently secure software is challenging. Some may suggest a policing approach, but this is neither realistic nor sustainable...]]></description><link>https://engineeringandcareering.co.uk/building-paved-paths-to-raise-a-secure-tide</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/building-paved-paths-to-raise-a-secure-tide</guid><category><![CDATA[Security]]></category><category><![CDATA[Data security]]></category><category><![CDATA[DevSecOps]]></category><category><![CDATA[risk management]]></category><category><![CDATA[internal developer platforms]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Sun, 15 Jun 2025 11:39:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/VNkXwV9hm7g/upload/8da7d90c241cd430e459aac7bf0b2624.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You might be tasked with enhancing security at your organisation. Communicating this effectively and ensuring teams build sufficiently secure software is challenging. Some may suggest a policing approach, but this is neither realistic nor sustainable. There are many many engineers and so few security experts. </p>
<p>When faced with this challenge, I instead chose to build a rising tide that would encourage security by design and default.</p>
<p>In this article I'll be talking about the three steps we took to get our engineers able to deliver on this through education, Paved Paths and risk assessments.</p>
<h2 id="heading-elevating-security-knowledge">Elevating Security Knowledge</h2>
<p>To have a baseline standard of security in all our products, our engineers needed to understand security better. Through engineer self-assessments, we could see that many of our engineers had gaps in security knowledge. With this in mind, we provided both general and company specific training.</p>
<h3 id="heading-training-for-all">Training for all</h3>
<p>Self-assessment data made it easy to make a case to budget to hire an external trainer to deliver training. Our selected trainer delivered two days of modules for our engineers to attend. We allowed our engineers to select what modules were right for them, by aligning the training to information from the self assessment. Almost every engineer attended the training, with some wanting to attend all modules.</p>
<h3 id="heading-insights-from-within">Insights from within</h3>
<p>We invited our internal experts on external risk and compliance to walk us through security and compliance risks. They first spent time with the engineering security team, teaching us through content, chat and questions. The engineering security team worked as advisors and editors, honing the material into key points that could be delivered and consumed by all teams. </p>
<h3 id="heading-talking-risk-and-consequences">Talking risk and consequences</h3>
<p>We backed up this training with stories from the news where companies had been hacked.</p>
<p>We encouraged discussion and digging into how these serious issues happened. Sometimes scary stories are useful to motivate, if they are honestly told.</p>
<h2 id="heading-key-move-a-platform-and-paved-path-for-all">Key move: A Platform and Paved Path for all</h2>
<p>Our key move was to treat security as a platform that could be provided to our engineers. And through that provide a default Paved Path, that when followed would result in good-enough security 'by default'.</p>
<p>A modern name for this might be an <a target="_blank" href="https://internaldeveloperplatform.org/what-is-an-internal-developer-platform/">Internal Developer platform</a>. The visible parts were a guide that gave our engineers advice, and provided, like a <a target="_blank" href="https://www.gov.uk/browse/driving/highway-code-road-safety">Highway Code</a>, a clear set of MUSTs and SHOULDs for all our projects. </p>
<p>The guide was more than just words. It presented a <a target="_blank" href="https://medium.com/codex/what-is-a-paved-path-b2294463a3a9">Paved Path</a> for teams to use to deliver. We had identified a practice to support. Some of these were industry standards, or operated from well known third party libraries. Others used internal tools or standards built by engineers or the infrastructure platform team. </p>
<p>This collection of technologies and practices standardised how we solved the most critical risks to our systems, paving the path to production, and providing a default way to deliver securely.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1749987192326/854e2bbf-1e20-4aa6-b9a3-270449fdd380.jpeg" alt class="image--center mx-auto" /></p>
<h2 id="heading-tailored-security-advanced-paved-paths-for-complex-challenges">Tailored Security: Advanced Paved Paths for Complex Challenges</h2>
<p>Some of our teams had complex data security needs. They handled and held data that demanded additional attention and security. Our default Paved Path could not serve these needs. Raising our standard expectations would require additional work from all teams. It would be an over-reaction: at best it would waste time and effort; worst case, we would lose engineers' support by over-demanding.</p>
<p>We chose to be selective. To present a second, more demanding Paved Path, and help teams choose a good path for their needs. Rather than raising every boat, we could build a lock to raise selected boats up to the level needed.</p>
<p>Again we used our security guide to provide this. In it we helped present a guide to help them grade their data and select a path; a second set of directives and more practices that provided suitable controls.</p>
<h3 id="heading-security-by-design">Security by design.</h3>
<p>Our higher risk route pushed our teams to consider security careful in the design phases, running threat modelling sessions as they built their software. It also added additional constraints and expectations to data storage and 3rd party library management; as well as expecting a higher level of security as standard. </p>
<h2 id="heading-impact">Impact</h2>
<p>Teams made better choices,  and prioritised security outcomes much better. The estate got smaller, less flabby and more secure in many ways. Old code got killed or revamped. Higher risk data was separated and held to higher standards. Sensitive data on the move though our systems was better controlled. Staff cared more about security all the way to the Board. </p>
<p>A quote from an engineer sums up the success:</p>
<blockquote>
<p><em>"Everyone knows where to go and engineers are empowered to use secure by design in everyday work"</em></p>
</blockquote>
<p>The journey to enhancing security within an organisation is about more than just policing, policies and procedures; it's about creating an environment where security is ingrained in the culture. When you want to have big impact, build a system that will support your engineers to make great decisions when you are not there.</p>
<p>When we build a platform that will support every engineer, we build a resilient organisation where security is a shared responsibility, and every engineer is equipped to make informed, secure decisions.</p>
<p><strong><em>You can read more about the STAN - our Secure by default guide - in a</em></strong> <a target="_blank" href="https://engineeringandcareering.co.uk/with-great-power"><strong><em>previous blog post</em></strong></a><strong><em>.</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[Navigating Security Challenges: The Art of Risk Register Creation]]></title><description><![CDATA[Using a Risk Register to select and drive action is a great way to securely manage a product portfolio; but how do you identify and prioritise your must-fix items? Let me tell you how I did it.




What is a Risk Register?



A Risk Register, also kn...]]></description><link>https://engineeringandcareering.co.uk/navigating-security-challenges-the-art-of-risk-register-creation</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/navigating-security-challenges-the-art-of-risk-register-creation</guid><category><![CDATA[Security]]></category><category><![CDATA[risk management]]></category><category><![CDATA[DevSecOps]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Thu, 12 Jun 2025 07:48:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/i6gbwwYrL7k/upload/c3f2d0db74a5c49e72ee420a14f19fc2.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Using a Risk Register to select and drive action is a great way to securely manage a product portfolio; but how do you identify and prioritise your must-fix items? Let me tell you how I did it.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>What is a Risk Register?</strong></td></tr>
</thead>
<tbody>
<tr>
<td>A Risk Register, also known as a risk log, is a structured document used in project management to record potential risks, their impact, and planned responses. It helps organisation’s identify, assess, and manage risks throughout a project's lifecycle, ensuring proactive measures are taken to mitigate potential challenges. In a security context, the Register records key security risks to operation and data and actions toward control.</td></tr>
</tbody>
</table>
</div><h2 id="heading-my-journey-in-digital-product-security">My Journey in Digital Product Security</h2>
<p>A few years back, as a staff engineer in an Ed-tech company, I took on the challenge of raising digital product security. You can read <a target="_blank" href="https://engineeringandcareering.co.uk/engineering-a-solution-to-security">here</a>, how I chose to drive it using an small engineering team.</p>
<p>Having pitched, chartered, and formed the team, we were ready to begin. I had 6 months to prove our value. When initiatives start, it's challenging to gain traction, making it difficult to earn the trust and buy-in needed to implement real change. For the team to demonstrate its worth, we needed to find the key moves that everyone could get behind.</p>
<p>In the face of complex changes, even the best times can derail. I had a vision and a team, but I needed a plan that would inspire and gain everyone's support.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeEeQyk8mHasJdON81IRpxrbY9VKXBP2p-XT_kAirM3gp5qAviUfRsB6Omji0NPgn1hbeqHwKzjj6itOiP6bOnTopre1qevf192uEcR7sib-51OFUDNBxJbi48AsXNmante2vssFw?key=DLBF6MmgcTiUWdEwa9hmXw" alt /></p>
<p><em>(</em><a target="_blank" href="https://sergiocaredda.eu/organisation/models-the-lippitt-knoster-model-for-managing-complex-change"><em>The Lippitt-Knoster Model for Managing Complex Change</em></a><em>)</em></p>
<h2 id="heading-identifying-key-security-concerns">Identifying Key Security Concerns</h2>
<p>To get trust, I needed to identify what work was valuable and achievable in that time - or shorter. Even better, if I found that out in collaboration with others I could start to build community and consensus.</p>
<p>I identified 4 areas of focus and a key question for each with the aim of workshopping each one.</p>
<ul>
<li><p><strong>External</strong> : What do we need to be better protected from external attacks?</p>
</li>
<li><p><strong>Internal</strong>: What do we need to avoid exposure of personal data and reputation damage by staff?</p>
</li>
<li><p><strong>Compliant</strong>: What do we need to achieve high levels of compliance with law and regulations?</p>
</li>
<li><p><strong>Delivery Process</strong>: What do we need to ensure our squads keep us safe whilst delivering new features?</p>
</li>
</ul>
<h2 id="heading-engaging-the-key-contributors">Engaging the key contributors</h2>
<p>I thought about who should discuss each question. Each session would focus on answering a key question, but there was deeper work than just building a list. Real security is a mix of risk identification, tradeoffs, and an understanding of what systems might do.</p>
<p>As well as experts, I also needed to hear from the teams involved and those impacted by security risks and the potential change: leadership and those designing, building and operating our products and platform.</p>
<p>I invited experts, the involved, and the impacted for each session, and began to work out how I could flow each question into the answers I needed.</p>
<h2 id="heading-workshopping-transforming-discussions-into-actionable-priorities">Workshopping: Transforming Discussions into Actionable Priorities</h2>
<p>There were a few outcomes I wanted from my workshops. Looking broad to understand the risk space the business was in, zooming in on what my team should tackle and to grow care and involvement in security.</p>
<p>With that in mind I set up each workshop to first generate a pool of issues or gaps. And then to ask the group to segment and prioritise what we had identified.</p>
<p>The below diagrams show the flow of each of the four workshops.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXeL-pqV3GVGkuIfgL26HzKpMPO98Ax6_tPyW9RW6DWcaTuot19ur_W8y14c0h75BxCjdpryCCDE64JvAvfenAi_iuPaIFP_RWZ5O5maz1zLwrNLwZnMKJhwltgyaheW6U7LrHwS9g?key=DLBF6MmgcTiUWdEwa9hmXw" alt /></p>
<h2 id="heading-achieving-consensus-and-direction">Achieving Consensus and Direction</h2>
<p>There were weeks of preparation and hours of meetings. It was worth it. We found strong agreement, buy-in and direction</p>
<p>Not only did we have a strong Risk Register, we also were able to form a stakeholder-led steering-group to guide how we approached controlling the risks. We also had clearer agreement of what problems belonged to which teams and a backlog for my new team</p>
<h2 id="heading-driving-change-with-a-robust-risk-register">Driving Change with a Robust Risk Register</h2>
<p>The impact of an action is the things it makes better. A risk register is pointless unless it drives change. Looking back, I recall how the register and the stakeholders helped shape the work the Engineering Security team cared most about.</p>
<p>We took immediate action to get better management of Production Database credentials, and secured other access and passwords. We build tooling to provide an overview of the state of vulnerabilities in 3rd party libraries across the estate, driving updates and further care.</p>
<p>more longterm, It drove a long thread of work that began with an assessment of the data each team held and drove towards <a target="_blank" href="https://engineeringandcareering.co.uk/with-great-power-documentation-as-a-security-platform">a guide to help the teams make good choices</a> for their data and products. Our Risk Register kept us joined up and always looking towards fixing the biggest most critical gaps.</p>
]]></content:encoded></item><item><title><![CDATA[Engineering a solution to security]]></title><description><![CDATA[An internet of threats
In today's digital age, a multitude of services are accessible online through apps, websites, and internet connected devices. Whether you're booking a holiday, arranging a flight, shopping, ordering a meal, or adjusting your ho...]]></description><link>https://engineeringandcareering.co.uk/engineering-a-solution-to-security</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/engineering-a-solution-to-security</guid><category><![CDATA[Security]]></category><category><![CDATA[DevSecOps]]></category><category><![CDATA[enablement]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Mon, 09 Jun 2025 20:30:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/Wo1Tvu3LQ1Q/upload/5671543cb612acba114af78fcd8acb35.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-an-internet-of-threats">An internet of threats</h2>
<p>In today's digital age, a multitude of services are accessible online through apps, websites, and <a target="_blank" href="https://en.wikipedia.org/wiki/Internet_of_things">internet connected</a> devices. Whether you're booking a holiday, arranging a flight, shopping, ordering a meal, or adjusting your home's temperature, chances are you're doing it over the internet.</p>
<p>Even if you pop to the shops, or make bookings over the phone, service providers are operating 'digitally'. Nearly every service provided to the public is an integration of a number of platforms, software, and services communicating over public networks. All built from a mix of custom software on a foundation of commodity libraries and supporting systems. </p>
<p>This provides a broad threat surface where malicious actors can look for ways to enter and exploit your systems and the data they hold, for fun and profit.</p>
<p>If you own or run one of these systems, you'll be dealing with these risks on a day to day basis. Odds are, there are more risks in your Risk Log than you have staff to secure them. Not only that, but you might well have a large group of engineers, building, experimenting and shipping novel ideas and new features far faster than you can keep up. All systems built out of commodity software libraries provide a constant stream of vulnerabilities.</p>
<p>The threat surface is always growing - evidenced by the reports of hacks, data exposures and ransom attacks that appear weekly. But you cannot police every risk or change. So what can you do: delegate, enable, or police?</p>
<h2 id="heading-a-solution-shape">A solution shape</h2>
<p>As a Staff Engineer faced with this challenge back in the late 2010s, I pitched and formed a three person Engineering Security team to enable the Product teams to make good security decisions and actions. </p>
<p>We acted as an Enabling team, informing and influencing choices, bringing in new knowledge and building an Internal Developer Platform to raise the knowledge and leverage all our engineering team.  </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1749500198672/a353d9bb-f36a-4207-a15a-27d5fdb628b0.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-why-this-shape">Why this shape</h2>
<p>I was inspired to choose this shape for three reasons.</p>
<h3 id="heading-reason-1-dont-be-the-brakes">Reason 1. Don't be the brakes</h3>
<p>How we delivered was important and I didn't want to damage that success. We had a set of autonomous product teams who experimented, operated and delivered products that our customers loved. Centralising controls, placing external gates, or reducing team ownership of the whole problem was not a recipe for success.</p>
<h3 id="heading-reason-2-optimise-for-speed-and-success">Reason 2: optimise for speed and success</h3>
<p>We needed good enough security at the right time in the right places. Putting security demands where the work was, would both provide leverage (we had many engineers) and would allow decisions to be made in context. </p>
<h3 id="heading-reason-3-a-valued-pattern">Reason 3: a valued pattern</h3>
<p>Coming from a software consultancy background, I was used to structuring and delivering organisational change. An enabling team was a common pattern when introducing complex change, able to work from the trenches, understanding the needs and often <a target="_blank" href="https://en.wikipedia.org/wiki/Eating_your_own_dog_food">dog-fooding</a> and trialing changes before scaling them out. Team Topologies has cemented this concept as one of <a target="_blank" href="https://itrevolution.com/articles/four-team-types/">four key team types</a> in modern software delivery.</p>
<p>Beyond this, there was existing work that showed that engineers were a good place to invest in security. In 2015, Shannon Lietz, a Security leader, said that teaching a security person how SW delivery works <em>”takes a lot longer than teaching a developer how to understand how to make security happen and change how security gets remediated”</em> - (<a target="_blank" href="https://www.youtube.com/watch?v=lLphOWTiUco">GOTO 2015 • The Road To Being Rugged</a>). </p>
<h2 id="heading-why-not-security-champions">Why not Security champions?</h2>
<p><a target="_blank" href="https://owasp.org/www-project-security-culture/v10/4-Security_Champions/">Security Champions</a> is a pattern that has become popular in the last 5 years and is a way of scaling out security. It focuses on having a single point of contact for security in each team. A team Security Champion operates as a communication conduit and a review point of security quality in the team, performing security code reviews and dedicating time to security initiatives.</p>
<p>I don't think it's a great model on its own. While it might complement other strategies, it has several failure points worth avoiding.</p>
<h3 id="heading-silos-a-problem-with-lone-champions">Silos: a problem with lone champions</h3>
<p><a target="_blank" href="https://rruzitschka.medium.com/we-instead-of-i-the-team-as-the-smallest-unit-of-delivery-9e055de247c1">Teams are the unit of software delivery</a>. The members of a product team should have all the talent that is needed to build great products in a domain. We often support them with utility and education platforms - supporting a self service model that removes silos. Silos of knowledge and control slow down getting stuff done by gatekeeping and destroying team ownership and flow. </p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcTrwYie_d_8lzvh9rVyU_XDl422G1rIGdv5P-V7AIK3O8RFiw6pIw1aKP9Z8CIWA7DNe5dldSBpEV17Hhp2EnA6-Nd51mOeXpRzGufxKJGgWB7DVJEz-ZR0_aWqcuy2gxH9qDX?key=gSKk4841rpzPRHNk96IZOw" alt /></p>
<p>Just as external security control creates one of these silos, security champions distribute but don't remove the silo, leading to a risk of gatekeeping and a higher <a target="_blank" href="https://en.wikipedia.org/wiki/Bus_factor">bus-factor</a> within the team. To avoid a silo, it places the enablement effort in the champion, something they may not have the skill or drive for, as they likely signed up through an interest in security.</p>
<h2 id="heading-security-champion-alternatives">Security Champion alternatives</h2>
<p>Every company and situation is different. But, if you want to raise the engineering standards of a set of teams, focus on how you can do so without generating silos and bottlenecks. Given these limitations of Security Champions, focus on enabling teams to do a better job and to be able to build good enough software. Whatever you provide, keep the  barriers to entry low, make it on demand and as self service as you can. </p>
<p>What could an enabling team bring that would allow them to scale?</p>
<h3 id="heading-consider-a-platform-to-raise-standards">Consider a platform to raise standards</h3>
<p>When folk use the phrase 'platform team' it often takes us immediately to a team that provides on demand compute and other operational components that deliver software to users. With the complexities of modern infrastructure, it's a clear place to manage with a platform wrapper to hide the complexity and provide utility. </p>
<p>Internal Developer Platforms can serve different goals, and security is a great candidate. You can read <a target="_blank" href="https://engineeringandcareering.co.uk/with-great-power">here</a> how our Engineering Security team built a living standard that worked as part of a platform that scaled the company's security expertise. Along with that we built reporting tooling to provide calls to action and feedback and new tooling, as well as providing support and education, engaging with the challenges our teams had.</p>
<h3 id="heading-consider-communities-of-practice-to-sustain-interest">Consider Communities-of-Practice to sustain interest</h3>
<p>Of course, we totally wanted to sustain interest in managing security, and support engineers interested in becoming knowledgeable and skilled in this area. Our Engineering Security team ensured everyone could join in and learn what they could, and that there was a space where folk interested in security could converse and contribute. We were part way to building what would now be called a Community of Practice[<a target="_blank" href="https://en.wikipedia.org/wiki/Community_of_practice">1</a>] - a gathering of like-minded people where a skill or interest can be honed and improved. </p>
<h2 id="heading-foster-collaboration-and-empowerment">Foster Collaboration and Empowerment</h2>
<p>In wrapping up, it's clear that the digital landscape is fraught with challenges, but by fostering an environment where product teams are empowered to make informed security decisions, we can maintain the agility and creativity that drives success.</p>
<p>The approach of enabling rather than policing; and focusing on education and shared knowledge, ensures that security becomes a seamless part of the development process. This strategy not only mitigates risks but also enhances the overall resilience of our systems. As we continue to navigate the complexities of digital threats, let’s commit to raising the tide of knowledge and capability across all teams, ensuring a secure and thriving digital future.</p>
]]></content:encoded></item><item><title><![CDATA[Engineer Growth series]]></title><description><![CDATA[It’s been quiet over here, but I have been thinking and writing. My focus has been on the engineer growth experience and how we, as leaders, managers and coaches, can best engage and enhance how the engineers we work with can thrive as they move thou...]]></description><link>https://engineeringandcareering.co.uk/engineer-growth-series</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/engineer-growth-series</guid><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Sat, 15 Mar 2025 18:01:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/VMKBFR6r_jg/upload/6ce45ed6ae44d476da1b947c8582e17a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It’s been quiet over here, but I have been thinking and writing. My focus has been on the engineer growth experience and how we, as leaders, managers and coaches, can best engage and enhance how the engineers we work with can thrive as they move though competency, fluency, and mastery.</p>
<p>Over at LeadDev you can read three part of my series that walks through how to apply different development and coaching styles to the different stages of engineer growth</p>
<ul>
<li><p>Gaining competence: <a target="_blank" href="https://leaddev.com/hiring/three-steps-successfully-onboard-junior-engineers">3 steps to successfully onboard junior engineers</a></p>
</li>
<li><p>Gaining fluency: <a target="_blank" href="https://leaddev.com/career-development/4-steps-to-technically-upskill-engineers">4 steps to technically upskill engineers</a></p>
</li>
<li><p>Gaining mastery: <a target="_blank" href="https://leaddev.com/culture/help-senior-engineers-grow-toward-mastery">4 ways to help senior engineers grow toward mastery</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Engineer growth paths are critical]]></title><description><![CDATA[I recently wrote a new talk on Engineer Growth and how we can engage and empower the engineers we work with. Now, I'm motivated to help folk grow because I love seeing people progress. It's fabulous. But that can be a hard sell.
I needed to get some ...]]></description><link>https://engineeringandcareering.co.uk/engineer-growth-paths-are-critical</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/engineer-growth-paths-are-critical</guid><category><![CDATA[retention]]></category><category><![CDATA[engineering-management]]></category><category><![CDATA[#Coaching]]></category><category><![CDATA[growth]]></category><category><![CDATA[Retain]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Tue, 29 Oct 2024 19:05:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/G7FfAsW-Xj0/upload/41b90c0d12e7498c33d5d6f230dc177f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I recently wrote a new talk on Engineer Growth and how we can engage and empower the engineers we work with. Now, I'm motivated to help folk grow because I love seeing people progress. It's fabulous. But that can be a hard sell.</p>
<p>I needed to get some research done, to give out some numbers in my talk. Folks love numbers!</p>
<p>Even better, I can back them numbers up! <strong>I got links, fam!</strong></p>
<p>Let's begin with a big number. The <a target="_blank" href="https://survey.stackoverflow.co/2024/">2024 Stack overflow survey</a> asked whole piles of professional engineers about satisfaction at work. It found <a target="_blank" href="https://survey.stackoverflow.co/2024/professional-developers#job-industry-and-satisfaction-job-sat">only 20% of developers reported being generally happy</a>.</p>
<h2 id="heading-why-might-that-be">Why might that be?</h2>
<p>Well, this bit isn't based on survey data, sorry. But this fella called Frederick Herzberg (a 20th Century American psychologist) had a <a target="_blank" href="https://en.wikipedia.org/wiki/Two-factor_theory">"Motivator-Hygiene” theory</a>. Which basically summarises what’s important in a job, yer ken? It placed Achievement,  Growth Opportunities, Advancement, and Recognition as key motivators.</p>
<h1 id="heading-is-that-whats-going-on">Is that what's going on?</h1>
<p>Is there data to back that up? Back to the surveys.</p>
<p>Robert Walters (a recruitment company) provides some data points. <a target="_blank" href="https://www.robertwaltersgroup.com/content/dam/robert-walters/corporate/news-and-pr/files/whitepapers/attracting-and-retaining-millennials-UK.pdf">91% of Millennials want rapid career progression</a>. But, no surprise, they don't always get it. And what happens? 20% leave for better career development opportunities.</p>
<p>Another one of <a target="_blank" href="https://www.robertwalters.ie/insights/hiring-advice/blog/lack-of-career-progression-the-main-reason-professionals-leave-a-role.html">their surveys (this one from Back in 2015)</a> found 44% of professionals cited a lack of progression as a major contributor for leaving their role.</p>
<p>This data indicates that many people want to grow and achieve their goals. And when they don't get that? They leave.</p>
<p>But it could be worse. As the saying goes: What if they stay? Stay unhappy, and stagnate.</p>
<h2 id="heading-time-to-talk-about-retention">Time to talk about retention.</h2>
<p>They say it's much easier to grow the talent that you have than find new. I wanted to quantify that, so, yeah, I did some more googling.</p>
<p>The costs of replacing a skilled engineer <a target="_blank" href="https://www.linkedin.com/pulse/brutal-cost-ryan-carson/">were hard to tie down</a>. I saw figures ranging .between 50% to 200% of an employee's salary to replace them. And that's outside the cost of actually paying your new person.<br />(If someone has some good data, and by data I mean links, on this, drop me a line, and I’ll update.)</p>
<h2 id="heading-stagnation">Stagnation</h2>
<p>What if they stay and we don't fix this?</p>
<p>Gallup (an analytics and advisory company) found <a target="_blank" href="https://www.gallup.com/workplace/643286/engagement-hits-11-year-low.aspx">only a third of U.S. employees were engaged</a>, meaning they were highly involved and enthusiastic about their work and workplaces. However, Top-performing organisations average 70% engaged employees. That must be better than PIPs and terminations, right?</p>
<h2 id="heading-lets-close-our-numbers-with-a-positive-stat">Let's close our numbers with a positive stat</h2>
<p><a target="_blank" href="https://www.thehrdigest.com/2023-hr-trends-a-look-ahead/">The HR Digest</a> - without a link to survey data (boo!) says that in 2022, companies that invested in employee development saw a 58% increase in employee retention and a 24% increase in productivity.</p>
<p>It does look like active career progression aids retention of talent and avoids staff stagnation. And it builds reputation and attracts good engineers.</p>
]]></content:encoded></item><item><title><![CDATA[Tech Leads in 2024: Navigating the Evolving Landscape]]></title><description><![CDATA[My previous post looked at how software delivery has changed in the last ten years. Here we focus in on what that means for Tech Leads and how the job we need to do has altered and developed.
Architecture
New cloud technology has been empowering. The...]]></description><link>https://engineeringandcareering.co.uk/tech-leads-in-2024-navigating-the-evolving-landscape</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/tech-leads-in-2024-navigating-the-evolving-landscape</guid><category><![CDATA[leadership]]></category><category><![CDATA[engineering]]></category><category><![CDATA[technical leadership]]></category><category><![CDATA[tech leadership]]></category><category><![CDATA[engineering leadership]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Wed, 24 Apr 2024 07:58:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1713909110318/f929d3be-5b7c-4bf6-9450-ad65b2d311a7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>My <a target="_blank" href="https://engineeringandcareering.co.uk/technical-leadership-and-delivery-a-10-year-review">previous post</a> looked at how software delivery has changed in the last ten years. Here we focus in on what that means for <a target="_blank" href="https://well-rounded-tech-lead.dev/">Tech Leads</a> and how the job we need to do has altered and developed.</p>
<h1 id="heading-architecture">Architecture</h1>
<p>New cloud technology has been empowering. The tech that brings <a target="_blank" href="https://learn.microsoft.com/en-us/dotnet/architecture/cloud-native/definition">Cloud Native</a>, production-owning teams also brings new demands on cognitive load. This can lead to teams with little time to solve real business problems. As a Tech Lead you need to watch for burn-out or technology over-focus. Either look to use more granular technologies and <a target="_blank" href="https://www.techtarget.com/searchcloudcomputing/definition/Platform-as-a-Service-PaaS">Platform Services</a>; or as <a target="_blank" href="https://teamtopologies.com/">Team Topologies</a> suggests, look to your org for support with <a target="_blank" href="https://christaceygreen.com/blog/paved-paths-series-part-2-a-one-pager">Paved Paths</a> and stronger shared wrappers around complexity.</p>
<p>With the arrival of Staff engineers, the lucky are seeing a move away from Architect Ivory Towers and a shift to <a target="_blank" href="https://martinfowler.com/articles/scaling-architecture-conversationally.html">active governance</a> and collaboration. Tech Leads should bring in Staff Engineers to provide problem solving and Big Picture guidance on the path forward for their architecture. Also look for paths that Staff+ are tending to and providing. Do they guide you forward?</p>
<p>Continuous-delivering, cloud-native teams have the ability to ship as often as they like. This demands new ways of working. We need to build to operate. <a target="_blank" href="https://martinfowler.com/articles/qa-in-production.html">Getting feedback from Production</a> has become as important as testing before shipping. Your team should be building and using good enough observability and Test-in-Prod tooling, and you might need to push for that - both in terms of tooling, and ways of working.</p>
<p>The team needs to be set up and ready to deal with production problems. Avoiding <a target="_blank" href="https://medium.com/one-to-n/one-way-two-way-door-decisions-a0e29029e200">one way doors</a> is generally a key risk management mode, but it's absolutely key when testing in production, <a target="_blank" href="https://www.honeycomb.io/blog/testing-in-production">as ultimately, many of us will do</a>. Help your teams build software that can deal with shipped mistakes. Can they roll back, roll forward, patch, and fix data? Do you have tools to manage or clear down full or errored queues? However your system operates, you will need tools to keep it operating well.</p>
<p>Don’t let this suggest that you should be coaching your team to avoid incidents. <a target="_blank" href="https://sre.google/sre-book/postmortem-culture/">Get good at them</a> and use them to learn! Counter-intuitively, infrequent production incidents (and big bang releases) often lead to fragile systems and teams ill-prepared to deal with them.</p>
<p>Minor incidents (from frequent, small releases) are the best kind; driving learning, tools and designs and thinking that support anti-fragility and recovery. Guide teams build their software so that failures <a target="_blank" href="https://medium.com/computers-are-hard/computers-are-hard-bugs-and-incidents-with-charity-majors-252813ae9ce8">affect as few customers as possible and do little harm</a>.</p>
<h1 id="heading-team">Team</h1>
<p>It’s harder to lead using your engineering experience alone. Cross-functional teams, tall software stacks and skill-biased engineers reduces the likely coverage of any team member’s expertise. To have successful missions, you’ll need to to use skills that access the team’s expertise and skills; <a target="_blank" href="https://online.hbs.edu/blog/post/leadership-skills">look to develop and use leadership skills</a>.</p>
<p>We no longer all work from <a target="_blank" href="https://martinfowler.com/bliki/TeamRoom.html">team rooms</a>. Big-visible boards and chatter no longer connect us up. Remote and Async working require documentation, collaborative communication and sync points. Teams need <a target="_blank" href="https://handbook.gitlab.com/handbook/teamops/">ways of working</a> to help them to be drawn out of their heads, code and notepads, and into team spaces to allow alignment and onboarding.</p>
<p>This goes double for graduates and beginner engineers. There’s a lot to read about how remote doesn’t work for beginner engineers. I doubt that this is an absolute. Efforts to find new patterns that educate and train new engineers must be found and put into action.</p>
<p>Both <a target="_blank" href="https://www.swarmia.com/blog/dora-metrics">Dora Metrics</a> and people performance tooling can not tell the full story about the value the team and team members are adding. The Tech Lead’s job here is to add context and to highlight the value that tooling cannot track.</p>
<h1 id="heading-risk">Risk</h1>
<p>In 2024, teams ship. They have far more ownership and responsibility, and less necessary coordination, to get work to customers. This rightly brings more operational risks to the team where they can be well managed. But with fewer project managers embedded in teams, this can bring a gap around risk management that was not there 10 years ago.</p>
<p>The change in delivery style from projects to product has shifted things.. Rather than the risks of not delivering to a plan, many many teams ship frequently and measure swiftly, focusing on the next item of value. Additionally responsiveness to change and <a target="_blank" href="https://continuousdelivery.com/">Continuous Delivery practices</a> are great mitigations for whole classes of risk.</p>
<p>However risk does need focus for projects to succeed, and this can fall on a Tech Lead's shoulders. As well as ensuring that good Continuous Delivery practices are followed, Tech Leads should work with their peers to <a target="_blank" href="https://www.mindtools.com/ah8ju2z/risk-impactprobability-charts">identify key risks</a> beyond these controls. Surprises will happen. Don’t rely on luck.</p>
<p>Owning and operating production has other trade offs. Not only does the team need to build things, it has to ensure that what they own keeps working and meeting customer needs. An key job here is to ensure that the team balances operations, maintenance, and feature work so the right work gets done.</p>
<h1 id="heading-business">Business</h1>
<p>Software products are increasingly released to customers incrementally, and somewhat experimentally. This changes how we work as Tech Leads.</p>
<p>How we write our software needs to change. We need to align our software design to <a target="_blank" href="https://medium.com/hackernoon/place-your-bets-4022b732ba4c">the bets being placed</a> and how they succeed and fail. Good bets need to be augmented and become part of what we deliver at scale. Bad bets get in the way and slow future work down, these need to be cleared out.</p>
<p>These bets, and what we build next, are judged by data we collect. Measuring what our users do is not just for operations or auditing; <a target="_blank" href="https://www.launchnotes.com/blog/how-product-managers-use-data-a-comprehensive-guide">it drives business choices</a>. The products we build need to measure as much as provide features.</p>
<p>The data a team produces can become an operational need beyond team boundaries. An organisation may rely on it being accurate and consistent. Ownership and maintenance of the data, what it means, context and consistency is paramount to success as products change and grow. This is a new focus for many teams. At minimum the Tech Lead’s job is to ensure these requirements are visible and can be supported.</p>
<h1 id="heading-heres-to-another-ten-years">Here's to another ten years</h1>
<p>The job has shifted, but to my eye, in optimistic ways. Teams are more empowered and their choices; engineering teams are far more able to innovate and experiment to find good results. That does place new demands on the leadership in those teams. The good news is we are not alone. There are good shapes and practices to support what we need to do.</p>
<h2 id="heading-want-more">Want more?</h2>
<p>This thinking all pays into the <a target="_blank" href="https://well-rounded-tech-lead.dev/2024/04/24/how-to-be-well-rounded-tech-lead-2024/">developing outline</a> of the <a target="_blank" href="https://well-rounded-tech-lead.dev/">Well-Rounded Tech Lead</a> - take a look and let me know what you think.</p>
]]></content:encoded></item><item><title><![CDATA[Technical Leadership and Delivery: a 10 year review]]></title><description><![CDATA[A little over ten years ago I was a Tech Lead and a consultant Software Engineer. I published the first version of the Well Rounded Tech-lead
I grew, and so did the tech industry. Engineering Managers became a thing, and so did Staff Engineers. Produ...]]></description><link>https://engineeringandcareering.co.uk/technical-leadership-and-delivery-a-10-year-review</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/technical-leadership-and-delivery-a-10-year-review</guid><category><![CDATA[engineering]]></category><category><![CDATA[engineering leadership]]></category><category><![CDATA[technical leadership]]></category><category><![CDATA[techlead]]></category><category><![CDATA[tech leadership]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Tue, 16 Apr 2024 21:54:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/mG28olYFgHI/upload/e4e805d483f132f0baa5ae6ad081fb28.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A little over ten years ago I was a Tech Lead and a consultant Software Engineer. I published the first version of the Well Rounded Tech-lead</p>
<p>I grew, and so did the tech industry. Engineering Managers became a thing, and so did Staff Engineers. Product management got good, real good. As for me, I got a job doing something in-between Eng Management and Staff Engineer, then focused-in on exploring different dimensions of Staff+ for quite a while.</p>
<p>Here I look at what I have seen that has changed before I take a view on how that affects a <a target="_blank" href="https://well-rounded-tech-lead.dev/">Well Rounded Tech Lead</a>.</p>
<h1 id="heading-so-whats-changed-in-the-last-10-years">So, what's changed in the last 10 years?</h1>
<h2 id="heading-organisation-and-delivery-patterns">Organisation and delivery patterns</h2>
<p>As mentioned in the introduction, in modern engineering departments, <a target="_blank" href="https://handbook.gitlab.com/job-families/engineering/development/management/engineering-manager/">Engineer Managers</a> and <a target="_blank" href="https://leaddev.com/personal-development/what-do-we-mean-staff">Staff+</a> do some of the organisational heavy-lifting. Staff+ around governance of architecture, design and build; EMs: personnel, IC management, goal setting and delivery management. Project/Programme Management is often there to solve complex problems that span seams and teams, but are less often found organising individual teams.</p>
<p>Why’s this? Delivery has become more dynamic. Whilst we make <a target="_blank" href="https://databox.com/quarterly-planning-best-practices#quarterlyplanning">Quarter and Half year plans</a>, the cycle time of software delivery has kept reducing. Changes now ship to production multiple times a day, and for some, multiple times an hour. Tools and techniques to deliver value and to gain understanding of what our users do with what we build have massively increased. What we often plan is the learning journey we take with the user and the business, not a long master-schedule of increments towards a big release. <a target="_blank" href="https://www.atlassian.com/agile/agile-at-scale/okr">OKRs</a> (or other target and measure models) and <a target="_blank" href="https://www.mindtheproduct.com/how-to-identify-your-north-star-metric/">North Stars</a> often guide us.</p>
<p>Creativity, ownership, and adaption falls into the shape of a <a target="_blank" href="https://www.mountaingoatsoftware.com/blog/cross-functional-doesnt-mean-everyone-can-do-everything">cross-functional team</a> by default. Some orgs focus on poly-skilled engineers, others build multi-disciplinary teams. 10 years ago I would argue that is the way it should be. Now it often is.</p>
<h2 id="heading-architecture-and-software-delivery">Architecture and software delivery</h2>
<p>Looking at technology, we are on the other side of the Microservices battle. From where I’m standing: small, modular units-of-service that teams own, steward and ship ‘won’. That doesn’t mean the idea-space of how we build our software at scale has stopped developing. <a target="_blank" href="https://monorepo.tools/">Mono-repos</a> and <a target="_blank" href="https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless">serverless</a> continue to provide new options to deliver software, whilst <a target="_blank" href="https://kubernetes.io/">Kubernetes</a> keeps us on our toes. Generally whatever way we do it, we are looking to build team ownable, scalable, independent units of work.</p>
<p>The Dev-ops movement disappointingly drifted from a change in collaboration and a drive away from silos to a label for tools and a type of team. But it brought us both <a target="_blank" href="https://teamtopologies.com/">Team Topologies</a>, <a target="_blank" href="https://learn.microsoft.com/en-us/dotnet/architecture/cloud-native/definition">Cloud-Native</a> teams and <a target="_blank" href="https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance">Dora Metrics</a>. All wins for me.</p>
<p>Cloud-Native teams grew from the fan-in of the Dev-ops movement and the growth of <a target="_blank" href="https://www.techtarget.com/searchcloudcomputing/definition/Platform-as-a-Service-PaaS">PAAS offerings</a>, leading to teams being owner-managers of their products and services. This empowerment can lead to <a target="_blank" href="https://www.mayoclinichealthsystem.org/hometown-health/speaking-of-health/cognitive-overload">Cognitive overload</a> and make it hard to manage an org's tech cost and stack, and make fluid movements between teams an impossibility.</p>
<p>As we shipped more continuously and our services divided into small units of work, testing exhaustively before production became something that slowed us down as much as raised quality. We committed to <a target="_blank" href="https://copyconstruct.medium.com/testing-microservices-the-sane-way-9bb31d158c16">Testing in Production</a>, reaching for better <a target="_blank" href="https://charity.wtf/2020/03/03/observability-is-a-many-splendored-thing/">Observability</a> tools, and ways to control how we introduce and release software changes to users. The growth of monitoring and observability tools allows us to take more risk and react faster, but also to get us into bigger messes</p>
<p><a target="_blank" href="https://adr.github.io/">Architecture Decision Records</a> (ADRs) and <a target="_blank" href="https://www.industrialempathy.com/posts/design-docs-at-google/">Design Docs</a> have become a clear method How we hold <a target="_blank" href="https://emilywebber.co.uk/team-memory-organisational-sharing-and-serendipity-in-distributed-workplaces/">Team Memory</a>. The GitHub implementation of how open-source software gets made has grown to become something that can be used to collaborate asynchronously to make and hold decisions.</p>
<p><a target="_blank" href="https://teamtopologies.com/">Team Topologies</a> arrived. Providing a vision of an emergent and growing platform that supports scaling of software driven companies. This combined the concepts of <a target="_blank" href="https://platformengineering.org/blog/what-is-platform-engineering">Platform Engineering</a>, <a target="_blank" href="https://github.blog/2023-06-08-developer-experience-what-is-it-and-why-should-you-care/">Developer Experience</a>, <a target="_blank" href="https://octopus.com/blog/paved-versus-golden-paths-platform-engineering">Paved (and golden) paths</a> as a method of how engineering orgs scale and enable Cloud-Native teams to be part of a bigger whole-product engineering organisation. Supporting effective, efficient software delivery that can value onboarding and rotation around teams.</p>
<p>Through Paved Paths - a Team Topology adjunct view - the technical choices available to a team is greater than it has ever been. Increasing the empowerment of cloud-native teams from using what a PaaS vendor can provide to a tech stack optimised for the Org and product.</p>
<h2 id="heading-technology-change-drives-forward">Technology change drives forward</h2>
<p>As software eats the world, and the world-and-its-software gets online, security increased massively in importance. 99.9% of computers are networked, and <a target="_blank" href="https://hbr.org/2003/06/the-myth-of-secure-computing">many are accessible and probably vulnerable in some way</a>. All our systems need to actively prevent illegal access. That our software is increasingly built from other people's libraries and code, <a target="_blank" href="https://medium.com/@dmrickert/software-libraries-are-terrifying-4875b6a74be6">makes this harder</a>.</p>
<p>Almost every engineer had a smartphone in 2013. But now your nan and your neighbours' young kids all have them too (<a target="_blank" href="https://www.comscore.com/Insights/Blog/US-Smartphone-Penetration-Surpassed-80-Percent-in-2016#:~:text=That's%20because%202016%20was%20also,up%20to%2081%25%20in%20December.">U.S. Smartphone Penetration Surpassed 80 Percent in 2016</a>). Device-first and the swing to rich, fat front-ends (React and friends) emerged swiftly in the mid 2010s and has become the default way we build websites and frontends, whether it’s needed or not. This has somewhat distorted the skill-sets needed and often engineers become skill-biased towards frontend or backend development.</p>
<h2 id="heading-team-orientation">Team orientation</h2>
<p><a target="_blank" href="https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance">Dora metrics</a> grew out of the original Continuous Delivery and Dev-ops movements. An analysis of <a target="_blank" href="https://cloud.google.com/devops/state-of-devops">the state of Dev-ops</a> - how a great tech divisions got stuff done, boiled down to a set of key measurements that could help direct success.</p>
<p>Along with measuring delivery success with Dora metrics, a class of software has developed collecting stats on engineers and team behaviours from GitHub and delivery-planning tooling. This can be used for a range of analysis, from helping teams to focus on and manage key cycle times, to assessing engineer performance based on their tooling interactions.</p>
<p><a target="_blank" href="https://www.nytimes.com/2016/02/28/magazine/what-google-learned-from-its-quest-to-build-the-perfect-team.html">Psychological Safety</a> and <a target="_blank" href="https://www.devopsinstitute.com/team-cognitive-load/">Cognitive Load</a> have given us clear and useful labels to things we already worried about. We have always known that safety and room-to-think were important for teams, and their ability to learn, but having words and studies to support what we do has really driven this forward.</p>
<p><a target="_blank" href="https://handbook.gitlab.com/handbook/company/culture/all-remote/">Async working and remote work</a> has always been in existence, but the last few years demolished any arguments that it was not possible. The practices and processes to incubate junior engineers <a target="_blank" href="https://technical.ly/software-development/is-remote-work-hurting-junior-developers-tech">have not always kept up</a> and this is a problem we now need to solve.</p>
<h2 id="heading-next-week-ill-look-at-what-that-might-mean-for-a-tech-lead">Next week, I'll look at what that might mean for a tech lead.</h2>
<p>Thinking hat went on. Job done: <a target="_blank" href="https://engineeringandcareering.co.uk/tech-leads-in-2024-navigating-the-evolving-landscape">Tech Leads in 2024: Navigating the Evolving Landscape</a></p>
]]></content:encoded></item><item><title><![CDATA[Best before end: Your Software has a shelf life.]]></title><description><![CDATA[Ever got caught up with a full fridge, picking through the items, looking for what’s in-date and what needs slinging?
Everything has a shelf life, even software. Continuous delivery of value is hard in the long term. Swift at the start, change often ...]]></description><link>https://engineeringandcareering.co.uk/best-before-end-your-software-has-a-shelf-life</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/best-before-end-your-software-has-a-shelf-life</guid><category><![CDATA[engineering]]></category><category><![CDATA[Debt]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[Product Management]]></category><category><![CDATA[design and architecture]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Tue, 26 Sep 2023 07:44:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1695714474046/1575879a-a67a-40d8-a827-602ad71e6127.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ever got caught up with a full fridge, picking through the items, looking for what’s in-date and what needs slinging?</p>
<p>Everything has a shelf life, even software. Continuous delivery of value is hard in the long term. Swift at the start, change often slows down as delivery continues.</p>
<p>In my <a target="_blank" href="https://engineeringandcareering.co.uk/your-software-didnt-rot-you-levelled-up">last post</a>, I walked through how development friction often increases. And how building software gets harder the more we add. Our options often become more restricted than we would want.</p>
<p>I asked myself: If I can understand it better, can I communicate the challenges? And if I can do that, can I create more options to manage it better?</p>
<h2 id="heading-three-forces-of-complexity">Three Forces of Complexity</h2>
<p>Every project is a snowflake. Reasons are complex and different for every organisation and product. However, I’ve identified three forces that we can tackle in turn, to keep our software fresher for far longer.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695681326933/daf2a65a-49b6-4f82-8186-38bf3dd06def.jpeg" alt class="image--center mx-auto" /></p>
<h2 id="heading-1-not-every-bet-pays-out">1. Not every bet pays out</h2>
<p>When we begin, we know the least about what our customers need, or how we might solve it effectively. We always need to make assumptions and decisions to move. These choices are rarely perfect. Not every feature gets traction. We measure, learn, adapt.</p>
<p>We bet when we pick architectures and build software too; though we don’t acknowledge it as much. We gamble on what we know, or what we think might work. We take guesses at what options we need to keep and on what technologies will solve our problems.</p>
<p>Bad bets leave behind tech debt and feature cruft. These can cast long shadows over our future work, distorting and forcing it into shapes that aren’t ideal.</p>
<p>Clearly, we need to tackle the parts of our systems that are costing us, but is there more we can do?</p>
<h2 id="heading-2-complexity-grows">2. Complexity grows</h2>
<p>We build our products and systems in small slices. We create spaces and put like code together. As we go on, those places get cramped and may creak at the seams. But they still seem like good places, it's just that little bit harder each time.</p>
<p>With each success comes more complexity, and that complexity needs to be navigated with every new change. Even if we are prudent (and often we are not), and refactor mercilessly, the necessary complexity can become a point of development friction.</p>
<p>The complexity of our systems needs to be managed in more than a slice-by-slice way. We need to let our systems breathe and hold something that our engineers can navigate with low friction.</p>
<h2 id="heading-3-need-drifts">3. Need drifts</h2>
<p>Today's news is tomorrow's chip paper. No matter how well we do at managing debt, cruft and complexity, what we build has a lifecycle. New products come to market. Our customers and our organisations develop and what they want and need changes over time.</p>
<p>But we need to work with what we built, to stale needs. The past curses us again.</p>
<p>Technologies also lose their freshness. What looks cool, well-maintained and useful can become stale and unloved. Sometimes just a major version change can cost months of work. Perhaps we should always plan for obsolescence.</p>
<h2 id="heading-how-do-we-get-out-of-it">How do we get out of it?</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695681354427/8a037288-cb27-4513-986b-badf1eb8a8c9.jpeg" alt class="image--center mx-auto" /></p>
<p>Each of these is a rising grade of system hygiene to be tackled. If we clean and manage our bets we should reduce the accidental and unnecessary complexity.</p>
<p>If we are aware of where our systems are hard to navigate and change and we fix and spread that complexity, we make it easier for change to happen.</p>
<p>If we accept that what’s needed is going to change, we can build systems that will adapt, and align with what’s happening with our product.</p>
<p>Success at each level should allow us to be ready to tackle the next. There is a richness to how we can solve these, which I’ll cover in the next post, suggesting tools and practices that we already know to move us forward.</p>
]]></content:encoded></item><item><title><![CDATA[Your software didn’t rot. You levelled up.]]></title><description><![CDATA[You start to build something new, and it feels great
Perhaps you know the feeling? A team begins to build a new product. The technology stack is selected, and coding begins. You set up spaces where you will code and ship into. Soon you are flying. Wr...]]></description><link>https://engineeringandcareering.co.uk/your-software-didnt-rot-you-levelled-up</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/your-software-didnt-rot-you-levelled-up</guid><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[agile development]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Mon, 25 Sep 2023 07:44:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1695585981045/8225f1a6-3abc-41f3-9f39-652210bdeb7b.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-you-start-to-build-something-new-and-it-feels-great">You start to build something new, and it feels great</h2>
<p>Perhaps you know the feeling? A team begins to build a new product. The technology stack is selected, and coding begins. You set up spaces where you will code and ship into. Soon you are flying. Writing good code and good features is never easy but work rolls out fine: predictable, with low friction. Changes and enhancements dropping into the spaces you’ve curated.</p>
<p>It feels like beginning a game of Tetris. You have lots of space and time to work out where to place your shape. There’s room for errors and corrections. You could keep doing this all day.</p>
<h2 id="heading-things-change-and-not-for-the-better">Things change, and not for the better</h2>
<p>A few months later something shifts. Change is no longer easy. Things don’t fit anymore. You're walking through syrup.</p>
<p>The team’s time is taken up with juggling the management of what you have. Adding new things to your product in a reasonable timescale is a constant challenge. There’s always a time sync or a reason why a desired feature is much tougher than it should be.</p>
<p>You are no longer playing Tetris on easy; dropping in blocks and clearing the board. The Tetris game board is almost full, and it takes all your attention to find space to keep the game going.</p>
<h2 id="heading-how-do-we-get-here">How do we get here?</h2>
<h3 id="heading-software-dont-come-for-free">Software don’t come for free</h3>
<p>New work appears when shifting from fresh green fields to supporting and maintaining a live product. But often the friction in additional development grows well beyond that, and optimising the product and business for the support needed for a live product is not enough (though an interesting topic for another day).</p>
<p>We don’t write all our own software. We use 3rd party and open-source libraries, and that helps us go fast. However, we should also acknowledge that this does not come for free. These libraries get updates, bug fixes, and security patches. Engineering teams need to stay on top of this and ensure that their software is built on good and trustable foundations. This takes time and thought.</p>
<h3 id="heading-further-development-friction-is-the-fault-of-the-future">Further development friction is the fault of the future</h3>
<p>Those two areas are not the complete picture, not by a long shot. There are a broad range of contributors that cause development friction, but what it boils down to change. Change is hard.</p>
<p>What we have built is likely unsuitable to solve the next, new, problem. How could we have known where we would end up when we started?</p>
<p>It can be that the good code we need is surrounded by cruft. Things we don’t need that get in the way. Bets and debt - produced by time-to-market pressures and experiments. We often build more than we need, either accidentally or to discover what we need to know.</p>
<p>Success can bring complications. Maintenance of a growing changing system in a growing changing organisation is hard and needs commitment, focus and time. We also might not be able to see that what we own and maintain is slowing us down, maybe we need to remove more than the cruft. That conversation can be very hard to have. We often love what we have built and see sunk costs as a commitment to a route.</p>
<h2 id="heading-ways-out">Ways out</h2>
<p>In my next post, I’ll break down the friction agents into some grouping that can help us navigate our way through the drag, but there are a few broad areas we can think about before we use a model.</p>
<h3 id="heading-predict-and-protect">Predict and protect</h3>
<p>We can certainly work to predict what’s going to happen and try to prevent its worst effects. Can we build less software when we are at the learning stages, or keep it malleable to adjustment or removal?</p>
<h3 id="heading-communicate-and-collaborate">Communicate and collaborate</h3>
<p>A ‘No’ often offends. After all, if everything has been going well, and then it all slows down, what’s to blame? Expectations have been set, and maybe commitments have been made?</p>
<p>I wonder sometimes what folks are hearing when I explain we need to go slower. They look surprised, and sometimes disappointed. Are they worrying that the engineers are getting lazy or bored? Do they now see us as a problem or a blocker rather than a team that solves things?</p>
<p>I think it’s important that we not only know the game we are playing but that we get ahead of the game. Stop being damned optimists and expect the levels to get more complex. We should ensure we are communicating and collaborating with our fellow decision-makers to set expectations and make choices together. We are <strong>all</strong> placing bets and adjusting as we learn. ‘No’s may have to be delivered, but it shouldn’t come as a surprise.</p>
<h3 id="heading-modern-software-development-is-progressive-not-magic">Modern software development is progressive, not magic</h3>
<p>Software is flexible and malleable, but not infinitely, at reasonable costs. Sure, Agile Delivery is iterative and incremental, but at its heart, it's about reacting to what we learn in the most valuable and useful ways. we need to design and then re-design as we gain new information. And we need to keep talking about that.</p>
]]></content:encoded></item><item><title><![CDATA[10x teams on the Quality Bits podcast]]></title><description><![CDATA[I've begun writing out my thinking about the important subject of developer effectiveness and 10x teams recently.
Quality Bits has kindly chatted to me about the subject. Take a listen, and let me know what you think
https://www.buzzsprout.com/203713...]]></description><link>https://engineeringandcareering.co.uk/10x-teams-on-the-quality-bits-podcast</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/10x-teams-on-the-quality-bits-podcast</guid><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Wed, 05 Apr 2023 08:03:04 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1680641577622/dba60ca3-d6ed-4c6b-8920-68b1442e30db.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I've begun writing out my thinking about the important subject of developer effectiveness and <a target="_blank" href="https://ten-x.team/">10x teams</a> recently.</p>
<p>Quality Bits has kindly chatted to me about the subject. Take a listen, and let me know what you think</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.buzzsprout.com/2037134/12500622">https://www.buzzsprout.com/2037134/12500622</a></div>
]]></content:encoded></item><item><title><![CDATA['With Great Power...' documentation as a security platform]]></title><description><![CDATA[Secure systems are important. We often hold precious information in our products and that needs to be protected.
There are several different approaches to ensuring good enough security in digital products. My go-to option is to place responsibility w...]]></description><link>https://engineeringandcareering.co.uk/with-great-power-documentation-as-a-security-platform</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/with-great-power-documentation-as-a-security-platform</guid><category><![CDATA[Security]]></category><category><![CDATA[documentation]]></category><category><![CDATA[shiftlefttesting]]></category><category><![CDATA[DevSecOps]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Wed, 01 Feb 2023 17:53:05 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1675273855057/e7a1821b-d845-4777-8279-60c5c7284f60.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Secure systems are important. We often hold precious information in our products and that needs to be protected.</p>
<p>There are several different approaches to ensuring good enough security in digital products. My go-to option is to place responsibility where the work is. Requiring the teams that own the products to own, understand and deliver securely.</p>
<p>That doesn't happen by magic. Teams need sufficient experience, information and support to make good choices. That's where great documentation fits in. Guidance and ease for engineers plays a big part in helping teams do security well.</p>
<p>In this blog post, I'll tell you why it's important and take a deep dive into an example I helped build.</p>
<h1 id="heading-why-security-standards-are-important">Why Security Standards are important</h1>
<p>Most engineering teams need assistance to own security - it's not their area of expertise. They need to understand security threats, and the protective solutions needed in their products. They also need a broader picture of how to operate online in this risky world and how to reason about threats.</p>
<p>Additionally, empowered product teams get very good at making trade-offs to get to market and find product-market fit. They need to know what's not negotiable, and when security might become more important as their product grows.</p>
<p>A document is no replacement for an expert, but it can scale, and be there whenever someone needs advice. It can cover the default and the quick wins, allowing experts to deal with more novel problems.</p>
<h1 id="heading-what-a-security-standard-needs-to-do">What a security standard needs to do</h1>
<blockquote>
<p><strong>A Standard</strong> sets a bar. It says what needs to happen.</p>
<p><strong>A good Standard</strong> presents solutions and safe ways to work: <a target="_blank" href="https://medium.com/codex/what-is-a-paved-path-b2294463a3a9">paved paths</a>, <a target="_blank" href="https://ricomariani.medium.com/the-pit-of-success-cfefc6cb64c8">pits of success</a>, and <a target="_blank" href="https://medium.com/@sharlene.mckinnon/guardrails-are-essential-for-any-distributed-agile-team-c6b03015a0e9">guardrails</a>. Low-friction, good defaults to avoid or solve the problems that the standard lays out.</p>
<p><strong>A great Standard</strong> explains why. It enables teams to make the right choice in context and helps grow their experience. It might even ask them to contribute.</p>
<p><strong>A useful Security Standard</strong> needs to do all these.</p>
</blockquote>
<p>In the deep drive below you'll see a standard that does these, as well as present contact points, for when the standard isn't enough; guidance in structured thinking about risk and security, so folk are likely to make good decisions; ways to learn more about security, so that we can grow community.</p>
<h1 id="heading-meet-stan-a-secure-engineering-standard"><strong>Meet Stan, a Secure Engineering STANdard</strong></h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675248716589/2f376162-4ec9-456a-947a-ec05cdb549a3.png" alt class="image--center mx-auto" /></p>
<p>It was nicknamed the STAN, after Stan Lee, the Marvel Comics' key creator. It has his phrase “<em>With great power comes great responsibility</em>” in large friendly letters on the cover.</p>
<p>This served as a reminder that empowered and autonomous teams have great freedom in their choices, but also a great responsibility to take good care of their users’ data.</p>
<p>The guide provided materials to help teams understand and think about the risks their products are exposed to. It also provides a structure to operate within to mitigate those risks.</p>
<h2 id="heading-how-did-the-stan-do-this">How did the STAN do this?</h2>
<h3 id="heading-the-stan-was-clear-about-what-risks-need-to-be-managed">The STAN was clear about what risks need to be managed...</h3>
<p>The Stan presents a set of baseline risks that must always be managed. These <em>Secure by Default</em> Directives set up every product for security success. Every team must follow these directives when building software.</p>
<p>The STAN also contains a set of directives for higher-risk areas and advice on how to navigate them in a bespoke way.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675205184032/f5e5443f-a01c-4b95-a5e1-973db096f34b.png" alt="The STAN offers readers a set of ‘secure by default’ directives that should be followed" class="image--center mx-auto" /></p>
<h3 id="heading-and-provided-solutions">...and provided solutions</h3>
<p>Telling people the risks they need to protect against is not enough. The Stan made it easy for teams to solve these problems and manage these risks. It did this by providing a practice or solution for each directive.</p>
<h3 id="heading-the-stan-guided-choices-through-graded-paths">The STAN guided choices through graded paths</h3>
<p>There’s diminishing value in building more than you need. Teams should go fast when it’s safe to do so and take special care when it’s important.</p>
<p>The STAN contributed to this by presenting an operating model that avoids rules for rules’ sake. Simple, low-risk projects can ship swiftly with default levels of security. More complex and risky projects can be assessed and suitable security built in.</p>
<p>The STAN offed graded paved paths, based on the type of data being processed. If a product was assessed to be in a higher-risk category, the team was provided with a higher level of directives and practices.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675248564927/29e9dcf2-9f57-4aa7-933f-588122425e35.png" alt="The STAN asks readers to consider how much security they need" class="image--center mx-auto" /></p>
<h3 id="heading-the-stan-helped-people-think-about-managing-risk">The STAN helped people think about managing risk</h3>
<p>The distribution of security experience is often uneven. The STAN helped to level this and helped everyone think about what they should be doing to manage risk.</p>
<p>This included sections on Threat Modeling and thinking about risk, as well as guidance for learning more about security.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1675205327745/1c767535-c30d-49d6-b6be-747dedeb223a.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-the-stan-was-a-collaborative-living-document">The STAN was a collaborative living document</h3>
<p>The STAN was actively developed in collaboration with product engineers and was improved by their contributions and feedback.</p>
<p>Good defensive practices develop over time. The Stan was delivered iteratively. We didn't want to get everything perfect before shipping. We expected practices to change and invited discussion.</p>
<p>It was built in markdown in GitHub, where engineers spend a lot of time. It invited engineers to review, feedback and contribute in a form they already knew.</p>
<h2 id="heading-a-standard-can-be-impactful"><strong>A standard can be impactful</strong></h2>
<p>Supporting product teams to make good and informed decisions means that a small Security team can have a big impact.</p>
<p>Creating a standard enables security teams to focus on adding value in more risky areas, safe in the knowledge that the basics are there.</p>
<p>Cover by <a target="_blank" href="https://unsplash.com/@helloimnik?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Hello I'm Nik</a> from <a target="_blank" href="https://unsplash.com/photos/MAgPyHRO0AA?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></p>
]]></content:encoded></item><item><title><![CDATA[Find your way, without a map]]></title><description><![CDATA[There's a big challenge in modern software and product delivery. We get ambitious missions, goals (or objectives). But we can’t easily get there from where we are.
If we could they would not be ambitious
We do our best. But complexity often drives us...]]></description><link>https://engineeringandcareering.co.uk/find-your-way-without-a-map</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/find-your-way-without-a-map</guid><category><![CDATA[Roadmap]]></category><category><![CDATA[Product Management]]></category><category><![CDATA[delivery]]></category><category><![CDATA[lean]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Mon, 23 Jan 2023 21:45:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/9PHd1YLGPCw/upload/0b68b5b8aa3920bc86610d6d841aa4bd.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There's a big challenge in modern software and product delivery. We get ambitious missions, goals (or objectives). But we can’t easily get there from where we are.</p>
<p><strong>If we could they would not be ambitious</strong></p>
<p>We do our best. But complexity often drives us to focus on too big a chunk or to make small changes that don't get us going where we need to go.</p>
<p>I use horizon planning to discover what we need to do. The key small steps that are likely to inform and lead toward where we want to be and the more ambitious chunks that can really move the needle.</p>
<p>If you have challenges identifying the right next steps to get towards your goal or want to bring focus to a complex set of moving parts and make some good decisions, <strong>read on</strong>.</p>
<h1 id="heading-take-an-imaginary-journey-with-me">Take an imaginary journey with me</h1>
<blockquote>
<p><strong><em>Imagine starting out on a long hike</em></strong> <em>in unknown territory</em></p>
<p><em>We know</em> <strong><em>where we are.</em></strong></p>
<p><em>Our</em> <strong><em>destination</em></strong> <em>is way over there over the</em> <strong><em>horizon</em></strong>. Several horizons.</p>
<p><em>We cannot navigate by sight, so we get a map and make a route plan.</em></p>
<p><strong><em>And what happens..?</em></strong></p>
</blockquote>
<h2 id="heading-in-the-doing-our-plans-change">In the doing, our plans change</h2>
<p>On the ground, <strong>things look different</strong>. We learn about our equipment and the terrain as we go. We hit obstacles that we can’t get through. We learn about our initial choices and what the team can do. We may need to find new tools, assistance and options.</p>
<h1 id="heading-why-is-this-always-happening">Why is this always happening?</h1>
<p>When we start we know the least. There is a high degree of volatility and variability in our predictions. We can't know all the answers, because we have not been there.</p>
<p><a target="_blank" href="http://www.agilenutshell.com/cone_of_uncertainty"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1673721457183/3b82e25d-07b3-43b3-9867-be60a5cffa2a.png" alt class="image--center mx-auto" /></a></p>
<p>from <a target="_blank" href="http://www.agilenutshell.com/cone_of_uncertainty">http://www.agilenutshell.com/cone_of_uncertaint</a>y.</p>
<p>I want to add value as soon as I can - providing solutions to our customers. But I know that discovering the information that will provide the confidence to commit to bigger and better steps is equally important.</p>
<h1 id="heading-introducing-horizon-planning">Introducing <strong>Horizon Planning</strong></h1>
<p>Horizon planning is my way of navigating the complex - getting to where I want without knowing exactly where that is or what the path there might look like.</p>
<p>I break up the steps to get to my goal and segment them into three areas</p>
<ol>
<li><p><strong>Next</strong>: What I can do now: quick wins and information gains.</p>
</li>
<li><p><strong>Future</strong>: The big chunks that get me closer to a solid solution</p>
</li>
<li><p><strong>Ideal</strong>: The solution, I think I want, to reach my goal</p>
</li>
</ol>
<h2 id="heading-the-value-of-horizons">The value of Horizons</h2>
<p>By seeing how the first actions line up against the future and ideal state, you can check that what you do now will inform you about what you should do next - making sure it all joins up.</p>
<p>It also means you might find out early that big bet ain't so good, allowing swift adjustments with new key information.</p>
<h2 id="heading-roots"><strong>Roots</strong></h2>
<p>‘<strong>McKinsey's Three Horizons of Growth</strong>’ was documented in 1999. <strong>Harvard Business Review</strong> championed the thing in the 2000s and called The Three Horizons: <em>'A foundation of innovation strategy.'</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1673722283829/d539afd1-ae10-474d-869a-32b298670eee.png" alt class="image--center mx-auto" /></p>
<p>For them, it was all about big planning in three phases:</p>
<ol>
<li><p>Short-term operation (and innovation) - maximizing value on what you hold.</p>
</li>
<li><p>Extend the business model to new places.</p>
</li>
<li><p>Create new things in response to challenge and change - highly uncertain work.</p>
</li>
</ol>
<p>I've seen it also adopted as a way to encourage growth conversations. Examining the challenges in our present, our aspirations for the future and the innovations we might need to address both.</p>
<h3 id="heading-from-the-toyota-production-system">From the Toyota Production System</h3>
<p>The Toyota Production System offers a similar pattern. That getting to a goal requires a series of experiments through an experimental path of targets to where you need to go. Quickly informing on if and when you need to steer your course and change your plan.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1673740645420/528c7da6-c23a-4940-9e65-48b52a43d52b.png" alt class="image--center mx-auto" /></p>
<p>I combine the two, allowing me to plan forwards and backwards to gain confidence in what I need to do next.</p>
<h1 id="heading-how-does-that-work">How does that work?</h1>
<h2 id="heading-ask-what-might-we-do">Ask: what might we do</h2>
<p>For my usages, It has operated as simply as presenting a Current State on the left, the Goal on the right, and asking:</p>
<blockquote>
<p><strong><em>what's going to help us get from here and now to the goal?</em></strong></p>
</blockquote>
<p>With these ideas, I lay them out against three horizons:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674568047860/ea2b20fa-e5ce-49ce-b721-efa05668a701.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-ask-what-should-we-do">Ask: what should we do?</h2>
<p>I then work through questions like</p>
<blockquote>
<p><strong>What's going to have to change for us to get there?</strong><br /><strong>What are we going to need to know?</strong><br /><strong>What feels risky enough, we need to experiment first?</strong><br /><strong><em>What early work will lead to the bigger steps later?</em></strong></p>
</blockquote>
<p>When we ask these questions, we need to remember that it's okay, well, actually great, to think in steps or stages of delivery, learning and change. With this in mind, I add and remove items from my plan.</p>
<p>I've found it often useful to think of what value and information you'll gain at each step. It can be well worth checking in you're doing both.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674568060061/e7fd0cb3-ac14-4308-9a6d-7bf1327b8d62.jpeg" alt class="image--center mx-auto" /></p>
<h1 id="heading-putting-the-plan-into-action">Putting the plan into action</h1>
<p>This can provide clarity of the work to do next and how it will lead us forward. Work that:</p>
<ol>
<li><p>Aligns with the big goals</p>
</li>
<li><p>Solves a problem right now</p>
</li>
<li><p>Provides information on the bigger next steps</p>
</li>
</ol>
<p>As we play this work we will be learning about reality. And so we will need to adjust, and change what we do as we look to ship value and gain information.</p>
<h2 id="heading-be-ready-to-adapt-and-seek-the-next-hill">Be ready to adapt and seek the next hill</h2>
<p>As you operate in horizon 1, it will be informing you about the reality of your predictions about Horizon 2.</p>
<p>You might adust in-flight, allowing your mapping to work as an adapting plan.</p>
<p>As you get close to the end of Horizon 1, if your world still appears too complex: iterate. Take what you know into your current situation and convert all or part of Horizon 2 as your new 'next things to do', de-risked and informed.</p>
<h1 id="heading-are-you-ready-to-be-certain-about-uncertainty">Are you ready to be certain about uncertainty?</h1>
<p>I use this model in different ways.</p>
<p>I've used it internally, when I own a roadmap, chunking out sections of work that will inform the group about the next phases of the roadmap.<br />I've used it as an explainer, helping consultants on the ground see the complexity ahead and how we can approach change.<br />I've also used it as a facilitation tool, allowing a group to discover and clarify the right work and pathways to the goal.</p>
<p>I'd love to hear your solutions to navigating uncertainty.</p>
]]></content:encoded></item><item><title><![CDATA[Make the invisible visible!]]></title><description><![CDATA[As we become more senior, we are given the gnarly problems. Big challenges that have no clear answer, one that other folks may have already tried and failed to fix.
So what do we do? Have a go? Sometimes fail?
This simple approach is not unreasonable...]]></description><link>https://engineeringandcareering.co.uk/make-the-invisible-visible</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/make-the-invisible-visible</guid><category><![CDATA[consultant]]></category><category><![CDATA[Problem Solving]]></category><category><![CDATA[empathy]]></category><category><![CDATA[gnarl]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Mon, 16 Jan 2023 17:19:03 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/1bjsASjhfkE/upload/6c2441da80e5656c00d1f52f80d905b7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As we become more senior, we are given the gnarly problems. Big challenges that have no clear answer, one that other folks may have already tried and failed to fix.</p>
<p>So what do we do? Have a go? Sometimes fail?</p>
<p>This simple approach is not unreasonable. Your solution could well be different to the previously tried ones. And if you fail fast and cheaply, you are likely to have gained new information.</p>
<p>Sometimes that's not enough. If your problem has to scale, if it needs to live beyond you, and critically, if you need to take folks with you on the journey, you might need to think like a consultant.</p>
<p>Here I offer four lenses of consultant thinking that can help move the unmoveable.</p>
<h1 id="heading-stop-and-engage-with-the-problem">Stop and engage with the problem</h1>
<blockquote>
<p><em>"Rarely do we find [people] who willingly engage in hard, solid thinking. There is an almost universal quest for easy answers and half-baked solutions. Nothing pains some people more than having to think."</em></p>
<p><strong><em>Martin Luther King, Jr.</em></strong></p>
</blockquote>
<p>If you don't know what the problem is or you aren't helping move towards a solution, something is likely to be wrong.</p>
<p>Many big problems come with distractions. Even as you are asked to solve a problem, you maybe be also passed a whole pile of associated issues, complexity, demands. The best consultants are the ones who look past these and can stare the real problem in the eye.</p>
<p>The key to your challenge might be getting to the heart of the problem, stopping the urgent wanting to outweigh the important, and avoiding analysis paralysis.</p>
<p>Be sure to take a little time to hone in on the root problem. Find some folks who can tell you about it and listen. Then think past that and seek a north star that can drive the solving forward.</p>
<h1 id="heading-make-the-invisible-visible">Make the invisible visible</h1>
<blockquote>
<p><em>"Artmaking is making the invisible, visible."</em></p>
<p><strong><em>Marcel Duchamp</em></strong></p>
</blockquote>
<p>Knowing the problem is not enough. We don't work in a vacuum. We likely need to take people with us, so that they can share the vision and journey ahead.</p>
<p>This can be done by showing folks something that hasn't been seen clearly before. Even if it's confirming something suspected, folk need to join us in the same conclusions, or at minimum, trust us that we really grok the problem.</p>
<p>Show your thinking. Highlight the roots of the problem, the data we have gathered, or the mechanisms we've used to highlight the troubles. It doesn't have to be rocket science. It might be just sticking pins on a board, collating conversations, or the evidence of repeating anti-patterns.</p>
<p>We can bring our experience to bear here. the show-and-tell can software. Hacked, scraped, just about running. Sometimes there's nothing more compelling than something that feels like the beginning of a solution.</p>
<h1 id="heading-enable-new-thinking">Enable new thinking</h1>
<blockquote>
<p><em>"We can't solve problems by using the same kind of thinking we used when we created them."</em></p>
<p><strong><em>Albert Einstein</em></strong></p>
</blockquote>
<p>To solve a gnarly problem we have to challenge the current ways of doing and thinking.</p>
<p>People under pressure do what they can; limited budgets and fixed cultures can result in <a target="_blank" href="http://www.chacocanyon.com/pointlookout/120822.shtml">Hill Climbing to local maxima</a>. To truly solve someone's problem we need to shift the ways of thinking and habits so the problem does not respawn.</p>
<p>This might concern how priorities get set and who owns what. It's getting down to the root cause, and <a target="_blank" href="http://en.wikiquote.org/wiki/Gerald_Weinberg#The_secrets_of_consulting.2C_1985">the root cause is always people</a>, behaviors, culture, and attitude and sometimes it's the last thing they want to talk about.</p>
<p>Talk about the future, and change. Looking past, rather than at, past misdemeanors, and showing a path forward can be what's needed to release folk from the traps they find themselves in.</p>
<h1 id="heading-empathy-for-change">Empathy for change</h1>
<blockquote>
<p><em>"Empathy is really the opposite of spiritual meanness. It's the capacity to understand that every war is both won and lost. And that someone else's pain is as meaningful as your own."</em></p>
<p><strong><em>Barbara Kingsolver</em></strong></p>
</blockquote>
<p>Empathy is the secret of a great consultant. Without empathy, you won't engage with the problem effectively or with the people whose lives revolve around it. You won't listen and people won't talk. You'll be disconnected from the real problem space.</p>
<p>Empathy is also needed for those honest but fierce conversations that need to happen to drive toward change. Because change is hard. We need to connect with them, and them with us, to bring trust and then honesty, and to find a way forward together.</p>
<h1 id="heading-if-you-boil-everything-down-you-always-get-soup">If you boil everything down, you always get soup</h1>
<blockquote>
<p><em>"Almost every wise saying has an opposite one, no less wise, to balance it."</em></p>
<p><strong><em>George Santayana</em></strong></p>
</blockquote>
<p>There is a natural tension between solving the problem and empathy for the pain the client might feel in the change that must happen. The plaster has to come off; do we rip it off fast or slow?</p>
<p>There is also a tension between collecting data (to report on what we see) and moving forward with something new. Move too fast, without a complete set of solid facts, or move too slowly and be perceived to be doing nothing to help.</p>
<p>Are there any easy answers to solving hard problems? Of course not.</p>
<p>Gerald Wienberg, the original Super-Consultant, suggests the best starting position is asking people to try something different. And then listen, learn, and iterate.</p>
<p>Turning a supertanker takes much time, and much must cost, the secret is getting to the right place to start quickly enough, so the turn happens in time and safely. The next best time is now.</p>
]]></content:encoded></item><item><title><![CDATA[Building Growth Plans with Mentees]]></title><description><![CDATA[Mentoring is all about growth and learning.  Growth conversations are best if supported with goals, direction or even a plan. But how do you get to having a plan?
Engineer learning and development is a big ol’ topic. In this post, I’ll focus on a few...]]></description><link>https://engineeringandcareering.co.uk/building-growth-plans-with-mentees</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/building-growth-plans-with-mentees</guid><category><![CDATA[mentorship]]></category><category><![CDATA[#growth]]></category><category><![CDATA[learning and development]]></category><category><![CDATA[management]]></category><category><![CDATA[engineering-management]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Fri, 13 Jan 2023 13:35:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1673551520311/afd43245-ac2f-4658-b0a3-7baeb6656214.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Mentoring is all about growth and learning.  Growth conversations are best if supported with goals, direction or even a plan. <strong>But how do you get to having a plan?</strong></p>
<p>Engineer learning and development is a big ol’ topic. In this post, I’ll focus on a few patterns, tools and techniques that help one-on-one mentoring.</p>
<h1 id="heading-one-size-does-not-fit-all">One size does not fit all</h1>
<p>Let’s begin with a little broad general advice: Personal development and skill acquisition is a spectrum.</p>
<p>Beginners need structure and direction.  They don’t know what they don’t know.</p>
<p>Experts need choice, freedom and feedback. They often know what good looks like and likely have developed some acquisition techniques. They will have gaps and blind spots - that's where you come in.</p>
<p>Those that fall in between need enough structure to not get lost, sometimes leaning into the meta-skills of learning and generalizing. They also need to develop the ability to be self-directed.</p>
<p><strong>My first recommendation is to know where folks are and act accordingly.</strong></p>
<ul>
<li><p>Beginners/ juniors should have a clear paved path to follow.</p>
</li>
<li><p>Journey-folks should have several paths to choose from and guidance and checks in place to help them pick well, steer and achieve.</p>
</li>
<li><p>As people develop towards Expert, they should be able to choose and steer. Mentoring can operate more like partnering or peer-to-peer chats. Guidance, structure and checks become important again when they become stretched or are working in new areas.</p>
</li>
</ul>
<h1 id="heading-building-objectives">Building <strong>Objectives</strong></h1>
<h2 id="heading-progression-frameworks-and-career-ladders">Progression Frameworks and Career Ladders</h2>
<p><a target="_blank" href="https://progression.fyi/">Skills ladders</a> and progression frameworks are a great way to have a scaled-up impact on Engineer progression. Many companies have something like them and they can be very useful for levelling, career advancement and goal planning. I've found these can be great tools to help folk identify key goals and next steps.</p>
<p>If a progression framework is not the right thing, consider matching role breakdowns that call out key skills and behaviours.</p>
<p><strong>Recommendation: use these in conversation, to guide your mentee to examine and increase their expertise, where it is low.</strong></p>
<h2 id="heading-role-modelling">Role modelling</h2>
<p>Some folks focus on people, not skills. They can see someone who is good, who they want to be like. This can be used in conversation and processes to identify traits and skills that can be acquired</p>
<p>Consider using these questions to build awareness and some goals</p>
<ol>
<li><p>Who do you want to be like and why?</p>
</li>
<li><p>What makes them ace?</p>
</li>
<li><p>What aspects are important to the role they do well?</p>
</li>
<li><p>How could you get there?</p>
</li>
</ol>
<p><strong>Recommendation: use this in conversation when someone knows who, not what they want to be.</strong></p>
<h2 id="heading-taking-on-a-new-challenge">Taking on a new challenge</h2>
<p>When a mentee is taking on a new challenge. A good goal-growth conversation could be one like the following</p>
<ol>
<li><p>To achieve this, what would good need to look like?</p>
</li>
<li><p>What skills do you have? And how do you know this?</p>
</li>
<li><p>What skills do you need? And which do you need first?</p>
</li>
<li><p>How will you know you are winning?</p>
</li>
</ol>
<p><strong>Recommendation: use this with people who have awareness of what they can and have done.</strong><br /><strong>Consider a more feedback-based approach if they lack key awareness or have found themselves caught by overconfidence.</strong></p>
<h1 id="heading-identifying-goals-that-get-done">Identifying goals that get done</h1>
<p>All the above options can generate goals and at least the initial steps to achieve them.</p>
<h2 id="heading-seeking-opportunity">Seeking Opportunity</h2>
<p>Once you have found some potential objectives, your mentee needs to have the opportunity to see, to act and to learn. Together you should look for what goals align with the opportunities available, or talk about where those might be found.</p>
<h2 id="heading-goal-oriented-planning">Goal-oriented planning</h2>
<p>Once you both have a clear idea of the right goals, you are going to want to plan, delegate and iterate. Using your mentor conversations to check-in, learn, adjust and replan.</p>
<p>I've found that selecting 3-4 key goals and collaborating on the info in the sheet below helped ownership and focused the conversation in the right places as we kept meeting.</p>
<p><img src="https://lh5.googleusercontent.com/oH6W8Z0RtFgtnYuvtdjSUtcZ0hyXwD3OO0fBSPE3d0VVuL4CZilDT_sFORL8dGTH4r3-W1KTr6wyenY5wqtGqp3HN9o2E47qhyS3PTaTj7vyKGMe0VUA_h-7kyrDUdU6x7ewS_7Kwy6GJca1ysSJtn5tr6ytRAPy-6LCRo7_pojQJi1dTIy_TetYkY56bg" alt /></p>
<p><strong>Recommendation: put the goals into a format that your mentee can own and update; and one you both can talk around.</strong></p>
<h1 id="heading-needs-opportunity-motivation">Needs + Opportunity + Motivation</h1>
<p><strong>Needs + opportunity + motivation = Useful, actionable objectives</strong></p>
<p>Working with your mentees to find what they need to do and how they might practice gets you most of the way there. the mentee's alignment and ownership, together with your chats and expertise can bring together the will and way power needed to motivate your mentee even in the trickiest areas.</p>
]]></content:encoded></item><item><title><![CDATA[Mentoring Through Conversation]]></title><description><![CDATA[Mentoring is often been essential to how engineers work and grow. It can bring knowledge, wisdom and experience to bear on an individual's progression and challenges.
Mentoring centers around an extended conversation: regular, focused one-on-one chat...]]></description><link>https://engineeringandcareering.co.uk/mentoring-through-conversation</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/mentoring-through-conversation</guid><category><![CDATA[mentorship]]></category><category><![CDATA[management]]></category><category><![CDATA[#growth]]></category><category><![CDATA[mentor]]></category><category><![CDATA[engineering-management]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Fri, 13 Jan 2023 13:10:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/j6brni7fpvs/upload/1e588065d357dfe889d1f8bd28654d8c.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Mentoring is often been essential to how engineers work and grow. It can bring knowledge, wisdom and experience to bear on an individual's progression and challenges.</p>
<p>Mentoring centers around an extended conversation: regular, focused one-on-one chats with the person you are mentoring.</p>
<p>Mentoring can vary a lot; often the key duties are:</p>
<ul>
<li><p>👂  Be a person to speak to and listen</p>
</li>
<li><p>👐  Offer organizational support and comfort</p>
</li>
<li><p>🧭  Help people navigate the organization</p>
</li>
<li><p>🏋🏻‍♀️  Help people grow their capability</p>
</li>
<li><p>🎆  Celebrate success!</p>
</li>
</ul>
<p>These conversations can range from a free-style catch-up or follow a questioning structure. Often these chats need a little structure to help with connection, learning, listening and growth.</p>
<h1 id="heading-the-conversation-contract">The Conversation Contract</h1>
<p>At the heart of a successful mentoring conversation, there are a set of agreements.</p>
<ol>
<li><p>It's all about the growth and success of the mentee. It's rarely the place for reporting up or collecting status updates. They should be done elsewhere.</p>
</li>
<li><p>The mentor should offer options and conversation areas, the mentee should say what they want.</p>
</li>
<li><p>If there is a timeline, or window for these chats, it should be clear.</p>
</li>
<li><p>The conversation starts from a point of trust, but if either party is dissatisfied it should be in the open.</p>
</li>
</ol>
<p>Often these are not spoken about or checked in on. I very much think they should be discussed and clear.</p>
<h1 id="heading-mentoring-conversation-formats">Mentoring Conversation Formats</h1>
<p>Without chat there would be no mentoring - it all starts here.</p>
<p>There are a couple of formats I've found useful to lean on to get a chat going and to build shared knowledge and rapport.</p>
<h2 id="heading-catch-up-style">Catch up style</h2>
<p>Catch-ups are great to keep remote and timezone-distributed people in the loop. It's perhaps the <a target="_blank" href="https://en.wikipedia.org/wiki/Minimum_viable_product">MVP</a> of mentoring. It's not about reporting to each other. Rather, you both get a slice of what's going on and what you don't know. It's a great way of syncing and learning about each other.</p>
<ul>
<li><p>🎁 Share what’s going on in your world/team.</p>
</li>
<li><p>🐢 See where the conversation takes you.</p>
</li>
<li><p>👂 Keep listening.</p>
</li>
</ul>
<h2 id="heading-ask-4-questions">Ask 4 Questions</h2>
<p>The 4 Questions structure is great to help a mentor step into the mentee's perspective and talk things through. It's my go-to choice to get into what's going on in the mentee's world, once we have trust.</p>
<ul>
<li><p>⚕️ 1. How are you?</p>
</li>
<li><p>👍 2. What’s good?</p>
</li>
<li><p>👎 3. What’s not so good?</p>
</li>
<li><p>🧩 4. Is there something we have not talked about that we should?</p>
</li>
</ul>
<h2 id="heading-a-focus-on-growth-and-skills-acquisition">A focus on growth and skills acquisition</h2>
<p>Mentoring is all about growth, and growth conversations are best if supported with goals, direction or even a plan. If your mentee has a clear direction they want advice and support on, your conversations can center around that. If not, <a target="_blank" href="https://engineeringandcareering.co.uk/building-growth-plans-with-mentees">you can build one together</a>.</p>
<p>With this in mind. growth-focused conversations often take this shape:</p>
<ul>
<li><p>🗺️ Check-in on progression and acquisition</p>
</li>
<li><p>🛣️ Ask them about how to progress a step</p>
</li>
<li><p>🚧 Discuss blockers</p>
</li>
<li><p>🎊 Throw in a good challenge</p>
</li>
</ul>
<p>I've found this style also works well for onboarding and assisting new joiners learn about their role and how things function.</p>
<h1 id="heading-whatever-style-you-use-listen-and-adapt">Whatever style you use, listen and adapt</h1>
<p>Mentor chats should be dynamic and adaptive. Mentors may choose a format to suit the situation and the mentee's needs, but they should also be listening to check if it's working for their mentee. Be ready to stop and reassess if you don't have the right format for the conversation.</p>
<h3 id="heading-bring-the-warm-blanket-of-trust-and-care-as-well-as-the-water-pistol-of-truth">Bring the warm blanket of trust and care, as well as the water-pistol of truth.</h3>
<p>A key to helping someone grow at work is helping them feel safe and happy. No one learns much for long without these. Mentoring conversations should start by helping someone into this position.</p>
<p>Beyond that, you, as a mentor need to build rapport and trust, so you can be told and tell critical information that might otherwise go unsaid.</p>
<p><a target="_blank" href="https://www.ccl.org/articles/leading-effectively-articles/coaching-others-use-active-listening-skills/">Active Listening</a> is a great way to do this, as well as a way to learn and guide without dominating a conversation.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1668363044531/S8zSfEk8g.jpeg" alt="Image" /></p>
<p>There is a lot of depth in the ways you can use conversations to support guide and grow. Hopefully, these patterns will get you re-started if you stall.</p>
]]></content:encoded></item><item><title><![CDATA[Want secure products? Start your engineers thinking like hackers.]]></title><description><![CDATA[Engineers are a line of defence
Security threats in the online world are only increasing. Organisations need their engineers to be a line of defence against threats and vulnerabilities by releasing solid and secure code.
If you are part of a security...]]></description><link>https://engineeringandcareering.co.uk/want-secure-products-start-your-engineers-thinking-like-hackers</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/want-secure-products-start-your-engineers-thinking-like-hackers</guid><category><![CDATA[Security]]></category><category><![CDATA[securityawareness]]></category><category><![CDATA[hacking]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Thu, 17 Nov 2022 15:29:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/uD1ssHzZSNE/upload/v1668609664932/T6thT3tfY.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-engineers-are-a-line-of-defence">Engineers are a line of defence</h2>
<p>Security threats in the online world are only increasing. Organisations need their engineers to be a line of defence against threats and vulnerabilities by releasing solid and secure code.</p>
<p>If you are part of a security team or an engineering leader, trying to gate-keep code is near impossibility - you’ll never find that bad line of code before it ships, or even long after. Worst still, even the best analysing tools cannot spot whole classes of security coding issues.</p>
<p>Requiring your engineers sit though 'funny' training videos and multi-choice quizzes will neither win hearts and minds or make your products more secure. You need a different approach to bringing good 🔥.</p>
<h2 id="heading-engage-to-empower">Engage to empower</h2>
<p>Your engineers are the folks who live in the code that runs your products and services. Engage with them and turn your risk into an asset. Let them know they are a line of defence, and what needs to be defended against. Tell them who and what the threats are (sadly, real news stories are easy to supply).</p>
<h2 id="heading-education-education-education">Education, Education, Education</h2>
<p>A key challenge is that engineers are not always security aware, but as Specialising Generalists, most engineers love learning by doing. Help them think like the hackers you want to defend against and they will take better precautions.</p>
<p>I’ve harnessed this in literal <em>hack-days</em> - where groups of engineers have teamed up to try their hand at hacking challenges - seeing who can complete the most challenges in an hour.</p>
<p>Game-days such as these often produce delightful side-effects. A few times, post hack-training, engineers have spotted a similar avenue of attack in production code, and have fixed it up, a true reward indeed.</p>
<h2 id="heading-where-to-start">Where to start</h2>
<p>Here are a few of the sites I have liked and used.</p>
<ol>
<li><p><a target="_blank" href="https://xss-game.appspot.com/">Google’s XSS game</a> focuses on a single class of problem. Offering puzzles in injecting JS into pages in increasingly complex ways. Its single focus might not be a thing for everyone - but it's a great way to get the party started and its a totally common issue.</p>
</li>
<li><p><a target="_blank" href="http://www.gameofhacks.com/"><s>Game of Hacks</s></a> <s> challenges engineers to spot problems and vulnerabilities in code snippets. It supports many languages but can feel a little dry. Short bursts or on a shared / big screen could bring the energy.</s></p>
</li>
<li><p><a target="_blank" href="https://overthewire.org/">Over the Wire</a> host several war-games that start simple and get more and more difficult. <a target="_blank" href="https://overthewire.org/wargames/natas">Natas</a> presents increasingly difficult challenges over HTTP. <a target="_blank" href="https://overthewire.org/wargames/bandit">Bandit</a> looks like a fun introduction at OS level hacking.</p>
</li>
<li><p>The world keeps changing - <a target="_blank" href="http://hackthebox.com">hackthebox.com</a>, <a target="_blank" href="https://tryhackme.com/room/tutorial">tryhackme.com</a> and <a target="_blank" href="https://cybergamesuk.com/">cybergamesuk.com</a> look like great newer replacements for the EoL-ed Game of Hacks.</p>
</li>
</ol>
<h2 id="heading-ready-to-scale-up-time-for-a-ctf">Ready to scale up? Time for a CTF?</h2>
<p>Want to run something a little more complex for your teams? Capture the Flag events are great competitive challenges that help bring teams’ security knowledge to the fore.</p>
<p>I’ve not run one of these (yet) but OWASP’s Juice Shop supports CTF and offers <a target="_blank" href="https://pwning.owasp-juice.shop/companion-guide/latest/part4/ctf.html">great advice for hosting CTFs</a></p>
]]></content:encoded></item><item><title><![CDATA[Prevent Software Disasters by asking ‘What if?’]]></title><description><![CDATA[Software fails in production far more than it should - yielding to pressures of use, both intentional or accidental.
Here's a product team game (and process) to help teams identify and avoid the disasters that might befall their product.
If you want ...]]></description><link>https://engineeringandcareering.co.uk/prevent-software-disasters-by-asking-what-if</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/prevent-software-disasters-by-asking-what-if</guid><category><![CDATA[software development]]></category><category><![CDATA[game]]></category><category><![CDATA[CFR]]></category><category><![CDATA[risk]]></category><category><![CDATA[resilient ]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Mon, 27 Jun 2022 07:41:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/_whs7FPfkwQ/upload/v1656172449599/8bqAke8LK.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Software fails in production far more than it should - yielding to pressures of use, both intentional or accidental.</p>
<p>Here's a product team game (and process) to help teams identify and avoid the disasters that might befall their product.</p>
<p>If you want to help your team gain a shared perspective and vocabulary on what’s important, and to build plans to make their software more resilient, keep reading!</p>
<p>Before I present the game, let me tell you why it's so useful. </p>
<h1 id="heading-when-we-make-software-we-forget-the-important">When we make software, we forget the important</h1>
<p>When building software we think in specifics: the things it should do for a user; the problem it solves. Great software needs to be more than that. </p>
<p>It needs to work night and day. Scale to support many, many users, whilst protecting secrets and assets. And when some disaster looms, it needs to be resilient enough to not crumble.</p>
<p><strong>This does not always happen. </strong>Many are the tales of software failing. Breaking under load. Oversharing secrets. Data loss. </p>
<h2 id="heading-we-can-do-better">We can do better</h2>
<p>Teams deliver better when they think and talk about disasters to be avoided. A shared understanding and vocabulary of the operational challenges leads to better designs, prioritisation and software. </p>
<p>In addition, this allows teams to take greater ownership often leading to learning and a more rugged (and less risky) system in production.</p>
<h1 id="heading-the-game">The Game</h1>
<p>The aim of this game is to capture the biggest risks to your product. You’ll do this by working through a list of<a target="_blank" href="https://danielabel.github.io/what-ifs/what-ifs-remark-deck.html"><em>‘what if’</em> disaster cards</a> and wildcard challenges. You’ll quickly talk about which ones apply and rate them by how disastrous they could be.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656315393982/PKQVMBBZI.png" alt="@ what if cards asking 'What if an important customer disputes our data or costs?' and 'What if the service is used far more than expected?'" class="image--center mx-auto" /></p>
<p>You’ll then rank your cards to find the key disasters your team needs to guard against. These then can contribute to your backlog of work or your risk action plans.</p>
<h2 id="heading-what-youll-need">What you’ll need</h2>
<p>You’ll need the deck of what-if cards, your Product team and a space to play - either real life or remote works, though the set up is slightly different</p>
<p><strong>In real life</strong>: you’ll need the cards printed out, some sharpies and blu tack, a table to work on and a white board to rank and display your disasters on.</p>
<p><strong>To play remotely</strong> you’ll need to set up a remote whiteboard with the set of cards, a play area and a place to rank and display your disasters - here’s an <a target="_blank" href="https://app.mural.co/template/6f3450c2-81f4-46c8-b770-449be3565104/84039fe3-69d6-48fa-9f0b-605faf681bca">example Mural board</a>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656173612943/ebiAzfGRH.jpg" alt="pictorial description of the start of the game showing cards, a graph and a reminder of the game rules" /></p>
<p>Somewhere in your space you’ll need to draw out a big graph with ‘Impact’ and ‘Likelihood’ as the two axes</p>
<p>You should discard the Delivery and Scaling Challenges card for your first game. they are to be used for extended games - details at the end.</p>
<h1 id="heading-how-to-play">How to play</h1>
<h2 id="heading-step-1-get-everyone-on-the-same-page">Step 1: Get everyone on the same page</h2>
<p>Before the game can properly start everyone in the group needs clarity of what the group is de-risking. Clarify the product or feature and how it delivers value by answering three questions:</p>
<ol>
<li>Who are its users?</li>
<li>How do the users get value?</li>
<li>How is it funded?</li>
</ol>
<h2 id="heading-step-2-find-your-key-disasters">Step 2: Find your key disasters</h2>
<p>The group should pick three cards and for each one ask: <strong>‘What if?’</strong></p>
<p>After a brief discussion (writing notes on the cards can be helpful) the group should gauge the risk of this disaster to their product. Note that financial, repetitional, exposure, loss, or health + safety are all valid risks - this is not just about technical disasters!</p>
<p>Ask: </p>
<ol>
<li>What's the likelihood and impact?</li>
<li>What controls and mitigations would help</li>
</ol>
<p>Once the three cards are reviewed the team should place them on the likelihood and impact graph - deciding which of them looks most disastrous. </p>
<h3 id="heading-repeat-swiftly">Repeat swiftly</h3>
<p>You should be able to work through all your cards in sets of 3, building a map of your quantified risks. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1656173377428/kiC91QJ9c.png" alt="Screenshot 2022-06-25 at 12.52.11.png" class="image--center mx-auto" /></p>
<p>You may come across cards where you already have preventions in place - my tip here is to record that but rate the card as if it was not defended. This will allow you to see how important that defence and maintaining it is.</p>
<h2 id="heading-step-3-review-learning">Step 3: Review learning</h2>
<p>Once out of cards, the team should review their ranked disasters. </p>
<p>Are there surprises? Questions? Worries?</p>
<h3 id="heading-build-an-action-plan">Build an action plan</h3>
<p>Pick out the critical disasters to be avoided. Ask what can be done to manage, mitigate or control them.</p>
<h1 id="heading-you-have-your-disasters-what-then">You have your disasters. What then?</h1>
<p>I’ve found two good places for managing and progressing software and product operational risks.</p>
<h2 id="heading-risk-registers">Risk Registers</h2>
<p>Risk registers are a place to record and manage key dangers - those that are important to understand monitor, mitigate and control</p>
<p>Risk registers are super useful to share risks outside of a delivery team - they give the wider business a heads up of both the most tricksy risks the team needs to detail with, as well as risks that go beyond the team's ability to control or guard against. </p>
<h2 id="heading-operational-requirements-and-service-levels">Operational Requirements (and Service Levels)</h2>
<p>If the team can manage, control or mitigate the risk through technology, infrastructure and software it should become a requirement that can be built and measured. </p>
<p>Not all risks can be managed by building a feature. Your risks might guide you to put in place infrastructure, <a target="_blank" href="https://cloud.google.com/blog/products/devops-sre/sre-fundamentals-slis-slas-and-slos">SLOs</a> and production monitoring.  You might find cross-cutting concerns that can be managed through scanners,  linters or checklists.</p>
<h1 id="heading-and-thats-it">And that’s it?</h1>
<p>Not quite. This is just the start. Most software gets built in interactive and incremental ways. Risk avoidance needs to work the same way - threaded through delivery. </p>
<p>With the team now thinking about the disasters that might happen to their product, the conversation should continue as work is done. The team might want to put checkpoints in place to review their decisions as they learn more, or use production measurements, reports and monitoring to indicate upcoming problems or successful controls.</p>
<p>Many teams have regular learning and review sessions where discussions might fit well. If not, why not try it?</p>
<h1 id="heading-appendix-1-running-bigger-games-and-extensions">Appendix 1: Running bigger games and extensions</h1>
<p>The ‘What If?’ card deck also includes a set of ‘Delivery and Scaling Challenges’. These can be used for an extended Game of Disasters that also looks at challenges to your delivery plan.</p>
<h2 id="heading-playing-the-delivery-and-scaling-extension">Playing the Delivery and Scaling extension</h2>
<p>To play this version you will need to add in extra time for the group to think more beyond the operational risks and think about the delivery commitments and work. </p>
<p>As well as describing the product, the team playing needs to have a shared vision of the delivery. You can do this by drawing out a future timeline on a large whiteboard. </p>
<p>Build a reference for discussion. Have the whole team help, by adding future team happenings, external events, commitments and expectations. </p>
<p>Once drawn out and discussed, play the game as usual, using the delivery risk and wildcards.</p>
<h2 id="heading-playing-with-the-full-set-of-cards">Playing with the full set of cards</h2>
<p>It’s possible to use the full deck of cards to look for operational and delivery risks at the same time. Expect this to take a few hours - plan for snacks and breaks!</p>
<h1 id="heading-appendix-2-resources-further-reading-and-research">Appendix 2: Resources, further reading and research</h1>
<h2 id="heading-resources">Resources</h2>
<ul>
<li><a target="_blank" href="https://danielabel.github.io/what-ifs/what-ifs-remark-deck.html">What if cards</a></li>
<li><a target="_blank" href="https://app.mural.co/template/6f3450c2-81f4-46c8-b770-449be3565104/84039fe3-69d6-48fa-9f0b-605faf681bca">mural template</a> for remote game playing </li>
</ul>
<h2 id="heading-further-reading">Further reading</h2>
<p>This game is similar to a few other risk discovery 'games'. </p>
<ul>
<li>It borrows a lot from the <a target="_blank" href="https://www.funretrospectives.com/pre-mortem-activity/">Futurespective process</a> - an open ended examination of a future state and the journey there. </li>
<li>Threat Modelling is used to discover how your system presents Security Risks. I like <a target="_blank" href="https://martinfowler.com/articles/agile-threat-modelling.html">the method presented at Martin Fowler's site</a> where there's a set of seed cards for risk. </li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Being Rugged: How not to fail when things break.]]></title><description><![CDATA[Testing in production doesn't come for free. It takes intent and investment to build something safe enough to fail. 
Building in ruggedness and observability builds you a safer space to ship fast and often. Here's a real-life demonstration showing th...]]></description><link>https://engineeringandcareering.co.uk/being-rugged-how-not-to-fail-when-things-break</link><guid isPermaLink="true">https://engineeringandcareering.co.uk/being-rugged-how-not-to-fail-when-things-break</guid><category><![CDATA[monitoring]]></category><category><![CDATA[Microservices]]></category><category><![CDATA[continuous delivery]]></category><category><![CDATA[Testing]]></category><category><![CDATA[debugging]]></category><dc:creator><![CDATA[Dan Abel]]></dc:creator><pubDate>Mon, 12 Jul 2021 10:35:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1626084924538/BHpx0X18U.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Testing in production doesn't come for free. It takes intent and investment to build something safe enough to fail. </p>
<p>Building in ruggedness and observability builds you a safer space to ship fast and often. Here's a real-life demonstration showing the value of that investment.</p>
<h2 id="we-join-a-team-that-manages-user-access">We join a team that manages User Access</h2>
<p>Users were getting stuff done on the site they helped manage. Engineers were building and shipping. </p>
<p>The team that looks after User Log-in received an alert in their chat room.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1625040444645/HaTyF_a3D.jpeg" alt="an alert that there were too many HTML sign ins" /></p>
<p>Something was up with the Authentication service. A fault on the log-in page.</p>
<h2 id="question-one-whos-affected">Question one: Who's affected?</h2>
<p>The first question to ask in the event of a live incident is: <em>'How is this issue affecting our users?'</em> </p>
<p>Every issue has a different impact. The hope is, that with luck, the damage to users will be small. The good news was that in this case, it wasn’t was not big. They were lucky. </p>
<p>That Luck was self-generated. They'd built it into their systems.</p>
<h3 id="how-did-they-build-this-luck">How did they build this luck?</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1625661477312/xOTW6JMHb.jpeg" alt="photo-1605606582442-f925ad58ba1b.jpeg" /></p>
<p>Engineers had built resilience into these systems. When a mistake was coded and shipped, the system failed well for users.</p>
<p>Authentication systems (like log-in) protect products. Not only does it need to be consistent in keeping people out, it also needs to be consistent <strong>and available</strong> in letting people in. </p>
<p>Building web frontends can be tricky. Correctly supporting every combination of every browser is an almost impossible task. Rather than expecting every change to be 100% correct for 100% of users, these engineers had bet on occasional mistakes making it to their users and built the system accordingly.</p>
<p>The log-in page was built to degrade gracefully. If the Javascript failed to run, the plain HTML page would continue to function. </p>
<h3 id="if-it-doesnt-break-how-do-you-know-its-broken">If it doesn't break... how do you know it's broken?</h3>
<p>The risk of having a system that handles failure well is that coding mistakes can go unseen and grow. You can end up with a bundle of bad code. A great way around this was to ensure systems will tell us when they fail, even when users couldn't see it. </p>
<p>The system emitted different data depending on how the user logged in. This allowed monitoring systems to keep an eye on the level of degradation. If it saw a large rise, it would let the team know, leading to this story's alert. </p>
<h3 id="jumping-back-to-the-key-question-whos-affected">Jumping back to the key question: 'who's affected?'</h3>
<p>In this incident, users were still being able to log in and access the products, so it was not a 🔥. 
The engineering team were the most affected - they still needed to investigate and fix. And that's the second key question I ask.</p>
<h2 id="question-2-whats-the-cause-and-whats-the-fix">Question 2: What's the cause (and what’s the fix?)</h2>
<p>Once the impact has been understood and control has been taken, focus can be placed on finding the cause. </p>
<p>The team had instrumentation output - logs and metrics. From this, they could see that the start of the issue coincided with a software release. </p>
<p>As the team practiced small and frequent software releases, it was a simple step to go from break ➜ release ➜ code change. It may not yet have been clear what was causing the problem, but there was a small changeset that was the likely cause. </p>
<h3 id="observing-the-situation">Observing the situation</h3>
<p>Knowing the location of the problem was not enough quite to solve it. The team needed to observe what was going on in their services and in their users' browsers to understand the problem. Detailed data about the users and operations happening on the system.</p>
<p>Browser fingerprints were part of the record for every successful log-in. Filtering for just the degraded logons quickly revealed a pattern in the <a target="_blank" href="https://en.wikipedia.org/wiki/User_agent">user agent</a>. From that, it was a small step to reproduce the broken state on the right browser and get a fix. </p>
<h2 id="build-your-own-luck-to-move-fast">Build your own luck to move fast</h2>
<p>You can build your own luck by building in ruggedness and observability. These features allow you to accept a varying level of quality without high impact and to quickly solve problems. Allowing your system to fail well. </p>
<p>Use these and you can keep fixing your problems as you go, shipping in small batches, which makes fault location easy.</p>
<p>More importantly, in combination, these support your teams to move and ship fast,  getting new features to your users</p>
<h3 id="credits">Credits</h3>
<p>Ice Cream Photo by <a target="_blank" href="https://unsplash.com/@rojekilian">Sarah Kilian</a></p>
<p>Design Photo by <a target="_blank" href="https://unsplash.com/@brett_jordan">Brett Jordan</a></p>
]]></content:encoded></item></channel></rss>