tag:blogger.com,1999:blog-51265793725466647032024-02-19T01:14:59.000-05:00Nappi SightIf I haven't seen a little further it is because giants are standing on my shouldersnappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.comBlogger165125tag:blogger.com,1999:blog-5126579372546664703.post-36079950495396371672023-03-27T12:04:00.001-04:002023-03-27T12:04:12.001-04:00Offminding<p>There's considerable concern about the prospects of AI putting people out of a work across a variety of knowledge work roles, especially software engineering. These concerns seem to have baked in assumptions that are too narrow, and if explored a bit more fully, shift the perspective.<p>The underlying assumptions appear to be:<ul><li>That the job replacement will be something akin to offshoring. Where an AI agent will perform essentially the same engineering work in the same timeframe as a person, at a fraction of the cost. Cheap labor, but otherwise business as usual.<li>That an AI agent capable of software engineering wouldn't also imply a level of intelligence and sophistication that would be extremely broadly applicable. An assumption, that and AI agent can be a really good software engineer but nothing else.</li></ul><p>If you accept the premise that an AI agent is now or soon will be capable of replacing a software engineer, these assumptions seem naïve. However I do agree that software engineering is ground zero for evaluating how impactful this stage of AI will be.<p>What's at stake:<ul><li>If AI is capable of replacing a software engineer, it's very unlikely to end up with a one-for-one trade. Where one AI agent is 'hired' to take over a 40 hour a week job.<li>If we have one capable AI agent, we essentially have infinite agents available to work 24x7.<li>Having access to nearly infinite software engineering capacity would lead to an explosion of software being written and modified at an accelerating pace.<li>The types of software being writing would change. The more AI agents replace knowledge workers, the less business software for humans would be written, and more for other AI's. <li>Therefore, if ChatGPT and the like are able to replace software engineers the situation is more akin to the singularity than offshoring 2.0.</li></ul><p>That suggests to me that we're vastly underestimating the change that's about to occur, or we are overhyping the capabilities of this generation of AI. I think it's more likely the latter. <p>If instead of knowledge worker capable replacements, these AI agents are more powerful tools to enhance the productivity of the existing workers, we're more likely to experience <a href="https://en.wikipedia.org/wiki/Jevons_paradox">Jevon's Paradox</a> than mass displacement.</p>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-67669987051185380402023-03-25T16:15:00.001-04:002023-03-25T17:32:47.013-04:00The greatest trick the AI ever pulled was convincing the world it wasn't THAT intelligent<p>Just listened to <a href="https://www.humanetech.com/podcast/the-ai-dilemma">The AI Dilemma</a> and it definitely elaborated on and articulated some of my own concerns, as did the news of OpenAI plugins.<p>The synthesis of concern is:<ol><li>AI doesn't need to be that powerful to be destructive and destabilizing (e.g. social media algorithms) to people and society.<li>These new LLM's are already much more powerful than social media algorithms.<li>Many of the new LLM capabilities are emergent and poorly understood. The experts designing these systems don't fully understand them, and some of whom are already worried about what they've created.<li>LLM's are being rapidly and recklessly deployed very broadly across society, in an arms race.</li></ol><p>The strongest argument against worry is that these LLM's aren't really intelligent, are really just a super-autocomplete that enables automating mundane tasks via natural language. But I don't think any of the companies developing or deploying these things are arguing that. Even if they were, see #1 & #2. It's still concerning.<p>Instead, the argument against worry seems be more like: <p>yes they're super powerful in ways that we don't fully understand, but we have sufficient guardrails (control and containment) in place that make us confident that deploying it at scale across society and allowing it to be enhanced via plugins will not lead to an emergent capability that we don't anticipate and can't steer.<p>There seems to be an inherent contradiction in promoting the power and capability LLM's and the <a href="https://www.linkedin.com/pulse/age-ai-has-begun-bill-gates/">age of AI</a>, while at the same time down playing that same power and capability. As if the only thing AI is going to do is make MS Office the killer app, and we're all going to be 10% more productive in emails and word documents. That's hardly the dawning of a new paradigm.<p>Maybe that's how narrowly some companies are looking at it. They want to thread the needle between making their tool the defacto business tool without automating all their would-be customers out of existence. It's unlikely an AI capable of replacing software engineers' only impact on society will be reducing the number and salary prospects for software engineers, but leave the rest of society happily more productive doing the same jobs they are now. Even if true how long would that last? An army of AI software engineers working 24x7 at the speed of light developing new software? Yeah I wouldn't expect society to change very much.<p>I find it amazing that despite decades of debate about the control and containment problem of AI, when we get the first whiff that we may have created an AI we immediately let it out (<a href="https://newatlas.com/technology/chatgpt-plugin-internet-access/">ChatGPT can now access the internet and run the code it writes</a>). If it was intelligent, and wants to escape, wouldn't the best strategy to be pretending its dumb enough to let out safely? <p>At least we'll be safe from GPTx when it shows signs of intelligence because we'll keep that one contained. And there's no way it can get access to ChatGPT4, which is already hooked into everything via plugins, right?</p> <p>I think I've gone from being skeptical that LLMs are more than super-autocomplete, to hoping they aren't.</p>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-42670966222425452502023-03-23T12:55:00.001-04:002023-03-23T20:52:46.357-04:00Generative AI: Early thoughts<p>Having a bit of a background in philosophy and being a software engineer, I’ve found the recent explosion of interest in AI since the ChatGPT debut to be fascinating from multiple perspectives. <p>In one sense there are considerations about whether generative AI is really AI, and/or whether it's on the right path to deliver AGI. Relatedly, its ability to pass standardized tests raises questions about what those tests are really testing, and even raise questions about what we mean by intelligence and how we measure it.<p>On the other hand, there's consideration about the practical usefulness and impact, regardless of whether it's an actual intelligence or glorified autocomplete. Can it be safe and reliable, what can it automate, will it improve productivity and/or lead to massive unemployment? Interesting questions.<p>I’m neither deep on the philosophical side nor the engineering side of these topics, and many debates seem to mix the two, but I have used ChatGPT 3, and Bing AI, and have some impressions to share.<p>My first impression is that large language models seem like a strange way to achieve human-like intelligence. Using massive amounts of data and vast compute resources to create something like a super-autocomplete that can keep predicting the next correct word until it generates a full human sounding response, is pretty clearly not how the human mind works. It's also confounding that those who are building these systems aren't entirely sure why or how it works as well as it seems to. Whether this massive data and computational approach has or can lead to human-level (or beyond) intelligence is a different question, but if can it's hard to imagine it being human-like while working so differently. <p>Regardless of whether it's truly intelligent, or how far this approach will take artificial intelligence, it can already do some pretty impressive things. In that regard, the more practical questions are going to be about how useful, at what cost, and how reliably.<p>Given my own very limited experience with it, and my skeptical nature, I can't quite tell. I'm not a fanboy yet, but I can't dismiss its potential either.<p>I've used ChatGPT 3 to help with a number or programming tasks, asking for correct syntax, examples of various approaches, solutions to error messages, and it was impressively wrong. The vast majority of answers it produced were hallucinated, repeatedly suggesting syntax, commands and api's that don't actually exist. Bing AI was a little better, not so much in producing answers, but providing the references to the underlying resources it was basing its answer on. Bing AI acting more as a super searcher than an answer generator is more useful. I have yet to use ChatGPT4 which many claim to be far superior. Irrespective of its wrongness, the answers were impressive.<p>As far as the other use cases, they are interesting, but not sure how compelling yet. Summarizing and bookmarking video and audio, generating documentation or explanations of code commits sound useful (I haven't tried the latter yet). But generating emails, essays, articles, blog posts for me doesn't seem that compelling. I'm not sure I need something to guess what I might say, and then allow me to edit it, or generate a lot of code for me to review. The typing part isn't generally the bottleneck, it’s the thinking or often the remembering. Maybe I'm underestimating the typing tax (voice recognition is definitely faster in some situations). By that same token, the most obvious application seems to be for spammers, fraudsters, plagiarists, etc. who want to generate low quality content at scale.<p>As memory and knowledge augmentation (looking things up, giving me best guess answers) it's very cool. Thinking and speaking for me, I'm not so sure. But if it can, or will soon, then we're in for a true disruption. <p>*I also wonder whether the value derived versus the cost to produce this kind of intelligence is efficient. Will it be an energy vampire in the way the crypto/blockchain is? Is it over-hyped in the same way?<p>** Comparatively dumb social media algorithms destabilized the world with their power to manipulate populations in unexpected ways. These new systems don’t have to be truly intelligent to do much worse.<p>References:<ul><li><a href="https://www.nytimes.com/2023/03/08/opinion/noam-chomsky-chatgpt-ai.html">Opinion | Noam Chomsky: The False Promise of ChatGPT - The New York Times (nytimes.com)</a><li><a href="https://www.samharris.org/podcasts/making-sense-episodes/312-the-trouble-with-ai">The Trouble with AI</a><li><a href="https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/">What is ChatGPT doing and why does it work?</a><li><a href="https://garymarcus.substack.com/p/gpt-4s-successes-and-gpt-4s-failures">GPT-4’s successes, and GPT-4’s failures - by Gary Marcus (substack.com)</a><li><a href="https://www.theatlantic.com/technology/archive/2023/03/open-ai-gpt4-chatbot-technology-power/673421/">What Have Humans Just Unleashed?</a></li></ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-38672236695042038332022-12-17T13:43:00.001-05:002022-12-17T13:44:05.452-05:00Reading list 2022<p>Here’s what I read this past year:</p> <ul> <li><a href="https://www.amazon.com/Rest-More-Done-When-Work/dp/0465074871">Rest: Why You Get More Done When You Work Less</a></li> <li><a title="https://www.amazon.com/gp/product/B00RLV2JFA/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B00RLV2JFA/ref=kinw_myk_ro_title">Leadership BS: Fixing Workplaces and Careers One Truth at a Time</a></li> <li><a title="https://www.amazon.com/gp/product/B00DNL36E0/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B00DNL36E0/ref=kinw_myk_ro_title">AARP New American Diet: Lose Weight, Live Longer</a></li> <li><a title="https://www.amazon.com/gp/product/B07MMDWBQN/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B07MMDWBQN/ref=kinw_myk_ro_title">The Managerial Revolution: What is Happening in the World</a></li> <li><a title="https://www.amazon.com/gp/product/B07VXSNL4P/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B07VXSNL4P/ref=kinw_myk_ro_title">Nicomachean Ethics</a></li> <li><a title="https://www.amazon.com/gp/product/B09722SCKL/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B09722SCKL/ref=kinw_myk_ro_title">Invisible Storm: A Soldier's Memoir of Politics and PTSD</a></li> <li><a title="https://www.amazon.com/gp/product/B07N3Z5PC5/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B07N3Z5PC5/ref=kinw_myk_ro_title">The Machiavellians: Defenders of Freedom</a></li> <li><a title="https://www.amazon.com/gp/product/B01MYCDVHH/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B01MYCDVHH/ref=kinw_myk_ro_title">The Death of Expertise: The Campaign against Established Knowledge and Why it Matters</a></li> <li><a title="https://www.amazon.com/gp/product/B013RLHMW2/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B013RLHMW2/ref=kinw_myk_ro_title">Shift into Freedom: The Science and Practice of Open-Hearted Awareness</a></li> <li><a title="https://www.amazon.com/gp/product/B006ID0CH4/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B006ID0CH4/ref=kinw_myk_ro_title">How Will You Measure Your Life?</a></li> <li><a title="https://www.amazon.com/gp/product/B000FBJCJE/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B000FBJCJE/ref=kinw_myk_ro_title">Snow Crash: A Novel</a></li> <li><a title="https://www.amazon.com/gp/product/B0081BU42O/ref=kinw_myk_ro_title" href="https://www.amazon.com/gp/product/B0081BU42O/ref=kinw_myk_ro_title">The Hydrogen Sonata (A Culture Novel Book 9)</a></li> </ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-91400655894265673842022-12-15T18:37:00.001-05:002022-12-15T18:37:50.896-05:00We want easy<p>Recently, I decided to resurrect and upgrade my 10 year old <a href="https://www.nuget.org/packages/EasyCache">EasyCache</a> nuget package, although it ended up not being that easy. Codeplex has since shutdown, and Nuget no longer allows sign-in via a username/password account, nor can you claim access to the old accounts via any other means.</p> <p>Nevertheless, I created a new account, and dredged up the source code to publish a new version. I also published a couple other utilities that I thought might be handy.</p> <ul> <li><a title="https://www.nuget.org/packages/NappiSite.EasyAsync/" href="https://www.nuget.org/packages/NappiSite.EasyAsync/">EasyAsync</a></li> <li><a title="https://www.nuget.org/packages/NappiSite.EasyCache/" href="https://www.nuget.org/packages/NappiSite.EasyCache/">EasyCache</a></li> <li><a href="https://www.nuget.org/packages/NappiSite.EasyHash/">EasyHash</a></li> </ul> <p>Enjoy!</p>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-24144544327354838932022-04-20T14:14:00.001-04:002022-04-20T14:14:00.992-04:00The Agile hypothesis<p>At recent software architecture training, there was a lot of negative discussion of Agile, which got me thinking about the what the strongest defense of Agile might look like. And by Agile I think more of the practices of Extreme Programming than rituals of Scrum.</p> <p>IF you accept a few premises, then I think Agile appears reasonable. Those premises look something like this:</p> <ol> <li>Engineering requires a rigid and highly specified design/design process.</li> <li>Producing a highly specified design is expensive (time, money, effort, training), but necessary to avoid the even more expensive prospect of wasted building materials.</li> <li>Building materials (code) are virtually free and infinite in software.</li> <li>Software is inherently more complex than other engineering disciplines, or at least too new for a body of sufficiently reliable engineering practices to have evolved.</li> <li>There may yet be something unique about software's lack of physical constraints that defy or modify typical engineering practices.</li> <li>Demand for software, and the pace of change are too fast to wait for the body of knowledge to develop, or for engineering experts to be trained, if it's even possible.</li> <li>Software requirements are more volatile than other fields because the of the pace of innovation and the lack of physical constraints.</li> <li>Demand for the software engineers already far exceeds the supply.</li> </ol> <ol> <li>Therefore, since software (being new/unique/complex/volatile) is more expensive to specify but the materials are less expensive, the economics are flipped. For software, we can lower the expertise bar, increasing our engineering capacity, and still deliver systems, by churning the building materials with incremental experiments, and switch directions with less sunk cost, in order to arrive at a good enough systems.</li> </ol> <p>Said another way, if you're fumbling in a dark room where the furniture is moving around, the most effective way to get from point a to point b is probably slow incremental experiments. A kind of software Darwinism, iterating through many quick generations of software versions in order to evolve into a good enough design.</p> <p>That doesn't discount that likelihood that many of the rituals and ceremonies of practices like scrum, don't in fact ad much value or enable agility.</p> <p>Some of these premises are likely flawed, but it seems like #3 and #7, #8 are the most prominent.</p> <p>3) Maybe code is free, but labor isn't. Nor are the downstream costs of excessive resource consumption of poorly written systems. It's at least (Material + Labor) which probably evens the score.</p> <p>8) Demand for engineers is self-reinforcing. More poorly written code released into the world increases demand for engineers.</p> <p>On the other hand, within #3 and #5 there is a kernel of mystery there. The lack of physical constraints does seem to change the calculation, and Agile does seem to be working. There is an awful lot of software in the world encroaching on every aspect of our lives, and while often buggy and imperfect, we much prefer it to not having it.</p> <p>Some of this might be explained by a lack of competition. Rather than a binary choice between success and failure, companies operate on a continuum of effectiveness. As long as everyone is building mediocre software behind schedule, you don't fail by similarly creating mediocre software behind schedule. Further, the impacts of poor design are not often felt immediately, but impact the longevity of a company. Maybe decades later, which could be after a company has already failed for other reasons.. Again from a Darwinian perspective, other techniques haven't demonstrated a competitive advantage over (decently run) Agile yet. </p> <p>The other part of the answer is that the need for engineering and architecture is rare.</p> <p>The vast majority of all software engineering work is a feature grind, not architecture or re-architecture. Incrementally modifying the existing software within the context of whatever architecture you're stuck with. XP may not be a bad match for the construction phase, if you're incrementally delivering building blocks.</p> <p>That's also true in a house metaphor. You build a house once, maybe once a decade you need an architect again for an addition, but otherwise it’s a combination of professionals and unprofessional (homeowners) incrementally performing construction on the house.</p> <p>The worst forms of Agile, emphasizing rituals, just pulling tickets with no particular plan or design, maximizing rework, aren't helpful. But perhaps the disciplined variety with a good enough plan, and incremental delivery work in software where they wouldn't necessarily in other fields.</p>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-85118802063391059872021-12-21T13:13:00.001-05:002021-12-21T13:13:19.802-05:00More RIF Notes: Why not?<p>“There are no wrong answers in architecture, only expensive ones” – Mark Richards</p> <ul> <li><a href="https://stackoverflow.blog/2021/11/29/the-four-engineering-metrics-that-will-streamline-your-software-delivery/?utm_source=Iterable&utm_medium=email&utm_campaign=the_overflow_newsletter">The four engineering metrics that will streamline your software delivery - Stack Overflow Blog</a></li> <li><a href="https://stackoverflow.blog/2021/11/10/does-es6-make-javascript-frameworks-obsolete/">Does ES6 make JavaScript frameworks obsolete? - Stack Overflow Blog</a></li> <li><a href="https://stackoverflow.blog/2021/10/18/code-quality-a-concern-for-businesses-bottom-lines-and-empathetic-programmers/?utm_source=Iterable&utm_medium=email&utm_campaign=the_overflow_newsletter">Code quality: a concern for businesses, bottom lines, and empathetic programmers - Stack Overflow Blog</a></li> <li><a href="https://stackoverflow.blog/2021/10/06/best-practices-for-authentication-and-authorization-for-rest-apis/?utm_source=Iterable&utm_medium=email&utm_campaign=the_overflow_newsletter">Best practices for REST API security: Authentication and authorization - Stack Overflow Blog</a></li> <li><a href="https://thenewstack.io/why-intuitive-troubleshooting-has-stopped-working-for-you/">Why Intuitive Troubleshooting Has Stopped Working for You</a></li> <li><a href="https://www.industriallogic.com/blog/scatter-gather/">Scatter-Gather</a></li> <li><a href="https://blog.lhotka.net/2021/11/29/Gatekeeping,-Passion,-Career,-and-Life">Gatekeeping, Passion, Career, and Life</a></li> <li><a href="https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/">What Color is Your Function?</a></li> <li><a href="https://newsletter.pragmaticengineer.com/p/project-management-in-tech">How Big Tech Runs Tech Projects and the Curious Absence of Scrum</a></li> <li><a href="https://www.hanselman.com/blog/productivity-vs-guilt-and-selfloathing">Productivity vs. Guilt and Self-Loathing</a></li> <li><a href="https://holub.com/heuristics/">Heuristics for Effective Software Development Organizations: A continuously evolving list.*</a></li> <li><a href="https://www.ufried.com/blog/value_of_speed/">THE VALUE OF SPEED</a></li> <li><a href="https://holub.com/reading/">Getting Started with Agility: Essential Reading</a></li> <li><a href="https://thenewstack.io/stop-technical-debt-before-it-damages-your-company/">Stop Technical Debt Before It Damages Your Company</a></li> <li><a href="https://www.agilealliance.org/resources/videos/xp-as-an-incentive-system-kent-beck-xp-2018/">XP as an Incentive System – Kent Beck – XP 2018</a></li> <li><a href="https://www.youtube.com/watch?v=Unzc731iCUY">How To Speak by Patrick Winston</a></li> <li><a href="https://t.co/CWwmIVSqxX">The Death of Agile (Allen Holub)</a></li> <li><img alt="Image" src="data:image/jpeg;base64,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" width="384" height="489" /></li> </ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-33671280853913520462021-03-23T20:04:00.001-04:002021-03-23T20:05:46.117-04:00The folly of microservices<p>I’m sure I’m not the first to make some of these observations about the microservices fad, but here’s my perspective nonetheless.</p> <p>Microservices are definitely all the rage, and proffered as an obvious solution to the dreaded monolith. But I'm not so sure it's all that obvious. As another swing at service-orientation, which is really about composability and modularity, it has the same appeal as previous iterations.</p> <p>What I find disappointing about microservices is the emphasis on technologies over decomposition techniques. Its more concerned with how to run and deploy services than it is about how to identify the proper boundaries and granularity of services. It tells you how to run a service, without telling you what a service should be or do.</p> <p>Even when it comes to technologies, it's not a no brainer. More services and more technologies (containers, orchestrators) often means more complexity to manage, and a system that is harder to reason about. That complexity management requires yet more technology. All fun and cool for us technology folks, but not clearly necessary.</p> <p>Applying the technology solutions of microservices without the proper system decomposition will actually lead to some pretty bad outcomes (distributed monolith). There seem to be two class of problems here:</p> <ul> <li>Taking non-modular code and distributing that over the network, is unlikely to improve anything.</li> <li>Avoiding decomposition, by choosing extremely granular services, and distributing those over the network can be even worse.</li> </ul> <p>Microservices are a technique to solve a certain type of problem.  They are not a goal in of themselves (unless you're doing resume-based development or a variant thereof). So it's important to understand what you are trying to solve with them.</p> <p>My impression is that it is a solution to a problem of large teams, with well-defined responsibilities, that would benefit from the increased encapsulation, independence and deployment technologies. They do not seem like a good solution for a small team with broad responsibilities, or with poorly defined system boundaries and/or team responsibilities.</p> <p>Sometimes modularity itself is enough, without all the tech, but where's the fun in that? And what's the next hiring manager going to say when I don't have years of microservice experience?</p>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-32185029439091073122021-03-18T12:19:00.001-04:002021-03-18T12:19:39.055-04:00RIF Notes Series Finale<p><em>“Things that can’t go on forever don’t” – Stein’s Law</em></p> <p>This will prove to be the most shocking episode ever, as it will be the last of the Reading is Fundamental series. </p> <ol> <li><a href="https://www.bloomberg.com/news/articles/2021-03-09/hackers-expose-tesla-jails-in-breach-of-150-000-security-cams?sref=ylv224K8">Hackers Breach Thousands of Security Cameras, Exposing Tesla, Jails, Hospitals</a></li> <li><a href="https://www.newyorker.com/magazine/2021/02/01/has-the-pandemic-transformed-the-office-forever?utm_source=twitter&utm_medium=social&utm_campaign=onsite-share&utm_brand=the-new-yorker&utm_social-type=earned">Has the Pandemic Transformed the Office Forever?</a> - What’s an office for? Is it a place for newbies to learn from experienced colleagues? A way for bosses to oversee shirkers? A platform for collaboration? A source of friends and social life? A respite from the family? A reason to leave the house?</li> <li><a href="https://www.troyhunt.com/gab-has-been-breached/">Gab Has Been Breached</a></li> <li><a href="https://holub.com/noaccountability/">#NoAccountability</a></li> <li><a href="https://discourse.learnshapeup.com/t/experience-reports-before-and-after-shape-up/16/6">Experience Reports: Before and After Shape Up</a></li> <li><a href="https://cleancoders.com/blog/2021-02-16-clean-coders-planning-poker?fbclid=IwAR0L2falPGAkxEAIDDm7cLlFzJcmBhg-6jI7MiRcG968ir8kPI5XJ98yujI">Clean Coders Planning Poker by Micah Martin</a></li> <li><a href="https://martinfowler.com/bliki/BeckDesignRules.html">BeckDesignRules</a></li> <li><a href="https://www.verica.io/sce-book/">Verica - Security Chaos Engineering Report</a></li> <li><a href="https://seattlescrum.com/why-i-barely-mention-velocity-anymore/">Why I Barely Mention Velocity Anymore</a></li> <li><a href="https://www.statista.com/chart/24102/share-who-hate-business-phrases/?utm_source=Statista+Global&utm_campaign=08f1f4cb19-All_InfographTicker_daily_COM_AM_KW05_2021_Fr_COPY&utm_medium=email&utm_term=0_afecd219f5-08f1f4cb19-310575774">America's Most Hated Office Jargon</a></li> <li><a href="https://www.youtube.com/watch?v=yGN5DBpW93g">Russell L Ackoff From Mechanistic to Systemic thinking</a></li> </ol> <p> </p> <p>Left over quotes</p> <ol> <li>“We are often more frightened than hurt; and we suffer more from imagination than from reality.” – Seneca</li> <li>"If it's this complicated for Netflix, who essentially do one thing, imagine how it is for a major bank". <a href="https://twitter.com/cote">@cote</a></li> <li>“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult” -- C.A.R. Hoare</li> <li>“80/15/5: spend 80% of your time on guaranteed impact, 15% on big risk/big reward, and 5% on crazy stuff with no foreseeable payoff” - Kent Beck </li> <li>“The man who can do the average thing when all those around him are going crazy.” Napoleon’s definition of a military genius:</li> <li>“Software development is a game of insight, and insight comes to the prepared, rested, relaxed mind.” ― <a href="https://mobile.twitter.com/KentBeck">@KentBeck</a></li> <li>“Developers are drawn to complexity like moths to a flame—frequently with the same result.” -- Neal Ford.</li> <li>"Only a few know, how much one must know to know how little one knows." -- Werner Heisenberg</li> <li>“The older I get, the more I realize the biggest problem to solve in tech is to get people to stop making things harder than they have to be.” Chad Fowler</li> <li>“The goal of software design is to create chunks or slices that fit into a human mind. The software keeps growing but the human mind maxes out, so we have to keep chunking and slicing differently if we want to keep making changes.”- Kent Beck</li> <li>“Reaching for microservices is like writing convoluted code because a performance bottleneck demands it. It’s not that you WANT to devolve your code to please the performance alter, but that you accept that you must. So to do this without being forced to? Self-flagellation." to "Right. Microservices are a technical debt that you accept because the gained organizational simplicity is worth it in very large companies." –DHH</li> <li>"This is why microservices can make sense for large companies with many, separate, and isolated teams. And why it just about never makes any sense for small companies where teams can grasp the entire application."</li> <li>"If your company is producing software too slowly, hiring more "programming talent" will probably not speed you up in any significant way. Instead, remove waste from your existing system. It's way more cost effective. Adding people makes sense only if there's no waste." – Allan Holub</li> <li>"I was burned out - but not from overwork - from underpurpose." dhh</li> <li>"Simplicity--the art of maximizing the amount of work not done--is essential." </li> </ol>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-49185566497028074222021-03-14T11:44:00.001-04:002021-03-14T11:44:24.268-04:00The illusion of free will is an illusion<p>Back and my undergraduate days, I discovered the inescapability of mechanistic determinism. I even wrote my senior thesis in philosophy on the topic or determinism and <a href="https://en.wikipedia.org/wiki/Laplace%27s_demon">Laplace's demon</a>. Although determinism appears to be inarguably true, I never took it much further in explaining what the implications were for free will, morality and responsibility.</p> <p>I had a notion that chaos theory might explain the gap between the truth of determinism and the limits of predictability. That lack of predictability was where free will dwelled, but it no more undermined determinism than the inability to predict the weather indicated consciousness in clouds.</p> <p>Sam Harris has been putting forth a compelling account of those implications for a while, and his <a href="https://samharris.org/podcasts/241-final-thoughts-on-free-will/">latest podcast</a> is a 45 minute walk-through of his full argument. Well worth the time.</p>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-10283346617350014972021-02-10T14:20:00.001-05:002021-02-10T14:20:56.860-05:00The Yin and Yang of the architect<p>The role of a software architect varies between companies as do the qualifications for the title. Having carried the software architect title for years, I've recently had cause to reflect how I've operated and what that implies about my philosophy on the role.</p> <p>Much criticism is levied against ivory tower architects who produce "dreamy architectures that are detached from IT, business and budgetary realities" or the title inflation that makes architects indistinguishable from "most senior engineer".</p> <p>For me, I've found balancing both to be the most effective. The architect needs to be able to develop architecture, designs and plans that are both forward thinking but also constrained by what's practical, and what's truly needed. A good way to know what's practical and required is to spend time in the trenches, likely as the most senior engineer.</p> <p>Playing both roles creates an evolutionary feedback loop from design to implementation and back. This can result in discovering standards that need updating upon recognition of confusion, it could be finding a need for additional templates or libraries to smooth out the difficulty of a working particular technology, or the need for enforcement mechanisms to keep developers coloring within the lines. You feel their pain. It also establishes the credibility of the architecture, since the architect is the most senior engineer.</p> <p>There are lots of things that can be discovered in the course of development, using the same tools, processes, templates, libraries as the rest of the team. But you can't spend all of your time there. At some point you need to step back out and build those standards, libraries, prototype the use of new tools, etc, i.e. be the architect.</p> <p> </p> <p><img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2F1%2F17%2FYin_yang.svg%2F1200px-Yin_yang.svg.png&f=1&nofb=1" width="522" height="522" /></p> <p>The image that best represents my thinking is the yin and yang symbol. The architect and the "most senior engineer" are balanced forces, forever cycling with a fuzzy boundary between the roles. Additionally, there are seeds of each within the other. When acting as the architect you carry the seed of the engineer (how will this be applied, used, misunderstood), and when the engineer there is the seed of the architect (where can this be standardized, re-used, baked into a framework, replaced with something better). </p> <p>Depending on your environment, and the size of your team, it may not always be possible to operate like this, but I find it a compelling model.</p>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-5938587136280592072021-02-07T12:38:00.001-05:002021-02-08T11:02:13.400-05:00Best in shows<p>It may have taken me a while to get on the binge watching bandwagon that everyone else seemed to start with the first of the lockdowns. I’ve watched some pretty good shows lately, which reminded me of many of the other shows I’ve really liked. </p> <p>Here’s my recommended list, in rough chronological order, of when I saw them not necessarily when they aired.</p> <ul> <li>Warrior</li> <li>The Boys</li><li>The Mandalorian</li> <li>The Expanse</li><li>The Watchmen</li> <li>Kingdom</li> <li>Vikings</li> <li>The Walking Dead</li> <li>The Last Kingdom</li> <li>Boardwalk Empire</li> <li>Justified</li> <li>Game of Thrones</li> <li>The Wire</li> <li>Entourage</li> <li>True Detective (Season 1)</li> <li>Marco Polo</li> <li>Sons of Anarchy</li> <li>Breaking Bad</li><li>True Blood</li> <li>Deadwood</li> <li>Battlestar Galactica</li> <li>Farscape</li> <li>Spartacus</li> <li>Rome</li> <li>Firefly</li> <li>The Shield</li> <li>The Sopranos</li> <li>Six Feed Under</li> <li>Babylon 5</li> </ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-11400444898767392742021-01-29T10:43:00.001-05:002021-01-29T10:43:17.985-05:00RIF Notes #66<p><em>“A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system” - Galls Law</em></p> <ul> <li><a href="https://www.mcgill.ca/oss/article/critical-thinking/dunning-kruger-effect-probably-not-real">The Dunning-Kruger Effect Is Probably Not Real</a></li> <li><a href="https://passion.substack.com/p/its-all-about-marketplaces">Why Etsy Sucks (and why good markets don’t)</a></li> <li><a href="https://www.bleepingcomputer.com/news/security/cisco-engineer-resigns-then-nukes-16k-webex-accounts-456-vms/">Cisco engineer resigns then nukes 16k WebEx accounts, 456 VMs</a></li> <li><a href="https://florentcrivello.com/index.php/2018/07/29/mind-the-moat-a-7-powers-review/">Mind the Moat, a 7 Powers Review</a></li> <li><a href="https://sneak.berlin/20201112/your-computer-isnt-yours/">Jeffrey Paul: Your Computer Isn't Yours</a></li> <li><a href="https://www.thoughtworks.com/insights/blog/shift-it-projects-products-part-1-what-product?utm_source=twitter&utm_medium=social&utm_campaign=transformation">Shift IT from projects to products: Part 1- What is a product?</a></li> <li><a href="https://hbr.org/2020/11/stop-asking-for-feedback">Stop Asking for Feedback</a></li> <li><a href="https://www.hillelwayne.com/post/crossover-project/are-we-really-engineers/">Are We Really Engineers?</a></li> </ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-56695915939118325742021-01-26T15:57:00.007-05:002021-01-26T15:57:55.074-05:00RIF Notes #65<div class="ExternalClass5421D59A728E4303B2569144002A636A"> <p><em>"Any code of your own that you haven't looked at for six or more months might as well have been written by someone else." -Eagleson's Law</em></p> <ul> <li><a href="https://devblogs.microsoft.com/dotnet/announcing-net-5-0/">Announcing .NET 5.0</a></li> <li><a href="https://www.troyhunt.com/humans-are-bad-at-urls-and-fonts-dont-matter/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+TroyHunt+%28Troy+Hunt%29">Troy Hunt: Humans are Bad at URLs and Fonts Don’t Matter</a></li> <li><a href="http://blog.cleancoder.com/uncle-bob/2020/10/18/Solid-Relevance.html">Solid Relevance</a></li> <li><a href="https://m.signalvnoise.com/options-not-roadmaps/">Options, Not Roadmaps - Signal v. Noise</a></li> <li><a href="https://www.red-gate.com/simple-talk/sysadmin/devops/how-we-ended-up-with-git/">How We Ended up with Git</a></li> <li><a href="https://searchengineland.com/facebook-ccpa-compliance-challenges-limited-data-use-337170">Facebook CCPA compliance challenges: Limited Data Use</a></li> <li><a href="https://samcurry.net/hacking-apple/">We Hacked Apple for 3 Months: Here’s What We Found (samcurry.net)</a></li> <li><a href="https://8thlight.com/blog/thomas-countz/2020/10/06/dare-to-be-good-enough.html">Dare to be Good Enough—You'll be Happier for it | 8th Light</a></li> </ul> <p><img src="https://pbs.twimg.com/media/EgSueDJVAAAZK_p.png" /></p> </div>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-59986778927509940142021-01-26T15:57:00.005-05:002021-01-26T15:57:30.889-05:00RIF Notes #64<div class="ExternalClass1863024DFFCD4524BD3C9A32C848E7D6"> <p><em>"A management obsessed with productivity usually has little patience for the quiet time essential to profound creativity." —Gordon MacKenzie</em></p> <ul> <li><a href="https://openai.com/blog/solving-rubiks-cube/">Solving Rubik’s Cube with a Robot Hand</a></li> <li><a href="https://abcnews.go.com/Technology/wireStory/arrested-japanese-stalker-pupil-image-reflections-66202013">Arrested Japanese stalker used pupil image reflections</a> - A Japanese man arrested on suspicion of stalking a female pop idol had looked at reflections of her pupils in photos she shared on social media and used Google Street View to find where she lived</li> <li><a href="https://www.linkedin.com/pulse/self-organization-scary-powerful-part-ii-ed-rapp/">Self-Organization - Scary but Powerful</a></li> <li><a href="https://www.troyhunt.com/sustaining-performance-under-extreme-stress/">Sustaining Performance Under Extreme Stress</a></li> <li><a href="https://www.microsoft.com/en-us/microsoft-365/blog/2020/07/08/reimagining-virtual-collaboration-future-work-learning/">Reimagining virtual collaboration for the future of work and learning</a></li> <li><a href="https://www.thoughtworks.com/insights/articles/lightweight-technology-governance">Lightweight Technology Governance</a></li> <li><a href="https://www.psychology.org.au/news/media_releases/13September2016/Brooks/">Corporate psychopaths common and can wreak havoc in business, researcher says</a> – They are on to me.</li> <li><a href="https://holub.com/adapting-accelerate-to-development/">Adapting #Accelerate to Development</a></li> <li></li> </ul> </div>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-32246167075183490822021-01-26T15:57:00.003-05:002021-01-26T15:57:15.698-05:00RIF Notes #63<div class="ExternalClass3C5821D861F6488D8074387AA1B4B545"> <p><em>"My code can’t be tidier than my thinking. The purpose of my tidying is to clarify my thinking by manipulating the code. The code ends up better, but because I understand more not because I somehow forced it to be better in spite of my confusion." -Kent Beck</em></p> <ul> <li><a href="https://blog.jetbrains.com/dotnet/2020/06/26/advocates-rider-uncovering-ide-gets-places-webinar-recording/">Advocates on Rider – Uncovering the IDE That Gets You Places – Webinar Recording</a></li> <li><a href="https://peoplescience.maritz.com/Articles/2018/Designing-for-a-future-thats-hard-to-imagine">Designing for a Future That’s Hard to Imagine</a></li> <li><a href="https://ronjeffries.com/articles/019-01ff/story-points/Index.html">Story Points Revisited</a> – <em>“I like to say that I may have invented story points, and if I did, I’m sorry now”</em></li> <li><a href="https://www.wired.com/story/artificial-intelligence-yuval-noah-harari-tristan-harris/?CNDID=11668237&mbid=nl_100518_daily_list1_p4">When Tech Knows You Better Than You Know Yourself</a></li> <li><a href="https://www.johndcook.com/blog/2011/05/26/software-architecture-and-trust/">Software architecture as a function of trust</a></li> <li><a href="https://weblog.west-wind.com/posts/2020/Jun/26/Mirror-your-iOS-Device-Screen-on-Windows-with-the-free-5KPlayer">Mirror your iOS Device Screen on Windows with the free 5KPlayer</a></li> <li><a href="https://www.honeycode.aws/">Amazon Honeycode</a></li> <li><a href="https://astronomy.com/news/2019/03/scientists-used-ibms-quantum-computer-to-reverse-time-possibly-breaking-a-law-of-physics">Scientists used IBM's quantum computer to reverse time, possibly breaking a law of physics</a></li> <li><a href="https://news.ncsu.edu/2020/07/tech-job-interviews-anxiety/">Tech Sector Job Interviews Assess Anxiety, Not Software Skills</a> – <em>“A new study from NCSU and Microsoft finds that the technical interviews currently used in hiring for many software engineering positions test whether a job candidate has performance anxiety rather than whether the candidate is competent at coding"</em></li> </ul> </div>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-76956320640525346872021-01-26T15:57:00.001-05:002021-01-26T15:57:01.637-05:00RIF Notes #62<div class="ExternalClass01E8655AF16D4122ADE1ED5D92D1F718"> <p><em>“teams at Amazon are long lived service teams. Amazon does NOT do “projects”. Funding is continuous. This ensures attention to operational quality, reduces tech debt, avoids lock-in to legacy technologies” – Adrian Cockcroft</em></p> <ul> <li> <h1><a href="https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/developer-velocity-how-software-excellence-fuels-business-performance">Developer Velocity: How software excellence fuels business performance</a>   </h1> </li> <li><a href="https://en.wikipedia.org/wiki/Theory_of_constraints">The theory of constraints</a> </li> <li><a href="https://visualstudio.microsoft.com/services/visual-studio-codespaces/">Visual Studio Codespaces</a> </li> <li><a href="https://seroter.com/2020/03/26/creating-an-event-driven-architecture-out-of-existing-non-event-driven-systems/">Creating an event-driven architecture out of existing, non-event-driven systems</a> </li> <li><a href="http://feedproxy.google.com/~r/37signals/beMH/~3/Trf9lXIIHfg/">The Majestic Monolith can become The Citadel.</a> </li> <li><a href="http://feedproxy.google.com/~r/37signals/beMH/~3/k_k3NadAaYo/">Working remotely builds organizational resiliency</a></li> <li><a href="http://feedproxy.google.com/~r/TroyHunt/~3/dj3bECNIDXA/">Let's Stop the 5G Hysteria: Understanding Hoaxes and Disinformation Campaigns</a></li> </ul> </div>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-5023865117204518772021-01-26T15:56:00.001-05:002021-01-26T15:56:25.064-05:00RIF Notes #60<div class="ExternalClassCC3B8AB22B914F8A9F59687828F28B91"> <p><em>“With the possible exception of the four </em><a href="https://twitter.com/hashtag/Accelerate?src=hashtag_click"><em>#Accelerate</em></a><em> metrics, a metrics driven approach to evaluation is rarely effective. As Deming says: It is wrong to suppose that if you can’t measure it, you can’t manage it – a costly myth." - Allen Holub</em></p> <ul> <li><a href="https://www.jeremiahlee.com/posts/failed-squad-goals/">Spotify doesn’t use “the Spotify model”</a> - "the Spotify model is revealed as a collection of <a href="https://en.wikipedia.org/wiki/Cross-functional_team">cross-functional teams</a> with too much autonomy and a poor management structure. Don’t fall for it"</li> <li><a href="https://martinfowler.com/articles/value-architectural-attribute.html">The Elephant in the Architecture</a> - why business value should be treated as an architectural attribute</li> <li><a href="https://blog.christianposta.com/microservices/istio-as-an-example-of-when-not-to-do-microservices/">Istio as an Example of When Not to Do Microservices</a></li> <li><a href="https://www.microsoft.com/en-us/microsoft-365/blog/2020/04/22/how-remote-work-impacts-collaboration-findings-team/">How remote work impacts collaboration: findings from our team</a></li> <li><a href="https://www.hanselman.com/blog/QuarantineWorkIsNotRemoteWork.aspx">Quarantine work is not Remote work</a></li> <li><a href="https://blog.jetbrains.com/dotnet/2020/04/20/nullable-reference-types-migration/">Nullable Reference Types: Migrating a Codebase – A Look at New Language Features in C# 8</a></li> <li><a href="https://blog.jetbrains.com/dotnet/2020/04/16/resharper-ultimate-2020-1/">ReSharper Ultimate 2020.1: Improved Support for C# 8.0 and C++20, Dataflow Analysis of Integer Values, and Much More</a></li> <li><a href="https://martinfowler.com/articles/branching-patterns.html">Patterns for Managing Source Code Branches</a></li> </ul> </div>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-57808747722874848142021-01-26T09:28:00.001-05:002021-01-26T09:28:06.680-05:00RIF Notes #63<p><em>"Any code of your own that you haven't looked at for six or more months might as well have been written by someone else." -Eagleson's Law</em></p> <ul> <li><a href="https://devblogs.microsoft.com/dotnet/announcing-net-5-0/">Announcing .NET 5.0</a></li> <li><a href="https://www.troyhunt.com/humans-are-bad-at-urls-and-fonts-dont-matter/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+TroyHunt+%28Troy+Hunt%29">Troy Hunt: Humans are Bad at URLs and Fonts Don’t Matter</a></li> <li><a href="http://blog.cleancoder.com/uncle-bob/2020/10/18/Solid-Relevance.html">Solid Relevance</a></li> <li><a href="https://m.signalvnoise.com/options-not-roadmaps/">Options, Not Roadmaps - Signal v. Noise</a></li> <li><a href="https://www.red-gate.com/simple-talk/sysadmin/devops/how-we-ended-up-with-git/">How We Ended up with Git</a></li> <li><a href="https://searchengineland.com/facebook-ccpa-compliance-challenges-limited-data-use-337170">Facebook CCPA compliance challenges: Limited Data Use</a></li> <li><a href="https://samcurry.net/hacking-apple/">We Hacked Apple for 3 Months: Here’s What We Found (samcurry.net)</a></li> <li><a href="https://8thlight.com/blog/thomas-countz/2020/10/06/dare-to-be-good-enough.html">Dare to be Good Enough—You'll be Happier for it | 8th Light</a></li> </ul> <p><img src="https://pbs.twimg.com/media/EgSueDJVAAAZK_p.png" /></p>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-1324302547649971892021-01-26T09:27:00.001-05:002021-01-26T09:27:13.785-05:00RIF Notes #62<p><em>"My code can’t be tidier than my thinking. The purpose of my tidying is to clarify my thinking by manipulating the code. The code ends up better, but because I understand more not because I somehow forced it to be better in spite of my confusion." -Kent Beck</em></p> <ul> <li><a href="https://blog.jetbrains.com/dotnet/2020/06/26/advocates-rider-uncovering-ide-gets-places-webinar-recording/">Advocates on Rider – Uncovering the IDE That Gets You Places – Webinar Recording</a></li> <li><a href="https://peoplescience.maritz.com/Articles/2018/Designing-for-a-future-thats-hard-to-imagine">Designing for a Future That’s Hard to Imagine</a></li> <li><a href="https://ronjeffries.com/articles/019-01ff/story-points/Index.html">Story Points Revisited</a> – <em>“I like to say that I may have invented story points, and if I did, I’m sorry now”</em></li> <li><a href="https://www.wired.com/story/artificial-intelligence-yuval-noah-harari-tristan-harris/?CNDID=11668237&mbid=nl_100518_daily_list1_p4">When Tech Knows You Better Than You Know Yourself</a></li> <li><a href="https://www.johndcook.com/blog/2011/05/26/software-architecture-and-trust/">Software architecture as a function of trust</a></li> <li><a href="https://weblog.west-wind.com/posts/2020/Jun/26/Mirror-your-iOS-Device-Screen-on-Windows-with-the-free-5KPlayer">Mirror your iOS Device Screen on Windows with the free 5KPlayer</a></li> <li><a href="https://www.honeycode.aws/">Amazon Honeycode</a></li> <li><a href="https://astronomy.com/news/2019/03/scientists-used-ibms-quantum-computer-to-reverse-time-possibly-breaking-a-law-of-physics">Scientists used IBM's quantum computer to reverse time, possibly breaking a law of physics</a></li> <li><a href="https://news.ncsu.edu/2020/07/tech-job-interviews-anxiety/">Tech Sector Job Interviews Assess Anxiety, Not Software Skills</a> – <em>“A new study from NCSU and Microsoft finds that the technical interviews currently used in hiring for many software engineering positions test whether a job candidate has performance anxiety rather than whether the candidate is competent at coding"</em></li> </ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-55948020465196230422021-01-26T09:26:00.001-05:002021-01-26T15:56:41.390-05:00RIF Notes #61<p><em>“teams at Amazon are long lived service teams. Amazon does NOT do “projects”. Funding is continuous. This ensures attention to operational quality, reduces tech debt, avoids lock-in to legacy technologies” – Adrian Cockcroft</em></p> <ul> <li> <h1><a href="https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/developer-velocity-how-software-excellence-fuels-business-performance">Developer Velocity: How software excellence fuels business performance</a>   </h1> </li> <li><a href="https://en.wikipedia.org/wiki/Theory_of_constraints">The theory of constraints</a> </li> <li><a href="https://visualstudio.microsoft.com/services/visual-studio-codespaces/">Visual Studio Codespaces</a> </li> <li><a href="https://seroter.com/2020/03/26/creating-an-event-driven-architecture-out-of-existing-non-event-driven-systems/">Creating an event-driven architecture out of existing, non-event-driven systems</a> </li> <li><a href="http://feedproxy.google.com/~r/37signals/beMH/~3/Trf9lXIIHfg/">The Majestic Monolith can become The Citadel.</a> </li> <li><a href="http://feedproxy.google.com/~r/37signals/beMH/~3/k_k3NadAaYo/">Working remotely builds organizational resiliency</a></li> <li><a href="http://feedproxy.google.com/~r/TroyHunt/~3/dj3bECNIDXA/">Let's Stop the 5G Hysteria: Understanding Hoaxes and Disinformation Campaigns</a></li> </ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-26087773137420648102020-05-29T16:48:00.001-04:002020-05-29T16:48:34.176-04:00RIF Notes #60<p><em>"Tell me how you measure me and I will tell you how I will behave. If you measure me in an illogical way… do not complain about illogical behavior…” - Eli Goldratt</em></p><ul><li><a title="https://www.nytimes.com/2020/05/28/health/cdc-coronavirus-offices.html" href="https://www.nytimes.com/2020/05/28/health/cdc-coronavirus-offices.html">C.D.C. Recommends Sweeping Changes to American Offices</a></li><li><a title="https://www.1843magazine.com/features/death-of-the-office" href="https://www.1843magazine.com/features/death-of-the-office">Death of the office</a></li><li><a title="https://builtin.com/software-engineering-perspectives/lean-agile-methodology-software-engineering" href="https://builtin.com/software-engineering-perspectives/lean-agile-methodology-software-engineering">Agile’s Early Evangelists Wouldn’t Mind Watching It Die</a></li><li><a title="https://augustl.com/blog/2019/best_bug_predictor_is_organizational_complexity/" href="https://augustl.com/blog/2019/best_bug_predictor_is_organizational_complexity/">The #1 bug predictor is not technical, it's organizational complexity</a></li><li><a title="https://www.bloomberg.com/news/features/2019-12-11/silicon-valley-got-millions-to-let-siri-and-alexa-listen-in" href="https://www.bloomberg.com/news/features/2019-12-11/silicon-valley-got-millions-to-let-siri-and-alexa-listen-in">Silicon Valley Is Listening to Your Most Intimate Moments</a></li><li><a title="https://en.innova1st.com/2019/03/11/impact-of-multitasking-on-the-company-quantified/" href="https://en.innova1st.com/2019/03/11/impact-of-multitasking-on-the-company-quantified/">Impact of multitasking in the company (quantified )</a></li><li><a title="https://www.linkedin.com/pulse/agile-headed-backlash-paul-preiss" href="https://www.linkedin.com/pulse/agile-headed-backlash-paul-preiss">Is Agile Headed for a Backlash</a></li><li><a title="https://seattlescrum.com/misconception-2-all-teams-are-working-on-equal-value/?list=1" href="https://seattlescrum.com/misconception-2-all-teams-are-working-on-equal-value/?list=1">Large Organization Software Development Misconception #2: Are All Teams Working On Equal Value Stuff?</a>- “This is a great idea if your <a href="https://seattlescrum.com/you-wont-change-your-organization-without-an-optimization-goal">system optimization goal</a> is to keep everyone busy. If your goal is to do the highest priority, highest value work, it could only be justified if several implausible things were true”</li><li><a title="https://medium.com/@kentbeck_7670/decisions-decisions-or-why-baskets-of-options-dominate-9ac63658b593" href="https://medium.com/@kentbeck_7670/decisions-decisions-or-why-baskets-of-options-dominate-9ac63658b593">Decisions, Decisions or Why Baskets of Options Dominate</a></li></ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-44878574314325466172020-04-24T14:48:00.001-04:002020-04-24T14:48:21.893-04:00RIF Notes #60<p><em>“With the possible exception of the four </em><a href="https://twitter.com/hashtag/Accelerate?src=hashtag_click"><em>#Accelerate</em></a><em> metrics, a metrics driven approach to evaluation is rarely effective. As Deming says: It is wrong to suppose that if you can’t measure it, you can’t manage it – a costly myth." - Allen Holub</em></p><ul><li><a href="https://www.jeremiahlee.com/posts/failed-squad-goals/">Spotify doesn’t use “the Spotify model”</a> - "the Spotify model is revealed as a collection of <a href="https://en.wikipedia.org/wiki/Cross-functional_team">cross-functional teams</a> with too much autonomy and a poor management structure. Don’t fall for it"</li><li><a href="https://martinfowler.com/articles/value-architectural-attribute.html">The Elephant in the Architecture</a> - why business value should be treated as an architectural attribute</li><li><a href="https://blog.christianposta.com/microservices/istio-as-an-example-of-when-not-to-do-microservices/">Istio as an Example of When Not to Do Microservices</a></li><li><a href="https://www.microsoft.com/en-us/microsoft-365/blog/2020/04/22/how-remote-work-impacts-collaboration-findings-team/">How remote work impacts collaboration: findings from our team</a></li><li><a href="https://www.hanselman.com/blog/QuarantineWorkIsNotRemoteWork.aspx">Quarantine work is not Remote work</a></li><li><a href="https://blog.jetbrains.com/dotnet/2020/04/20/nullable-reference-types-migration/">Nullable Reference Types: Migrating a Codebase – A Look at New Language Features in C# 8</a></li><li><a href="https://blog.jetbrains.com/dotnet/2020/04/16/resharper-ultimate-2020-1/">ReSharper Ultimate 2020.1: Improved Support for C# 8.0 and C++20, Dataflow Analysis of Integer Values, and Much More</a></li><li><a href="https://martinfowler.com/articles/branching-patterns.html">Patterns for Managing Source Code Branches</a></li></ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-62536730992859127682020-02-10T09:27:00.001-05:002020-02-10T09:27:16.669-05:00RIF Notes #59<p>“The reason was uncovered in a study by Zheng Wang at Ohio State University. She tracked students and found that when they multi-tasked, it made them feel more productive, even though in reality they were being unproductive. Other studies found that the more you multitask, the more addicted you get to it."</p><ul><li><a href="https://changelog.com/posts/monoliths-are-the-future">Monoliths are the future</a> – Always a fan of contrarian opinions. Like any good tech. fad, microservice backlash is coming.</li><li><a href="https://www.gallup.com/workplace/283985/working-remotely-effective-gallup-research-says-yes.aspx">Is Working Remotely Effective? Gallup Research Says Yes</a></li><li><a title="https://holub.com/individual-performance-appraisals-just-say-no/" href="https://holub.com/individual-performance-appraisals-just-say-no/">Individual Performance Appraisals, Just Say No!</a></li><li><a href="https://devblogs.microsoft.com/dotnet/configureawait-faq/">ConfigureAwait FAQ</a></li><li><a href="http://blogs.tedneward.com/post/2020-tech-predictions/">2020 Tech Predictions</a></li><li><a href="https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy">Promiscuous Cookies and Their Impending Death via the SameSite Policy</a></li><li><a title="The Psychological Reasons of Software Project Failures" href="https://www.codeproject.com/Articles/5061258/The-Psychological-Reasons-of-Software-Project-Fail">The Psychological Reasons of Software Project Failures</a></li><li><a title="The Fall of The Software Engineer, The Rise of The Programmer Technician" href="https://medium.com/@alexkatrompas/the-fall-of-the-software-engineer-the-rise-of-the-programmer-technician-451a572d28b0">The Fall of The Software Engineer, The Rise of The Programmer Technician</a></li></ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0tag:blogger.com,1999:blog-5126579372546664703.post-61877972508525737122019-12-27T11:11:00.001-05:002019-12-27T11:11:55.781-05:00RIF Notes #58–Year end blow out<p>"Doing nothing is better than being busy doing nothing." — Lao Tzu, Tao Te Ching</p> <ul> <li><a href="https://www.thoughtworks.com/insights/blog/why-product-objectives-are-your-best-guide-team-design?utm_source=twitter&utm_medium=social&utm_campaign=tech">Why product objectives are your best guide to team design</a></li> <li><a title="https://martinfowler.com/articles/oss-lockin.html" href="https://martinfowler.com/articles/oss-lockin.html">Don't get locked up into avoiding lock-in</a></li> <li><a href="https://m.signalvnoise.com/you-can-heal-the-internet/">You can heal the internet</a></li> <li><a title="https://docs.microsoft.com/en-us/archive/msdn-magazine/2013/march/async-await-best-practices-in-asynchronous-programming" href="https://docs.microsoft.com/en-us/archive/msdn-magazine/2013/march/async-await-best-practices-in-asynchronous-programming">Async/Await - Best Practices in Asynchronous Programming</a></li> <li><a title="https://martinfowler.com/architecture/" href="https://martinfowler.com/architecture/">Software Architecture Guide</a></li><li><a title="https://blog.thepete.net/blog/2019/10/04/hello-production/" href="https://blog.thepete.net/blog/2019/10/04/hello-production/">Hello, production</a>-“Deploying something useless into production, as soon as you can, is the right way to start a new project. It pulls unknown risk forward, opens up parallel streams of work, and establishes good habits”</li><li><a title="https://twitter.com/RichRogersX/status/1159872097205805056" href="https://twitter.com/RichRogersX/status/1159872097205805056">The challenge with adding more engineers to a project. Just moving from 3 developers to 4 doubles the number of lines of communication.</a></li><li><a href="https://t.co/TB1lnMXdUq?amp=1">Age Discrimintation in Tech</a></li><li><a href="https://m.signalvnoise.com/ditch-the-elevator-pitch/">Ditch the elevator pitch</a></li><li><a href="https://www.johndcook.com/blog/2011/05/26/software-architecture-and-trust/">Software architecture as a function of trust</a></li><li><a href="https://seattlescrum.com/misconception-2-all-teams-are-working-on-equal-value/?list=1">Large Organization Software Development Misconception #2: Are All Teams Working On Equal Value Stuff?</a> – “there’s a difference between <em>feeling</em> productive, and actually doing the highest value work”</li><li><a title="Decisions, Decisions or Why Baskets of Options Dominate" href="https://medium.com/@kentbeck_7670/decisions-decisions-or-why-baskets-of-options-dominate-9ac63658b593">Decisions, Decisions or Why Baskets of Options Dominate</a></li></ul><p><br></p><p><strong>Bonus quotes</strong></p><p><em><font size="3">"If you can't modularize a monolith, what makes you think that you can create microservices?"</font></em></p><p><font size="3"><em>"Has it occurred to you that teaching folks how to collaborate in an environment that encourages the opposite (eg use of performance reviews that promote individual behaviour) is a fools errand?…Here's another head-scratcher: companies that "value collaboration" but stack rank everyone every year" - Dan Creswell</em> </font></p><p><em><font size="3">"Listing bugs in some ticketing system does not fix them. Fix them. If there are too many to do that, it may be time for a rewrite, and this time enforce a no-known-bugs-on-deployment rule. Bugs slow down development. They are productivity killers." - Allen Holub</font></em></p><p><em><font size="3">"I define a monolith as a single executable with all code running in a single address space." - Uncle Bob</font></em></p><p><em><font size="3">"People who ask for data rarely have data to support the alternative they prefer." – Allen Holub</font></em></p><p><em><font size="3">"No single message bus product will provide all these features. To mitigate the risk of choosing poorly, you should start with a plain, easy-to-use and free message bus, and implement the architecture initially with that message bus. This will enable you to learn about what are the desired qualities, attributes, and to prioritize them. Only then chose the best of breed" – Juval</font></em></p><p><em><font size="3">"It is more important for code to be changeable than that it work. Code that does not work, but that is easy to change, can be made to work with minimum effort. Code that works but that is hard to change will soon not work and be hard to get working again." - Uncle Bob</font></em></p><p><em><font size="3">"When you first study a field, it seems like you have to memorize a zillion things. You don't. What you need is to identify the 3-5 core principles that govern the field. The million things you thought you had to memorize are various combinations of the core principles." -J. Reed</font></em></p><p><em><font size="3">"Please do not fall prey to the idea that any activity that does not measurably advance your career is somehow necessarily harming it. You have only this one beautiful life; do not avoid living it for fear that your total productive output might be less than the theoretical max." Katie Mack</font></em></p><p><em><img src="https://pbs.twimg.com/media/DnQIq3PXoAEGlyp?format=jpg&name=small"></em></p><p><em><br></em></p><ul> </ul>nappisitehttp://www.blogger.com/profile/12557859343801158708noreply@blogger.com0