<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gearoid O'Treasaigh</title>
    <description>The latest articles on DEV Community by Gearoid O'Treasaigh (@gearoidotreasaigh).</description>
    <link>https://dev.to/gearoidotreasaigh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1408576%2Fa4ac7456-f05a-4249-a245-e13b4bdee65f.jpg</url>
      <title>DEV Community: Gearoid O'Treasaigh</title>
      <link>https://dev.to/gearoidotreasaigh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gearoidotreasaigh"/>
    <language>en</language>
    <item>
      <title>Password Management: Passwordless Login</title>
      <dc:creator>Gearoid O'Treasaigh</dc:creator>
      <pubDate>Thu, 16 May 2024 15:41:08 +0000</pubDate>
      <link>https://dev.to/gearoidotreasaigh/password-management-passwordless-login-1j5</link>
      <guid>https://dev.to/gearoidotreasaigh/password-management-passwordless-login-1j5</guid>
      <description>&lt;p&gt;We keep hearing about the move to passwordless logins. What does all this mean? Does it mean that we're not going to have any way of checking who we are or that we're moving to the advanced technology where we have retina scanning? Let's delve into it in this blog post.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Authentication?
&lt;/h2&gt;

&lt;p&gt;Let's start with authentication. &lt;a href="https://auth0.com/intro-to-iam/what-is-authentication"&gt;Auth0 defines&lt;/a&gt; authentication as the process of proving some fact or document is genuine. A user proves their identity by providing their credentials. A user can use different forms of information to prove their identity. That information could be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Something they know, such as a password&lt;/li&gt;
&lt;li&gt;  Something they have, such as their phone&lt;/li&gt;
&lt;li&gt;  Something they are, some biometric marker, such as a fingerprint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A passkey is a new form of authentication and fits into something they have.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Passkeys?
&lt;/h2&gt;

&lt;p&gt;Over the last while, we've started to see passkeys as a way to log in to many familiar websites. Some examples are Google, GitHub, Uber, and LinkedIn, and the list continues to grow. Passkeys are becoming widely adopted as a secure way to log in, as they have some notable benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Passkeys are always strong&lt;/li&gt;
&lt;li&gt;  We no longer have to remember long and complex passwords&lt;/li&gt;
&lt;li&gt;  Passkeys are phishing-resistant&lt;/li&gt;
&lt;li&gt;  In a data breach, passkeys are not exposed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How Have Passkeys Come About?
&lt;/h2&gt;

&lt;p&gt;How did they come to be? Passkeys use two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  FIDO (Fast IDentity Online) authentication&lt;/li&gt;
&lt;li&gt;  A means to securely retrieve the FIDO private keys for use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The evolution of security and, more specifically, authentication has led us to this elegant and simple authentication method for the user.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is FIDO Authentication?
&lt;/h2&gt;

&lt;p&gt;FIDO is a way to log in securely using a digital signature. How this happens is that FIDO is comprised of two pieces of information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A private key&lt;/li&gt;
&lt;li&gt;  A public key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When we want to log in, let's say, to LinkedIn using a passkey, LinkedIn sends some information to our browser or application. The browser connects to the passkey store, which causes the user to perform biometric verification with a fingerprint or facial recognition. Once confirmed, LinkedIn sends a new, unique piece of information to the browser and passkey store. The passkey store uses the private key to encrypt it. The browser then sends the information back to LinkedIn. Then LinkedIn takes the public key, decrypts it, and checks if it matches what was initially sent. If it doesn't, the login request fails, but if it does match, we're allowed access to our individual LinkedIn account.&lt;/p&gt;

&lt;p&gt;This process is called &lt;a href="https://www.cloudflare.com/en-gb/learning/ssl/what-is-asymmetric-encryption"&gt;asymmetric encryption&lt;/a&gt;, in which two different keys are used for encrypting and decrypting. The private key is used for encrypting, and the public key is used for decrypting. The private key is kept secure in the passkey store and never disclosed, while the public key can be shared with anyone. In the case of authentication, the public key is stored in the app or website, requiring authentication. The public key cannot crack what the private key is.&lt;/p&gt;

&lt;p&gt;Let's take an example to see that in action, where we have the spell hocus pocus as the private key and the spell alakazam as the public key:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; We start logging in to LinkedIn using our browser with a passkey.&lt;/li&gt;
&lt;li&gt; The browser then connects with the passkey store.&lt;/li&gt;
&lt;li&gt; The passkey store prompts the user to authenticate with their fingerprint or facial recognition and lets the browser know when the passkey store is ready.&lt;/li&gt;
&lt;li&gt; LinkedIn sends the message "rabbit" to our browser so that the browser can show it has the correct passkey.&lt;/li&gt;
&lt;li&gt; Our passkey store gets the message from the browser and encrypts it, using the spell hocus pocus to get the new message "watermelon".&lt;/li&gt;
&lt;li&gt; The passkey store forwards the message to the browser, which sends the message "watermelon" back to LinkedIn.&lt;/li&gt;
&lt;li&gt; LinkedIn takes the message "watermelon" and decrypts it using the alakazam spell to get the message "rabbit".&lt;/li&gt;
&lt;li&gt; LinkedIn verifies that it matches what it sent initially.&lt;/li&gt;
&lt;li&gt; LinkedIn lets us log in to our LinkedIn account.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where Is the Passkey Stored?
&lt;/h2&gt;

&lt;p&gt;Updates are rolling out to support managing passkeys by Google, Apple, and Microsoft, along with password managers. There are some differences between what we can do with each:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Google allows us to use passkeys with all of its Android apps and Chrome browser&lt;/li&gt;
&lt;li&gt;  Apple allows use with Mac, iPad, and iPhone along with its Safari browser&lt;/li&gt;
&lt;li&gt;  Microsoft allows use with Windows devices and the Edge browser&lt;/li&gt;
&lt;li&gt;  Password managers will allow passkey use across all of the devices that support the password manager&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Generally, each of the different stores allows the passkeys to be synced through the cloud, so once we have our passkey stored in the Google password manager, any mobile device we use that Google account with will have access to that passkey.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if We Need the Passkey on Another Platform?
&lt;/h2&gt;

&lt;p&gt;Let's say we've set up a passkey on Apple's keychain, and now we need to log into our Windows device. We can choose to use a passkey from another device.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyhtquts6h18t7cfze51.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyhtquts6h18t7cfze51.png" alt="QR code from github.com which allows the user to scan with their phone and use the passkey from their phone to log in" width="454" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Screenshot of the Passkey prompt from github.com&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can scan the QR code with our iPhone and choose the passkey to log in. We would then be given the option to save a passkey. Then, we would have different passkeys for Apple and Microsoft. Each allows us to log in, and each passkey is different.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does Setting Up a New Passkey Look Like?
&lt;/h2&gt;

&lt;p&gt;Some websites and applications have made setting up passkeys simple. However, others require a little more work. The directory &lt;a href="https://passkeys.directory/"&gt;https://passkeys.directory&lt;/a&gt; lists all the websites, apps, and services that use passkeys for signing in. We can quickly check how to set up each app and website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr13s7tftdpff1m96s1wq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr13s7tftdpff1m96s1wq.png" alt="Example using Adobe for passkey" width="800" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Example of the instructions for setting up a passkey for Adobe&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How Secure Are Passkeys?
&lt;/h2&gt;

&lt;p&gt;We talked about how authentication uses private and public keys earlier. When we set up a new passkey, a new private key and matching public key are generated. The private key is securely stored in the service we use to manage the passkeys, which could be Google's Password Manager, Apple's iCloud keychain, Microsoft's Password Manager, or the password manager we choose. The private key never leaves that store. The public key is stored on the website, app, or service that we're setting up. To make use of the passkey, we need to authenticate. The authentication to access the passkey is a biometric check, such as logging in with a fingerprint or facial recognition.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does It Mean in a Security Breach?
&lt;/h2&gt;

&lt;p&gt;For a security breach of an application, the application would have the public key, which we're okay with anyone having, as it's public. The public key doesn't allow the "bad actor" to log into our account, so we remain secure. However, if we still have a password stored on the application, we must reset it immediately. If the password is not strong or re-used, we are left quite vulnerable while using a weak password.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do Each of the Authentication Types Compare?
&lt;/h2&gt;

&lt;p&gt;The hardware security key is the most secure since it &lt;a href="https://www.youtube.com/watch?v=wN5lpttf_Hc"&gt;cannot be copied or shared&lt;/a&gt;; only the holder can use it. Using only a password is the weakest since it's one form of authentication that can be phished and set up weakly. Next, multi-factor authentication adds to the security level, while the passkey is seen as more secure again. For companies that want only one person to access a key, a hardware security key meets that need as it can only be easily used by co-located people. Passkeys and hardware security keys would ideally be used with Multi-Factor Authentication (MFA) to ensure one of the forms has not been stolen by a bad actor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpn8payljau9t0kn5oij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpn8payljau9t0kn5oij.png" alt="A line diagram, with password on the left as it is weakest, next on the right is password with multi-factor authentication, next to that is passkey and finally there is hardware security key, which is on the right." width="800" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;From weakest to most secure: the different types of authentication&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Could We Use a Hardware Security Key as A Passkey?
&lt;/h2&gt;

&lt;p&gt;Since both hardware security keys and passkeys use FIDO authentication, some websites let us register a passkey as a security key or register a hardware security key as a passkey. However, how each website or app intends to use them could differ, so it's worth noting how we log in. Passkeys could be designed to be used instead of a password, and then a second form of authentication could also be used. For a hardware security key, it may be that a password is entered first, and then the key is used as a second form of authentication. This could mean we must keep a password for a security key, while with a passkey, we could go passwordless.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Are We in Terms of Moving Fully Passwordless?
&lt;/h2&gt;

&lt;p&gt;As of May 2024, we're seeing the adoption of passkeys by more applications and vendors. However, we're not at the point where every application has moved over to use passkeys. Dashlane is seeing a &lt;a href="https://developers.googleblog.com/en/password-manager-dashlane-sees-70-increase-in-conversion-rate-for-signing-in-with-passkeys-compared-to-passwords/"&gt;70% conversion rate&lt;/a&gt; from passwords to passkeys as of October 2023, where users are jumping on board using passkeys. If we put that into perspective, those Dashlane users are already password savvy, have realized the need for a password manager, and have seen the benefits of passkeys. However, many users need to learn what passkeys are and why they should use them. So we have to work to educate people and update our applications to support passkeys. At some point, we will have widespread passkey adoption, and applications can start to test switching off their password support across the application or per user so that they no longer are needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is MFA Going Away?
&lt;/h2&gt;

&lt;p&gt;What does the move to passkeys and passwordless mean for MFA? From what we're seeing in the industry, MFA will continue as a way to ensure that users are who they say they are. Users can log in with the passkey and then use another form of authentication to verify their identity. We should continue to use additional forms of authentication along with our passkeys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We've learned that a world in which we are passwordless is coming closer. While we may not be there just yet, a lot of work is being done to get us there. Since we still have passwords, we have to make sure they are secure, even if we start to primarily use passkeys, as the passwords could get exposed in a data breach. As we move on with our day, we should look for opportunities to use passkeys, set them up, and post comments on how our move to passkeys is going.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  What is authentication: &lt;a href="https://auth0.com/intro-to-iam/what-is-authentication"&gt;https://auth0.com/intro-to-iam/what-is-authentication&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Asymmetric encryption: &lt;a href="https://www.cloudflare.com/en-gb/learning/ssl/what-is-asymmetric-encryption/"&gt;https://www.cloudflare.com/en-gb/learning/ssl/what-is-asymmetric-encryption&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Passkey Directory: &lt;a href="https://passkeys.directory/"&gt;https://passkeys.directory&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  FIDO Passkey Primer IBM: &lt;a href="https://youtu.be/wN5lpttf_Hc?si=YGWdwogvjiyOgnsg"&gt;https://youtu.be/wN5lpttf_Hc?si=YGWdwogvjiyOgnsg&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Google blog on &lt;a href="https://developers.googleblog.com/en/password-manager-dashlane-sees-70-increase-in-conversion-rate-for-signing-in-with-passkeys-compared-to-passwords/"&gt;https://developers.googleblog.com/en/password-manager-dashlane-sees-70-increase-in-conversion-rate-for-signing-in-with-passkeys-compared-to-passwords&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;The title image is from &lt;a href="https://beta.dreamstudio.ai/generate"&gt;Dreamstudio AI&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>password</category>
      <category>habits</category>
      <category>security</category>
      <category>development</category>
    </item>
    <item>
      <title>Password Management: The Basics</title>
      <dc:creator>Gearoid O'Treasaigh</dc:creator>
      <pubDate>Thu, 02 May 2024 14:08:47 +0000</pubDate>
      <link>https://dev.to/gearoidotreasaigh/password-management-the-basics-4d40</link>
      <guid>https://dev.to/gearoidotreasaigh/password-management-the-basics-4d40</guid>
      <description>&lt;p&gt;Happy World Password Day! (In 2024, it's being celebrated on May 2nd). Remembering loads of passwords is an absolute pain. As we work in corporate jobs, we find that the number of personal and professional passwords we have continues to grow, along with having to log into systems numerous times a day. In general, employees manage &lt;a href="https://blog.lastpass.com/posts/2017/11/lastpass-reveals-8-truths-about-passwords-in-the-new-password-expose"&gt;191 logins and log in 154 times a month, with each login taking, on average, 14 seconds, causing us to spend at least 36 minutes entering passwords per month&lt;/a&gt;. Let's look at why a password manager should take care of it rather than tracking them all in our heads or on a scrap of paper.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Impact of a Data Breach
&lt;/h2&gt;

&lt;p&gt;According to &lt;a href="https://www.statista.com/topics/11610/data-breaches-worldwide/#topicOverview"&gt;Statista's report&lt;/a&gt;, 6.43 million data records were leaked during the first quarter of 2023. When these data breaches occur, the leaked data may include our email addresses and passwords. This breach can start a chain reaction of "bad actors" accessing our accounts, locking us out, and gaining access to further accounts if they have access to the email account. This exploit can further snowball if the same password is used on all accounts. The "bad actor" can gain access to our email. They use the email information to understand the services we're signed up for and access them using the same password.&lt;/p&gt;

&lt;p&gt;Using the same password across accounts is like using the one key for all the locks in an entire town and having thieves steal the key. They can then go through the contents of every building, see what is there, vandalise, and steal whatever they want. The impact financially and mentally would be huge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Detecting Data Breaches
&lt;/h2&gt;

&lt;p&gt;Google One provides &lt;a href="https://one.google.com/dwr/dashboard"&gt;scanning for our email addresses on the dark web&lt;/a&gt;, which lets us know the data breaches where our email addresses were exposed. The website &lt;a href="https://haveibeenpwned.com/"&gt;Have I Been Pwned (HIBP)&lt;/a&gt; allows us to check on any email address and see if it's been exposed through a data breach. There are also complete identity monitoring services that keep track of our email addresses, banking details, passport information, driving licence, and social security numbers. These complete services usually come at a cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protecting Users From Data Breaches
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://haveibeenpwned.com/"&gt;HIBP&lt;/a&gt; provides a free service to &lt;a href="https://haveibeenpwned.com/Passwords"&gt;check if a user's password has been compromised&lt;/a&gt; in a data breach. The &lt;a href="https://haveibeenpwned.com/API/v3#PwnedPasswords"&gt;HIBP API&lt;/a&gt; can be integrated into the sign-in or password update services to notify users that the password has been compromised. Ideally, when updating a password with a known compromised password, the service would block that password from being used with helpful information. HIBP doesn't publish the companies that use the API on their platforms, but as users, we can ask for the platforms to have this feature, and if we're in the privileged position of creating the applications, we can work to include this feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Do We Need a Good Password?
&lt;/h2&gt;

&lt;p&gt;Along with the data breaches that may show our passwords on the dark web, hackers also try to break into our accounts by using software to guess our passwords. Below, we can see that the simpler the password is regarding character type, the easier it is to crack, even when the password length is increased.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlhgtnnsfnohpjsg93hg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlhgtnnsfnohpjsg93hg.png" alt="A table showing the speed at which a password can be cracked. This ranges from instantly with passwords of numbers or lowercase letters only of certain lengths. To 19qn years for a password that uses numbers, upper and lowercase letters, and symbols. To check our password strength, use https://www.security.org/how-secure-is-my-password/" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Source: &lt;a href="https://www.hivesystems.com/password"&gt;https://www.hivesystems.com/password&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;However, suppose we use a previously stolen password, simple words, or the same password across multiple sites. In that case, the &lt;a href="https://www.hivesystems.com/blog/are-your-passwords-in-the-green"&gt;table above will turn purple as each password will be forced instantly&lt;/a&gt;, no matter the character combination or length. This scenario is because hackers will start with standard, easy or already-known passwords rather than from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Do We Re-Use Passwords?
&lt;/h2&gt;

&lt;p&gt;Remembering long and complex passwords is tricky unless we have a photographic memory like Sheldon Cooper from The Big Bang Theory. Generally, we need to have memorable passwords, and having so many accounts with the ever-increasing number of accounts we use, it's tricky to keep track of all the passwords. Some strategies to deal with this are to re-use passwords or have a base password which slightly changes based on the name of the service being used. In the &lt;a href="https://www.lastpass.com/resources/ebook/psychology-of-passwords-2021"&gt;2021 report from LastPass&lt;/a&gt;, 92% of people know that re-using the same password or a variation is a risk. However, more than learning is needed to cause people to take action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good Security Practices
&lt;/h2&gt;

&lt;p&gt;According to Bitwarden, the &lt;a href="https://bitwarden.com/blog/6-things-to-keep-your-passwords-secure/"&gt;six good security practices&lt;/a&gt; we need are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check if our &lt;a href="https://haveibeenpwned.com/"&gt;password has been pwned&lt;/a&gt;&lt;/strong&gt;: we are checking to see if the password has been exposed in a data breach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ensure that we have a strong password&lt;/strong&gt;: if we don't have a password manager that provides a password generator, we could use &lt;a href="https://bitwarden.com/password-generator/"&gt;Bitwarden's strong password generator&lt;/a&gt; to create a password. If we have a password that we think is strong and want to check it, we could use &lt;a href="https://www.security.org/how-secure-is-my-password/"&gt;Security.org's password checker&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embrace two-factor authentication&lt;/strong&gt;: a &lt;a href="https://www.comparitech.com/blog/information-security/password-statistics"&gt;report by Comparitech&lt;/a&gt; says that 99.9% of all attacks are blocked by multi-factor authentication (MFA). For the small percentage that MFA doesn't block, hackers will use social engineering, MFA fatigue, or other means to obtain the additional form of authentication needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stick to encrypted sharing methods&lt;/strong&gt;: using our password manager's sharing facility is an excellent way to go.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid re-use altogether&lt;/strong&gt;: update the passwords for any accounts where our password has been re-used.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a password manager&lt;/strong&gt;: &lt;a href="https://www.techradar.com/best/password-manager"&gt;Techradar has a good review for 2024&lt;/a&gt; that compares password managers and recommends them for different life scenarios.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Taking Password Management Seriously
&lt;/h2&gt;

&lt;p&gt;Using a password manager is a way to strengthen our password security, remove the cognitive load of remembering all our passwords, and speed up our ability to log into platforms and services. The &lt;a href="https://www.ncsc.gov.uk/collection/top-tips-for-staying-secure-online/password-managers"&gt;National Cyber Security Centre&lt;/a&gt; in the UK defines it as:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A password manager is an app on your phone, tablet or computer that stores your passwords, so you don’t need to remember them&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Along with storing the password, a good password manager makes it frictionless to enter, lets us know if a password is re-used or weak, alerts us if our password has been compromised, and can manage our second-factor authentication. The password manager can also sync the passwords across all the platforms we need to enter our passwords.&lt;/p&gt;

&lt;p&gt;According to a &lt;a href="https://www.security.org/digital-safety/password-manager-annual-report/2022/"&gt;2022 Security.org report&lt;/a&gt;, users who do not use password managers are three times more likely to experience identity theft than those who do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Application Password Security
&lt;/h2&gt;

&lt;p&gt;Over time, applications have become more sophisticated in how they store passwords. Initially, they might have been stored in plain text in the database, but now they are transformed by a process which cannot be reversed. Over time, these transformation processes are getting more sophisticated.&lt;/p&gt;

&lt;p&gt;In a data breach, the leaked passwords should be the transformed version, so this slows down "bad actors" as they try to figure out how the passwords have been transformed, and the transformation takes time. To speed the process up, they will take known passwords that have been transformed and see if they match what has been leaked, as they will be immediately able to enter those accounts. This is why we must change our passwords after a data breach and ensure they are different across accounts. If we have a good password, it slows them down from cracking it and gives us time to change it before they access our account.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Password Manager Should We Use?
&lt;/h2&gt;

&lt;p&gt;Some free password managers are iCloud Keychain, Google Password Manager and Firefox Password Manager. These are a good start; however, they have limitations and are tied to the browser they are associated with. This means the iCloud keychain works with Safari, Google Password Manager with Chrome, and Firefox Password Manager with Firefox. Suppose we're finding that we need to enter passwords outside of our browser and have to try and find the password, or we are defaulting back to inadequate password behaviours. In that case, it may be time we looked into dedicated password managers.&lt;/p&gt;

&lt;p&gt;When looking for a password manager, we should look for one that easily syncs across all devices and makes it easy to save and enter our passwords at a minimum. Once we have entered our password for the password manager or used our fingerprint, for example, to log in, we should be able to choose in one click which accounts we want to use to log into a service. Some password managers will automatically enter our credentials in the app or website. A reputable review site can save us the hard work of comparing the different services. An example is the &lt;a href="https://www.techradar.com/best/password-manager"&gt;Techradar review for 2024&lt;/a&gt;. On the list, there are free and paid solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting Our Life With a Password Manager
&lt;/h2&gt;

&lt;p&gt;Once we've chosen our password manager, we must enable our devices and browsers to use it seamlessly. This might be apps or browser extensions. Let's take Bitwarden and 1Password as our examples since Bitwarden is currently the best free password manager available, according to TechRadar, while 1Password is used by many businesses. We need to install the apps and extensions to get started using them. Both websites provide handy download pages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bitwarden: &lt;a href="https://bitwarden.com/download"&gt;https://bitwarden.com/download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;1Password: &lt;a href="https://1password.com/downloads"&gt;https://1password.com/downloads&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the end of installing everything, we should have the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A desktop app&lt;/li&gt;
&lt;li&gt;Extensions for each browser we use, e.g. Chrome, Safari, Edge…&lt;/li&gt;
&lt;li&gt;The mobile app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When setting up the mobile app for Bitwarden, they have a help page on setting up &lt;a href="https://bitwarden.com/help/getting-started-mobile/"&gt;autofill and unlocking using biometrics&lt;/a&gt;, as they are necessary to make using the app as easy as possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Password Checkup
&lt;/h2&gt;

&lt;p&gt;Some password managers will provide a service to score all our passwords and let us know where we may be exposed. 1Password provides &lt;a href="https://support.1password.com/watchtower/"&gt;Watchtower&lt;/a&gt;, which identifies the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify vulnerable logins imported from LastPass: LastPass had data breaches, and this check informs us where we might be vulnerable.&lt;/li&gt;
&lt;li&gt;Find compromised websites and vulnerable passwords.&lt;/li&gt;
&lt;li&gt;Find websites that support passkeys.&lt;/li&gt;
&lt;li&gt;Identify re-used and weak passwords.&lt;/li&gt;
&lt;li&gt;Find unsecured websites.&lt;/li&gt;
&lt;li&gt;Identify logins that support two-factor authentication.&lt;/li&gt;
&lt;li&gt;Check for expiring items&lt;/li&gt;
&lt;li&gt;Find duplicate items.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ideally, we want a perfect score across the board, but the reality is that we can do what the websites allow us to do. This means that any accounts that limit us to having PINs or short passwords will either show up as being vulnerable or having a weak password. In these cases, we need to ensure that if there are any second forms of authentication, we have them enabled so that if a hacker blows their way through, they are blocked by MFA, which we read blocks hackers 99.9% of the time. Banks are notorious for having very weak password or PIN protocols, and they must combine them with apps, one-time passcodes and card readers.&lt;/p&gt;

&lt;h2&gt;
  
  
  One-Time Passcodes
&lt;/h2&gt;

&lt;p&gt;Another feature our password manager hopefully has is the ability to store one-time passcodes. These are a form of second-factor authentication, set up by scanning a QR code. Once set up, the codes change every thirty seconds. The benefit of having them in our password manager is that they are automatically entered when needed rather than being retrieved from another app. 1Password has a guide to help us through the process of &lt;a href="https://support.1password.com/one-time-passwords/"&gt;setting up one-time passcodes&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;Since it's World Password Day, we can level up our password management skills and ensure we're not vulnerable. If we don't have a password manager, it's an opportunity to set one up, as it's easy and will save us time. We can bite the bullet and change any re-used passwords. Also, look at our vulnerable and weak passwords in our password manager and tackle a few of them. Over time, we can improve our password management score.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Password management is a problem that we all have to tackle. Keeping track of passwords in our heads and coming up with unique, strong passwords is challenging. Rather than having this cognitive load, we've seen the benefit that password managers bring. The only question left is, what will it take us to make the simple move of setting up our password manager and living the life of not having to remember loads of passwords and instead our one password manager password?&lt;/p&gt;

&lt;h2&gt;
  
  
  Further Reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;139 password statistics to help you stay safe in 2024: &lt;a href="https://us.norton.com/blog/privacy/password-statistics"&gt;https://us.norton.com/blog/privacy/password-statistics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;LastPass Reveals 8 Truths about Passwords in the New Password Exposé: &lt;a href="https://blog.lastpass.com/posts/2017/11/lastpass-reveals-8-truths-about-passwords-in-the-new-password-expose"&gt;https://blog.lastpass.com/posts/2017/11/lastpass-reveals-8-truths-about-passwords-in-the-new-password-expose&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Data Breaches Worldwide: &lt;a href="https://www.statista.com/topics/11610/data-breaches-worldwide/#topicOverview"&gt;https://www.statista.com/topics/11610/data-breaches-worldwide/#topicOverview&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google One Dark Web Report: &lt;a href="https://one.google.com/dwr/dashboard"&gt;https://one.google.com/dwr/dashboard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Have I Been Pwned: &lt;a href="https://haveibeenpwned.com"&gt;https://haveibeenpwned.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Have I Been Pwned Password Checker: &lt;a href="https://haveibeenpwned.com/Passwords"&gt;https://haveibeenpwned.com/Passwords&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Have I Been Pwned Password API: &lt;a href="https://haveibeenpwned.com/API/v3#PwnedPasswords"&gt;https://haveibeenpwned.com/API/v3#PwnedPasswords&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bitwarden's Strong Password Generator: &lt;a href="https://bitwarden.com/password-generator"&gt;https://bitwarden.com/password-generator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Password Manager tips from the National Cyber Security Centre in the UK: &lt;a href="https://www.ncsc.gov.uk/collection/top-tips-for-staying-secure-online/password-managers"&gt;https://www.ncsc.gov.uk/collection/top-tips-for-staying-secure-online/password-managers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Hive Tech Password: &lt;a href="https://www.hivesystems.com/password"&gt;https://www.hivesystems.com/password&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The 2021 Psychology of Passwords Report: &lt;a href="https://www.lastpass.com/resources/ebook/psychology-of-passwords-2021"&gt;https://www.lastpass.com/resources/ebook/psychology-of-passwords-2021&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;6 Things to Keep Your Passwords Secure: &lt;a href="https://bitwarden.com/blog/6-things-to-keep-your-passwords-secure"&gt;https://bitwarden.com/blog/6-things-to-keep-your-passwords-secure&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Password Statistics: &lt;a href="https://www.comparitech.com/blog/information-security/password-statistics"&gt;https://www.comparitech.com/blog/information-security/password-statistics&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;3 Techniques to Bypass MFA: &lt;a href="https://securityscorecard.com/blog/techniques-to-bypass-mfa"&gt;https://securityscorecard.com/blog/techniques-to-bypass-mfa&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Password Manager Annual Report 2022: &lt;a href="https://www.security.org/digital-safety/password-manager-annual-report/2022"&gt;https://www.security.org/digital-safety/password-manager-annual-report/2022&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Best Password Manager of 2024: &lt;a href="https://www.techradar.com/best/password-manager"&gt;https://www.techradar.com/best/password-manager&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Password Manager Mobile Apps: &lt;a href="https://bitwarden.com/help/getting-started-mobile"&gt;https://bitwarden.com/help/getting-started-mobile&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Use Watchtower to find the account details you need to change: &lt;a href="https://support.1password.com/watchtower/"&gt;https://support.1password.com/watchtower/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Setting up one-time passcodes in 1Password: &lt;a href="https://support.1password.com/one-time-passwords/"&gt;https://support.1password.com/one-time-passwords/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;The title image is from &lt;a href="https://beta.dreamstudio.ai/generate"&gt;Dreamstudio AI&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>password</category>
      <category>habits</category>
      <category>security</category>
    </item>
    <item>
      <title>A Change in Identity — From Developer to Craftsperson</title>
      <dc:creator>Gearoid O'Treasaigh</dc:creator>
      <pubDate>Fri, 26 Apr 2024 12:11:08 +0000</pubDate>
      <link>https://dev.to/gearoidotreasaigh/a-change-in-identity-from-developer-to-craftsperson-218f</link>
      <guid>https://dev.to/gearoidotreasaigh/a-change-in-identity-from-developer-to-craftsperson-218f</guid>
      <description>&lt;p&gt;In this blog article, we'll explore the principles of software craftsmanship, the benefits of becoming a software craftsperson, and how we can improve our skills. We'll look at a growth mindset and some resources to help us on our journey. Let's dive in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Witnessing Craftsmanship
&lt;/h2&gt;

&lt;p&gt;Let's say we enter a home and face this beautifully crafted staircase. Why do we even think this is beautiful? What comes to mind is the skill and work that has gone into it. The craftsperson has had to think about how to ensure that it's only connected at the top and the bottom, it can support the weight and doesn't fall under its weight or when there are people on it, climbing up and down. There is also the craftsmanship of the handrail and the curved wall.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0vq1ekvxegy1ck25vza.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0vq1ekvxegy1ck25vza.png" alt="A curved staircase in a home, with a railing on the right of the stairs and a white partitioning wall on the left" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Source: &lt;a href="https://designer.microsoft.com"&gt;Microsoft Designer&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Why does this craftsmanship strike us or cause us to take notice? Is it because we can see the care taken in creating the stairs? Or maybe we can see that a lot of skill went into it? Or perhaps it's because the knowledge of physics has been used to make it appear that it defies gravity?&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Craftsmanship?
&lt;/h2&gt;

&lt;p&gt;From &lt;a href="https://www.collinsdictionary.com/dictionary/english/craftsmanship"&gt;Collins dictionary&lt;/a&gt;, we can see the definition is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Craftsmanship is the quality that something has when it is beautiful and has been very carefully made.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What Is Software Craftsmanship?
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://manifesto.softwarecraftsmanship.org"&gt;Manifesto for Software Craftsmanship&lt;/a&gt; describes it as follows:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not only working software,&lt;br&gt;
but also &lt;strong&gt;well-crafted software&lt;/strong&gt;.&lt;br&gt;
Not only responding to change,&lt;br&gt;
but also &lt;strong&gt;steadily adding value&lt;/strong&gt;.&lt;br&gt;
Not only individuals and interactions,&lt;br&gt;
but also &lt;strong&gt;a community of professionals&lt;/strong&gt;.&lt;br&gt;
Not only customer collaboration,&lt;br&gt;
but also &lt;strong&gt;productive partnerships&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If we simplify it, a software craftsperson cares about all aspects of their work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Separates a Software Developer From a Software Craftsperson?
&lt;/h2&gt;

&lt;p&gt;While software developers are primarily concerned with the code they write, software craftspeople take a broader approach. They manage the code, its maintainability, deployability, and application monitoring. This results in robust applications that meet user needs and bring joy to users. Software craftspeople continually hone their skills to create better applications that perform well in production without constant supervision. Quality applications are made through thorough testing and proactive monitoring that alerts the team to potential issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Choose to Embark on the Path of a Software Craftsperson?
&lt;/h2&gt;

&lt;p&gt;For anyone who connects with the principles of software craftsmanship - well-crafted software, steadily adding value, being part of a community, and having productive partnerships with their users - the path of software craftsperson is a good fit. It's a journey where we continually learn the craft of building software in an evolving landscape. As software craftspeople, we're not happy just throwing things out the door but instead focusing on quality and stability. We also want to build up a community of people who can create high-quality software so that we all can learn from each other and build on what others are learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Did I Make the Transition to Software Craftsperson?
&lt;/h2&gt;

&lt;p&gt;Different people have different journeys, motivations, and experiences regarding craftsmanship. Let me tell you my story. I had worked in software development for over ten years when I joined a &lt;a href="http://swcraftsmanshipdojo.com"&gt;software craftsmanship dojo&lt;/a&gt;. At the start, I didn't understand the impact that the dojo would have. I thought I was only there to learn Test Driven Development (TDD). Previously, I had learned TDD by participating in code retreats. Still, I needed help incorporating the new working method into day-to-day coding outside of fixing defects or working on straightforward features. The dojo allowed me to learn hands-on each week, developing the skills that drive my development through testing. This mindset progressed to the point where I now find it hard to think about developing without using TDD.&lt;/p&gt;

&lt;p&gt;The move to software craftsmanship made sense as a path for my career since I had worked on many projects where we were fighting the storm of trying to develop the application, dealing with production issues, and managing our technical debt. This storm led me to burnout and disillusionment in the software developer career. Having an opportunity in the weekly two-hour dojo to learn new skills and have hands-on experience meant that it was two hours that I looked forward to the most in the week.&lt;/p&gt;

&lt;p&gt;Outside the dojo, I practice a daily coding exercise, use what I learned in my work, and consider new ways of doing things. This practice has led me to develop skills to quickly deploy new, well-tested applications with testing, monitoring, and scanning toolchains, improving my &lt;a href="https://scan.devopsagileskills.org"&gt;DORA&lt;/a&gt; and &lt;a href="https://scan.devopsagileskills.org"&gt;DASA&lt;/a&gt; scores.&lt;/p&gt;

&lt;h2&gt;
  
  
  Growth Mindset
&lt;/h2&gt;

&lt;p&gt;Moving to become a software craftsperson will mean that we can see that there are ways that we can grow. Rather than seeing our skills as something that can't be changed, we realise we can improve incrementally over time. So, rather than having a fixed mindset where we think our skills limit our growth, we have a growth mindset. Referring to the &lt;a href="https://dev.to/gearoidotreasaigh/building-elite-teams-starts-with-habits-4a6k"&gt;previous post&lt;/a&gt;, building habits and working on getting 1% better is fundamental to creating a growth mindset. This growth mindset doesn't just stop with us; it should also include growing the people around us. Having a growth mindset is vital to building a community of software craftspeople.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmarking Our Skills
&lt;/h2&gt;

&lt;p&gt;To understand where we are with our software craftsmanship skills, we can use the &lt;a href="https://scan.devopsagileskills.org"&gt;DevOps Agile Skills Association (DASA) DevOps quick scan&lt;/a&gt; to know where we are with our skill levels. Then, we can work on improving the areas that need addressing. The quick scan looks at 12 different areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business Value Optimisation&lt;/li&gt;
&lt;li&gt;Business Analysis&lt;/li&gt;
&lt;li&gt;Architecture and Design&lt;/li&gt;
&lt;li&gt;Test Specification&lt;/li&gt;
&lt;li&gt;Programming&lt;/li&gt;
&lt;li&gt;Continuous Delivery&lt;/li&gt;
&lt;li&gt;Infrastructure Engineering&lt;/li&gt;
&lt;li&gt;Security, Risk, Compliance&lt;/li&gt;
&lt;li&gt;Courage&lt;/li&gt;
&lt;li&gt;Team Building&lt;/li&gt;
&lt;li&gt;DevOps Leadership&lt;/li&gt;
&lt;li&gt;Continuous Improvement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each area will receive a score from one (novice) to five (master). The report will help us understand what is required at the next level and how to improve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Methodology for Developing Quality Cloud Applications
&lt;/h2&gt;

&lt;p&gt;A methodology called the &lt;a href="https://12factor.net"&gt;twelve-factor app&lt;/a&gt; is used to build software-as-a-service applications that can scale without significant changes to tooling, architecture, or development practices. The created app uses declarative formats for setup automation, has a clean contract with the underlying operating system, and minimises divergence between development and production. We can apply the methodology to apps in any programming language and can use any combination of backend services. We can build the best software-as-service application possible by following the twelve factors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started on Our Journey as Software Craftspeople
&lt;/h2&gt;

&lt;p&gt;Understanding more about software craftsmanship can always be helpful. There is a link to further reading on the &lt;a href="https://manifesto.softwarecraftsmanship.org"&gt;Manifesto for Software Craftsmanship&lt;/a&gt;. There you will see, among others:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Apprenticeship-Patterns-Guidance-Aspiring-Craftsman/dp/0596518382"&gt;Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and  Adewale Oshineye&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862"&gt;Software Craftsmanship by Pete McBreen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Pragmatic-Programmer-journey-mastery-Anniversary/dp/0135957052"&gt;The Pragmatic Programmer by David Thomas and Andrew Hunt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A title missing from that list is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Software-Craftsman-Professionalism-Pragmatism-Robert/dp/0134052501"&gt;The Software Craftsman by Sandro Mancuso&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These titles help us further understand software craftsmanship and what we must look at in our journey. We should improve ourselves and those around us to build well-crafted software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Changing our identity from a developer to a software craftsperson leads us to build well-crafted applications. The key to the change is treating it as a journey, and as with any journey, we can take many different routes. We've talked about some of the resources that might be useful, and we can use the resources that entice us and keep us going along the journey. Transforming 1% daily will mean we will have significantly impacted how we work for a year and beyond.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Craftsmanship Definition:  &lt;a href="https://www.collinsdictionary.com/dictionary/english/craftsmanship"&gt;https://www.collinsdictionary.com/dictionary/english/craftsmanship&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Manifesto for Software Craftsmanship:  &lt;a href="https://manifesto.softwarecraftsmanship.org"&gt;https://manifesto.softwarecraftsmanship.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;DASA Quick Scan:  &lt;a href="https://scan.devopsagileskills.org"&gt;https://scan.devopsagileskills.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;BriX Software Craftsmanship Dojo:  &lt;a href="https://swcraftsmanshipdojo.com"&gt;https://swcraftsmanshipdojo.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;DORA Quick Check:  &lt;a href="https://dora.dev/quickcheck"&gt;https://dora.dev/quickcheck&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Twelve-Factor App:  &lt;a href="https://12factor.net"&gt;https://12factor.net&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman by Dave Hoover and Adewale Oshineye:  &lt;a href="https://www.amazon.com/Apprenticeship-Patterns-Guidance-Aspiring-Craftsman/dp/0596518382"&gt;https://www.amazon.com/Apprenticeship-Patterns-Guidance-Aspiring-Craftsman/dp/0596518382&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Software Craftsmanship by Pete McBreen:  &lt;a href="https://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862"&gt;https://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Pragmatic Programmer by David Thomas and Andrew Hunt:  &lt;a href="https://www.amazon.com/Pragmatic-Programmer-journey-mastery-Anniversary/dp/0135957052"&gt;https://www.amazon.com/Pragmatic-Programmer-journey-mastery-Anniversary/dp/0135957052&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Software Craftsman by Sandro Mancuso:  &lt;a href="https://www.amazon.com/Software-Craftsman-Professionalism-Pragmatism-Robert/dp/0134052501"&gt;https://www.amazon.com/Software-Craftsman-Professionalism-Pragmatism-Robert/dp/0134052501&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;The title image is from &lt;a href="https://beta.dreamstudio.ai/generate"&gt;Dreamstudio AI&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>craftsmanship</category>
      <category>softwaredevelopment</category>
      <category>softwarecraftsmanship</category>
    </item>
    <item>
      <title>Building Elite Teams Starts With Habits</title>
      <dc:creator>Gearoid O'Treasaigh</dc:creator>
      <pubDate>Wed, 17 Apr 2024 09:10:00 +0000</pubDate>
      <link>https://dev.to/gearoidotreasaigh/building-elite-teams-starts-with-habits-4a6k</link>
      <guid>https://dev.to/gearoidotreasaigh/building-elite-teams-starts-with-habits-4a6k</guid>
      <description>&lt;p&gt;Going from a mediocre team to an elite team can seem daunting, especially when we need to figure out where to start. The DevOps Research and Assessment (DORA) can be our north star, helping us build the habits and practices we need to be elite. We'll look at DORA, the challenges of building habits, and how to form habits that stick.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is DORA?
&lt;/h2&gt;

&lt;p&gt;The DevOps Research and Assessment (DORA) &lt;a href="https://cloud.google.com/devops/state-of-devops"&gt;report&lt;/a&gt; focuses on four key areas to measure elite teams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lead time:&lt;/strong&gt; How long does it take from code committed to running in production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy frequency:&lt;/strong&gt; How often does our organisation deploy to production&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change fail percentage:&lt;/strong&gt; How often do we need to rollback, patch, hotfix, or fix forward after a change&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Failed deployment recovery time:&lt;/strong&gt; How long does it generally take to recover service&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The challenge here is going from knowing about those four areas that need to be worked on so that we go from being a mediocre team to an elite squad scoring a ten on the &lt;a href="https://dora.dev/quickcheck/"&gt;DORA quick check&lt;/a&gt;. The four measurements of an elite team are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lead time is less than one hour&lt;/li&gt;
&lt;li&gt;Deploy frequency is on-demand (multiple deploys per day)&lt;/li&gt;
&lt;li&gt;The change fail percentage is ideally 0%&lt;/li&gt;
&lt;li&gt;Failed deployment recovery time is less than one hour&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To see where our team are currently, try the &lt;a href="https://dora.dev/quickcheck/"&gt;DORA quick check&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This blog will focus on the tools, technologies, practices, culture, and philosophies that will help teams become elite. Improvements in our work take time since we need to break old habits that don't serve us well and build new ones. This blog will keep that in mind as we move through different topics. Each post will have an invitation to try out what we learn. If there are any questions or issues that need to be covered, make use of the comments section to submit the question.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenges of Forming New Habits
&lt;/h2&gt;

&lt;p&gt;We've all seen New Year's Resolutions and possibly have had some of our own. According to the Forbes report in 2024, 53% of those surveyed had given up on their New Year's Resolutions by the end of March. For many people, sticking to a new resolution or goal is challenging. There is now a day known as Ditch New Year's Resolution Day, which during  2024 fell on January 17th. While the media paints a picture of a significant stumbling block, statistics show it's less troublesome than perceived. We can see the reality of the quit rate in the chart below:&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://datawrapper.dwcdn.net/03sJ3/3/" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--TElZ7rwV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://datawrapper.dwcdn.net/03sJ3/plain-s.png%3Fv%3D3" height="419" class="m-0" width="800"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://datawrapper.dwcdn.net/03sJ3/3/" rel="noopener noreferrer" class="c-link"&gt;
          
        &lt;/a&gt;
      &lt;/h2&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
        datawrapper.dwcdn.net
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Why Do People Fail in Their New Resolutions/Habits?
&lt;/h2&gt;

&lt;p&gt;In an &lt;a href="https://jamesclear.com/habits-fail"&gt;article&lt;/a&gt; by James Clear, he outlines five reasons our new habits might fail:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Trying to change more than one thing at a time&lt;/li&gt;
&lt;li&gt;Setting big goals without breaking them down into smaller steps&lt;/li&gt;
&lt;li&gt;Seeking a result, not the ritual&lt;/li&gt;
&lt;li&gt;We have not changed the environment in which we perform our good habits, so we quickly revert to our bad habits&lt;/li&gt;
&lt;li&gt;Assuming small changes don't add up&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;However, there are ways to set ourselves up for success. In the book &lt;a href="https://jamesclear.com/atomic-habits"&gt;Atomic Habits&lt;/a&gt;, James talks about &lt;a href="https://jamesclear.com/atomic-habits-summary"&gt;three key lessons&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Small habits make a big difference.&lt;/li&gt;
&lt;li&gt;Forget about setting goals. Instead, focus on the system.&lt;/li&gt;
&lt;li&gt;Build identity-based habits.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Impact of Habits
&lt;/h2&gt;

&lt;p&gt;Building identity-based habits means, for example, instead of saying I go running, we say we're runners, or instead of saying we paint, we say we're painters. There is a subtle difference in the wording, but if we start to think we're runners, that can lead to thinking, what does a runner do? It could mean changing the food we eat, how often we train, when we train, and the goals we set for ourselves.&lt;/p&gt;

&lt;p&gt;If we focus on getting &lt;a href="https://jamesclear.com/continuous-improvement"&gt;1% better every day in one year, we'll end up being 37 times better than when we started&lt;/a&gt;. It means that anything we set our mind to can profoundly impact us. It may not be noticeable at first, but as the changes compound over time, we will notice that we're a different person than when we started. Like a cliff being eroded over time by the waves, at the start, we overlook the impact each wave has, but over time, we see how the cliff face changes in its shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do I Go About Creating and Maintaining Habits?
&lt;/h2&gt;

&lt;p&gt;In the &lt;a href="https://jamesclear.com/atomic-habits/cheatsheet"&gt;Habits Cheatsheet&lt;/a&gt;, James Clear talks about the four laws to create a good habit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The 1st law (&lt;em&gt;Cue&lt;/em&gt;): Make it obvious&lt;/li&gt;
&lt;li&gt;The 2nd law (&lt;em&gt;Craving&lt;/em&gt;): Make it attractive&lt;/li&gt;
&lt;li&gt;The 3rd law (&lt;em&gt;Response&lt;/em&gt;): Make it easy&lt;/li&gt;
&lt;li&gt;The 4th law (&lt;em&gt;Reward&lt;/em&gt;): Make it satisfying&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As an example, let's say we've decided that we want to drink more water every day. We could make it obvious by placing a water bottle on our desk so that we can't miss it. Having a nice bottle or putting some lemon or mint in the water would be attractive. To make it easy, we fill the water bottle the night before so we don't have to think about it in the morning. Then, to make it satisfying, we could have a calendar above our desk where we put a sticker to mark each day that we've managed to empty our water bottle.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do I Beat My Old Bad Habits?
&lt;/h2&gt;

&lt;p&gt;Again, in the &lt;a href="https://jamesclear.com/atomic-habits/cheatsheet"&gt;Habits Cheatsheet&lt;/a&gt;, there are the inverse laws for avoiding your bad habits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inversion of the 1st law (&lt;em&gt;Cue&lt;/em&gt;): Make it invisible&lt;/li&gt;
&lt;li&gt;Inversion of the 2nd law (&lt;em&gt;Craving&lt;/em&gt;): Make it unattractive&lt;/li&gt;
&lt;li&gt;Inversion of the 3rd law (&lt;em&gt;Response&lt;/em&gt;): Make it difficult&lt;/li&gt;
&lt;li&gt;Inversion of the 4th law (&lt;em&gt;Reward&lt;/em&gt;): Make it unsatisfying&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's say we want to watch less TV. We could make it invisible by placing the TV out of view, moving it to another room or inside a cupboard. We might unsubscribe to our streaming accounts and TV subscriptions to make it unattractive. To make it difficult, we place the TV's power cord or remote control in another room. Finally, to make it unsatisfying, we could have an accountability partner that we check in with, with whom we will have to confess that we ended up watching TV.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Next Steps
&lt;/h2&gt;

&lt;p&gt;As we reflect on our DORA scores, we have an opportunity to identify areas where we can improve by forming new habits. The DORA quick check provides guidance on key areas we can work on to improve our score. In our team, we can decide what to work on to raise our score, moving us from developers to software craftspeople. Then, we can form habits to help us make lasting changes. &lt;/p&gt;

&lt;p&gt;For example, if we identify a need to reduce lead time, we may realise our review process is slowing us down. When we explore it, we recognise we need to set aside time to review the code. We could take a &lt;a href="https://jamesclear.com/habit-stacking"&gt;habit-stacking&lt;/a&gt; approach. For example, when we open our laptops in the morning (our current habit), we first review all of the pull requests that are pending review for us. Another could be first to review pull requests after our lunch break.&lt;/p&gt;

&lt;p&gt;To make it attractive, we might realise that the pull requests lack enough information, so we add a pull request template so all the information is there. Then, to make it easy, we could have a simple way for people to launch the application and see the change. To make it satisfying, we could recognise a person each week who does a great job of meaningful reviews and helps speed up the delivery of features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We've explored the DORA report and how it measures teams' ability to deliver software. We've examined how habits are the foundation of meeting our goals/resolutions, looking at good and bad habits. Our challenge is to move from software developers to software craftspeople, using our daily habits to help us transform.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;State of DevOps Report: &lt;a href="https://cloud.google.com/devops/state-of-devops"&gt;https://cloud.google.com/devops/state-of-devops&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;DORA quick check assessment: &lt;a href="https://dora.dev/quickcheck/"&gt;https://dora.dev/quickcheck/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Forbes article on New Year's Resolutions Statistics: &lt;a href="https://www.forbes.com/health/mind/new-years-resolutions-statistics/"&gt;https://www.forbes.com/health/mind/new-years-resolutions-statistics/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;5 Common Mistakes That Cause New Habits to Fail: &lt;a href="https://jamesclear.com/habits-fail"&gt;https://jamesclear.com/habits-fail&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Atomic Habits book by James Clear: &lt;a href="https://jamesclear.com/atomic-habits"&gt;https://jamesclear.com/atomic-habits&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Summary of the Atomic Habits book by James Clear: &lt;a href="https://jamesclear.com/atomic-habits-summary"&gt;https://jamesclear.com/atomic-habits-summary&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Continuous Improvement -  How It Works and How to Master It: &lt;a href="https://jamesclear.com/continuous-improvement"&gt;https://jamesclear.com/continuous-improvement&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Habits cheatsheets: &lt;a href="https://jamesclear.com/atomic-habits/cheatsheet"&gt;https://jamesclear.com/atomic-habits/cheatsheet&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Habit stacking: &lt;a href="https://jamesclear.com/habit-stacking"&gt;https://jamesclear.com/habit-stacking&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;The article image was generated using Microsoft Designer.&lt;/p&gt;

</description>
      <category>habits</category>
      <category>agile</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Introduction to Pull Request Stacking</title>
      <dc:creator>Gearoid O'Treasaigh</dc:creator>
      <pubDate>Wed, 10 Apr 2024 09:20:00 +0000</pubDate>
      <link>https://dev.to/gearoidotreasaigh/pull-request-stacking-3n88</link>
      <guid>https://dev.to/gearoidotreasaigh/pull-request-stacking-3n88</guid>
      <description>&lt;p&gt;Pull Request (PR) stacking is another name for stacked diffs, a concept that has existed for several years. We’ll go through what it is, the tools you can use and where PR stacking may be of benefit.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is PR Stacking?
&lt;/h3&gt;

&lt;p&gt;In traditional Pull Requests (PRs), the developer makes all of the changes in one or more commits and then opens the PR to merge the change back into the main branch. The approach in PR stacking instead is to separate the functionality to be delivered into pieces. Let’s say we’re working on a new POST request API. 1️⃣ The first PR could be the happy path where what we submit works okay, and that would be opened against the main branch. 2️⃣ The next piece of work could be the error scenario, when the payload is too large, and that PR would be created to merge into the branch from the first PR. 3️⃣ Another PR could be added for the scenario when the data being sent is not in a format the API can understand, and would be stacked on top of the second PR.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5c46k7x77n8p4fw0z0iw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5c46k7x77n8p4fw0z0iw.png" alt="Diagram of what the PRs would look like for a feature" width="783" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A PR stack moves you away from having to deliver your big change in one go with a long review but rather break it down into pieces so they can be reviewed quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the benefits of PR Stacking?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;easier to review — the smaller changes make it easier for the reviewer to understand what is happening and they get to know the code better.&lt;/li&gt;
&lt;li&gt;catch problems — with smaller PRs it is easier to see when a bug is introduced both for the author and reviewer.&lt;/li&gt;
&lt;li&gt;less waiting — the reviews are quicker since they are simple and developers can continue developing upon their changes while waiting for reviews.&lt;/li&gt;
&lt;li&gt;improved communication — using stacked PRs means there is a lot more communication about the code. This is very useful when multiple developers are working together on one feature.&lt;/li&gt;
&lt;li&gt;clearer code changes — since the PRs are isolated to a single change it’s clearer what each change does and if coupled with good PR descriptions, it can educate the reviewers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What tool should I use for PR Stacking?
&lt;/h3&gt;

&lt;p&gt;You could perform PR stacking with the git command but it doesn’t offer any of the features of a dedicated tool such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;applying the changes from the current PR to all of the PRs that are stacked on it by doing an automatic rebase.&lt;/li&gt;
&lt;li&gt;annotating your PR with the details of the entire PR stack.&lt;/li&gt;
&lt;li&gt;rebasing and restacking PRs when you merge or close a downstream PR.
Below you can see some available tools, as of April 2024.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dedicated tools&lt;/th&gt;
&lt;th&gt;Tools with additional features&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/ezyang/ghstack"&gt;ghstack&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.git-tower.com/"&gt;Git Tower&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/gitext-rs/git-stack"&gt;git-stack&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://sapling-scm.com/docs/introduction/getting-started/"&gt;Sapling&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://graphite.dev/"&gt;Graphite&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://getcord.github.io/spr/"&gt;SPR&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Using PR stacking in a community project
&lt;/h3&gt;

&lt;p&gt;A challenge in community (open source) projects is that the dependent libraries can have new security vulnerabilities or coding practices have changed a lot. Robert C Martin has a quote “Always leave the code you’re editing a little better than you found it”. When you want to update a feature in the project, you want to leave it better than when you came to it. Rather than confusing the reviewer with what is added and refactored, you could perform your refactoring in the first PR to make the code clearer. In the next PR, you could update the tests and functionality. Another PR could be stacked upon that to fix up library dependencies that are out of date.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvky6t98j3x5dhcv3paji.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvky6t98j3x5dhcv3paji.png" alt="Diagram of stacked PRs for an opensource project" width="783" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The benefit to the reviewers is that they can see the changes and why with each PR, an important aspect in community projects which helps with communication. This leads to faster reviews and the opportunity to continue building the functionality while feedback is gathered.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the next steps?
&lt;/h3&gt;

&lt;p&gt;Now that you’ve learned about PR stacking, experiment with the different PR stacking tools. Look for opportunities to use the tools with your next feature or open-source submission. As with any experiment, take note of the impact that PR stacking and the tool has on your work.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
