{"id":443,"date":"2025-04-08T18:59:53","date_gmt":"2025-04-08T18:59:53","guid":{"rendered":"https:\/\/permutationcity.co.uk\/bp\/?p=443"},"modified":"2025-04-11T16:29:20","modified_gmt":"2025-04-11T16:29:20","slug":"blocked","status":"publish","type":"post","link":"https:\/\/permutationcity.co.uk\/bp\/2025\/04\/08\/blocked\/","title":{"rendered":"Blocked"},"content":{"rendered":"\n<p>You might want to be working but sometimes it&#8217;s not possible.\nLet&#8217;s think about why it might be and what to do about it.\nI have a feeling that this post could also be titled &#8220;Avoid single point of failure&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"illness\">Illness<\/h2>\n\n\n\n<p>People get ill. It&#8217;s going to happen sometimes. This is obviously a problem on some level for the person involved. Hopefully they get better soon. Does their work need to get done in the meantime? As a software engineer things aren&#8217;t normally time critical, a day or two often isn&#8217;t going to make much of a difference. That&#8217;s going to slow things down slightly but shouldn&#8217;t be too bad. If it&#8217;s longer, a week or more, then it might start to impact schedules.<\/p>\n\n\n\n<p>What&#8217;s more serious is when the work <em>does<\/em> still need to be done.\nMaybe you&#8217;re managing a team and the next sprint hasn&#8217;t been planned.\nMaybe you have the passwords for the server that someone really needs to access.\nIf you&#8217;re a bit snuffly it might not be <em>too<\/em> bad to check your messages and\ndo a bit of scheduling.\nIf you&#8217;re coughing up blood then you really shouldn&#8217;t have to bother with that.\nIn either case it&#8217;s better if the the team is able to cope with someone being ill:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Have documentation on how to do things or automate them so they&#8217;re really simple.<\/li>\n\n\n\n<li>Give multiple people the right permissions to fix problems.<\/li>\n\n\n\n<li>Share knowledge around when people are here so you can get by when they&#8217;re not here.<\/li>\n<\/ul>\n\n\n\n<p>All of the above also applies to holidays.\nThey&#8217;re going to happen and it shouldn&#8217;t stop normal activity from happening.\nPeople deserve to be able to take a break and\nshouldn&#8217;t have to keep an eye on the office while they&#8217;re away.\nThink of it as practice for them being ill.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"services\">Services<\/h2>\n\n\n\n<p>When I started working this wasn&#8217;t so much of a problem.\nYou had computer in front of you and that&#8217;s all you <em>really<\/em> needed.\nNo so any more.\nOn a given day I&#8217;m using source control to access and change code,\npackage management systems to build libraries,\nsearch engines to look up documentation and advice,\nproject management systems for tasks and\nyour end product could be running in the cloud.\nIf any one of these goes down you might be able to limp on for a bit,\nyou might not.<\/p>\n\n\n\n<p>Some of these are pretty hard to deal with.\nI&#8217;ll have a copy of the code locally.\nI might not be able to check in any commits to the server but I can still prepare them.\nAll the rest might turn into blockers for me.<\/p>\n\n\n\n<p>If you&#8217;ve got a build system to make external libraries hopefully it&#8217;s cached a copy of the download.\nI had a situation recently where one of the host site of one dependency was down for maintenance.\nIt was cached locally on my machine but not on the build server.\nThe easiest solution was just to delay the merge until the site was back up.\nThat&#8217;s fine if you have time but terrible if you don&#8217;t.\nTry to avoid a build system that <em>has<\/em> to connect to the internet.<\/p>\n\n\n\n<p>Being cut off from search engines seems very punishing nowadays.\nUnless you&#8217;re dealing with a familiar topic it seems to be part of the bread and butter of development.\nI mean, you know roughly how the API work but details matter.\nHowever, if I&#8217;m looking up C++ language details then 90% of the time it&#8217;s from\n<a href=\"https:\/\/en.cppreference.com\/w\/\">cppreference.com<\/a>.\nI could actually\n<a href=\"https:\/\/github.com\/PeterFeicht\/cppreference-doc\/releases\">download the entire reference<\/a> and\nfollow the links manually.\nIt&#8217;s still a step down from typing into a search box and just getting the right page.<\/p>\n\n\n\n<p>If your services live in the cloud and\nonly in the cloud then&#8230; you&#8217;ll have to find something else to do.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"it-issues\">IT issues<\/h2>\n\n\n\n<p>While external services are more relevant now you&#8217;ve always needed a working machine and local network.\nOver the years I&#8217;ve had hard drives fail, networks go down and machines lock up.\nWhat to do and how to prevent it very much depends on on the specifics.<\/p>\n\n\n\n<p>Hopefully you use source control and check in regularly.\nI talked about the problem of\n<a href=\"https:\/\/permutationcity.co.uk\/bp\/2024\/06\/11\/is-source-control-overworked\/\">source control having multiple jobs<\/a>.\nIt&#8217;s not uncommon for me to have experimental branches living locally on my machine for a long time.\nThey&#8217;re don&#8217;t feel in the right state to share.\nHowever that&#8217;s a risk and running a separate backup system would help mitigate that.<\/p>\n\n\n\n<p>Other business areas might be able to get away with using, say, <a href=\"https:\/\/en.wikipedia.org\/wiki\/OneDrive\">OneDrive<\/a> for all their backup. Spreadsheets, word documents and PowerPoint presentations don&#8217;t tend to take up that much room. A few source files don&#8217;t take up that much room either but the build artefacts can add up and change constantly.<\/p>\n\n\n\n<p>How long does it take to get a new development machine ready if one fails?\nWhat applications do you need?\nWhat does it take to build your product?\nIs this documented somewhere or are you going to have to try and remember?\nIf possible the best solution might be to have an installation or configuration script to do the work.\nHopefully you just need to clone the repository, run the script and sit back.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dependencies\">Dependencies<\/h2>\n\n\n\n<p>Maybe you&#8217;re fit as a fiddle and your machine is working but need something from someone else.\nWorking within your team isn&#8217;t normally too bad,\neveryone is easy to get in touch with.\nHowever if they are in another part of the company or a different company it can be a lot harder.<\/p>\n\n\n\n<p>If there&#8217;s a problem with my code, a bug or a small missing feature, I like to be able to fix the problem quickly. It might not be on my schedule but I don&#8217;t want to hold up their schedule. However this isn&#8217;t always possible. Having a &#8220;small&#8221; problem derail you for days can mess up the schedule in other ways. Often it&#8217;s possible to produce a quick fix or a work around. A proper solution can wait for a better time.<\/p>\n\n\n\n<p>If you need have an interface between systems then it&#8217;s best if both sides can give it time together. I&#8217;ve been in situations where one side has come up with an interface and it&#8217;s only much later that the other side realises the inherent problems with it. It&#8217;s very easy to skim over something and think it seems fine without working through all the details. This can be especially true if it&#8217;s not clear which team has to deal with which parts of the problem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"in-the-end\">In the end<\/h2>\n\n\n\n<p>You can try and build resiliency into your systems. You should. However, there are a lot of situations when you might not be able to continue with a particular task. Ideally I like to have a main task but have several other alternate tasks available. This could be my next task or longer term low priority ones. That way when one of these problems crops up there&#8217;s still <em>something<\/em> to do.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You might want to be working but sometimes it&#8217;s not possible. Let&#8217;s think about why it might be and what to do about it. I have a feeling that this post could also be titled &#8220;Avoid single point of failure&#8221;. Illness People get ill. It&#8217;s going to happen sometimes. This is obviously a problem on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[11],"class_list":["post-443","post","type-post","status-publish","format-standard","hentry","category-general","tag-planning"],"_links":{"self":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts\/443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/comments?post=443"}],"version-history":[{"count":3,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts\/443\/revisions"}],"predecessor-version":[{"id":446,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/posts\/443\/revisions\/446"}],"wp:attachment":[{"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/media?parent=443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/categories?post=443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/permutationcity.co.uk\/bp\/wp-json\/wp\/v2\/tags?post=443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}