CINXE.COM

<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="generator" content="Gatsby 4.24.4"/><meta data-react-helmet="true" name="theme-color" content="#fff"/><meta data-react-helmet="true" name="description" content="This is advice that I have given to many novice developers, and that I would like to have been able to give to myself when I just getting started (though some of the advice refers to resources that didn&#x27;t exist then - alas). If you find it useful, please consider sharing it with someone you know who might also benefit from it."/><meta data-react-helmet="true" name="image" content="https://ardalis.com/static/4fb4ac75fbd03f00f42e4ac3586c8265/c3638/NotSureIfGoodProgrammer.jpg"/><meta data-react-helmet="true" property="og:type" content="blog"/><meta data-react-helmet="true" property="og:image:alt" content="Working Through Roadblocks - A Guide for New Programmers"/><meta data-react-helmet="true" property="og:locale" content="en_US"/><meta data-react-helmet="true" property="og:image" content="https://ardalis.com/static/4fb4ac75fbd03f00f42e4ac3586c8265/c3638/NotSureIfGoodProgrammer.jpg"/><meta data-react-helmet="true" property="og:title" content="Working Through Roadblocks - A Guide for New Programmers"/><meta data-react-helmet="true" property="og:description" content="This is advice that I have given to many novice developers, and that I would like to have been able to give to myself when I just getting started (though some of the advice refers to resources that didn&#x27;t exist then - alas). If you find it useful, please consider sharing it with someone you know who might also benefit from it."/><meta data-react-helmet="true" property="og:url" content="https://ardalis.com/working-through-roadblocks-a-guide-for-new-programmers/"/><meta data-react-helmet="true" property="og:site_name" content="https://ardalis.com"/><meta data-react-helmet="true" property="article:author" content="Ardalis"/><meta data-react-helmet="true" name="twitter:title" content="Working Through Roadblocks - A Guide for New Programmers"/><meta data-react-helmet="true" name="twitter:url" content="https://ardalis.com/working-through-roadblocks-a-guide-for-new-programmers/"/><meta data-react-helmet="true" name="twitter:description" content="This is advice that I have given to many novice developers, and that I would like to have been able to give to myself when I just getting started (though some of the advice refers to resources that didn&#x27;t exist then - alas). If you find it useful, please consider sharing it with someone you know who might also benefit from it."/><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"/><meta data-react-helmet="true" name="twitter:image" content="https://ardalis.com/static/4fb4ac75fbd03f00f42e4ac3586c8265/c3638/NotSureIfGoodProgrammer.jpg"/><style data-href="/styles.eb8fec05cba5de708da7.css" data-identity="gatsby-global-css">@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400);pre[class*=language-].line-numbers{counter-reset:linenumber;padding-left:3.8em;position:relative}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{border-right:1px solid #999;font-size:100%;left:-3.8em;letter-spacing:-1px;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;user-select:none;width:3em}.line-numbers-rows>span{counter-increment:linenumber;display:block}.line-numbers-rows>span:before{color:#999;content:counter(linenumber);display:block;padding-right:.8em;text-align:right}.command-line-prompt{border-right:1px solid #999;display:block;float:left;font-size:100%;letter-spacing:-1px;margin-right:1em;pointer-events:none;text-align:right;-webkit-user-select:none;user-select:none}.command-line-prompt>span:before{content:" ";display:block;opacity:.7;padding-right:.8em}.command-line-prompt>span[data-user]:before{content:"[" attr(data-user) "@" attr(data-host) "] $"}.command-line-prompt>span[data-user=root]:before{content:"[" attr(data-user) "@" attr(data-host) "] #"}.command-line-prompt>span[data-prompt]:before{content:attr(data-prompt)}.command-line-prompt>span[data-continuation-prompt]:before{content:attr(data-continuation-prompt)}.command-line span.token.output{opacity:.7}code[class*=language-],pre[class*=language-]{word-wrap:normal;background:none;color:#f8f8f2;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;line-height:1.5;text-shadow:0 1px rgba(0,0,0,.3)}pre[class*=language-]{border-radius:.3em;padding:1em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.entity{cursor:help}.badgescard,.firstinfo{align-items:center;display:flex;justify-content:center}.container{background-color:#fff;z-index:10}.content-card{-webkit-animation:animatop .9s cubic-bezier(.425,1.14,.47,1.125) forwards;animation:animatop .9s cubic-bezier(.425,1.14,.47,1.125) forwards;position:relative}.card{border-radius:3px;box-shadow:0 10px 20px rgba(0,0,0,.2);font-size:18px;min-height:100px;overflow:hidden;padding:20px;width:700px}.card:after{-webkit-animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;background:#3571b8;content:"";display:block;height:300px;position:absolute;width:190px}.card-sidebar{background-color:#fff;border-radius:3px;font-size:15px;left:0;margin-top:-4%;min-height:100px;overflow:hidden;padding:10px;position:relative;width:400px!important}.card-sidebar:after{-webkit-animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;background:#3571b8;content:"";display:block;height:300px;position:absolute;width:190px}.tile.is-child{width:100%}.tile:not(.is-child){display:flex;width:100%}@media only screen and (max-width:1024px){.card{display:none}.card-sidebar,.recent-post{width:100%!important}.twitter-timeline{margin-left:2%!important;width:600px!important}.blog-list-item .featured-thumbnail{margin:0 0 1em;text-align:center;width:100%}.blog-list-item header{display:block;width:800px!important}}@media only screen and (max-width:480px){.card{display:none}.card-sidebar{background-color:#fff;border-radius:3px;font-size:12px;left:0;min-height:180px;overflow:hidden;padding:0;position:relative;width:340px!important}.card-sidebar:after{-webkit-animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;animation:rotatemagic .75s cubic-bezier(.425,1.04,.47,1.105) 1s both;background:#3571b8;content:"";display:block;height:240px;position:absolute;width:150px}.sidebar{left:50%!important;margin:0!important;visibility:collapse;width:380px!important}.tile:not(.is-child){display:block;width:100%}.recent-post{width:320px!important}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding-bottom:0!important;padding-left:0!important;padding-right:0!important;padding-top:0}.MuiButton-root{margin-left:-5%!important;margin-top:5%!important}.MuiOutlinedInput-input{padding:14.5px 10px!important;width:280px!important}}@media only screen and (min-width:320px){.MuiOutlinedInput-input{padding:14.5px 10px!important;width:250px!important}}.sidebar{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(43,37,35,.1),0 0 0 1px rgba(43,37,35,.02);color:#4a4a4a;display:block;left:50%;padding-top:1.25rem;position:absolute;-webkit-transform:translate(-50%);transform:translate(-50%);z-index:0}.sidebar,ul li:before{font-weight:400;line-height:20px}.sidebar,h2,ul li:before{float:none;list-style:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIlJREFUeNpiYCATMKILmBbuMABSAUA84XS/xwdcGpmwiO0H4noQDTREgBSNMGCATzM2jYXEaGbEZhpQYQKQmo8kdAGIHZH9jNWpQAULgFQims3rifUjyBaSQhUWJaDQhfntA5rfccYjuiaQ/y4QE494NRHyI05NIMCCRcwRmuQWADU9YKA2AAgwANXjLnb5SuGCAAAAAElFTkSuQmCC);padding-right:.5em;position:relative;text-decoration:none}.sidebar,h2{font-weight:700;line-height:30px}.twitter-timeline{margin-left:2%!important}.firstinfo{flex-direction:row;padding:0;position:relative;z-index:2}.firstinfo img{border-radius:50%;height:120px;width:120px}.firstinfo .profileinfo{padding:0 10px 0 0}.firstinfo .profileinfo h1{font-size:1.8em}.firstinfo .profileinfo h3{color:#3571b8;font-size:1.2em;font-style:italic}.firstinfo .profileinfo p.bio{color:#5a5a5a;font-style:normal;line-height:1.2;padding:0}@-webkit-keyframes animatop{0%{bottom:-500px;opacity:0}to{bottom:0;opacity:1}}@keyframes animatop{0%{bottom:-500px;opacity:0}to{bottom:0;opacity:1}}@-webkit-keyframes animainfos{0%{bottom:10px}to{bottom:-42px}}@keyframes animainfos{0%{bottom:10px}to{bottom:-42px}}@-webkit-keyframes rotatemagic{0%{left:-253px;opacity:0;top:-24px;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{left:-78px;top:-24px;-webkit-transform:rotate(-30deg);transform:rotate(-30deg)}}@keyframes rotatemagic{0%{left:-253px;opacity:0;top:-24px;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{left:-78px;top:-24px;-webkit-transform:rotate(-30deg);transform:rotate(-30deg)}}.message-body{border-color:#5bc0de!important;border-radius:4px!important;border-style:solid;border-width:0 0 0 6px!important;font-size:1.7em}cite{color:#5bc0de!important}form input{border:2px;border-radius:6px;box-shadow:0 4px 1px rgba(0,0,0,.1);display:block;font-family:Merriweather,sans-serif;font-size:1.5em;margin-top:.5em;outline:0;padding:.7em;resize:none;width:60%}.form-control input:focus{background-color:#ffdae8}.section{padding:.8rem 1.5rem!important}.box{box-shadow:none!important}.navbar{font-size:1.2em;font-variant:unset;font-weight:600;min-height:5em}.recent-post{align-items:center;display:block;font-size:1em;margin-left:13px;width:340px}.recent-post,ul li:before{float:none;font-weight:400;left:3%;line-height:30px;list-style:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIlJREFUeNpiYCATMKILmBbuMABSAUA84XS/xwdcGpmwiO0H4noQDTREgBSNMGCATzM2jYXEaGbEZhpQYQKQmo8kdAGIHZH9jNWpQAULgFQims3rifUjyBaSQhUWJaDQhfntA5rfccYjuiaQ/y4QE494NRHyI05NIMCCRcwRmuQWADU9YKA2AAgwANXjLnb5SuGCAAAAAElFTkSuQmCC);padding-right:.5em;position:relative;text-decoration:none}@media print,screen and (min-width:769px){.column.is-12{flex:none;width:100%}}.subtitle{font-size:1rem!important;padding-top:4px}@media screen and (max-width:768px){.blog-list-item .featured-thumbnail{margin:0 0 1em;max-width:100%;text-align:center}.blog-list-item header{display:block;width:360px!important}}@media screen and (min-width:1024px){.navbar{min-height:4.25rem!important}}pre{font-family:Courier\ 10 Pitch,Courier,monospace;white-space:pre}code,pre{font-size:95%;line-height:140%;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-o-pre-wrap}code{background:#faf8f0;font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace}#content code{border:1px solid #bebab0;display:block;padding:.5em 1em}body{margin:0;overflow:hidden;padding:0;width:100vw}.content .taglist{line-height:.5px!important;padding:2px!important}.MuiButton-root{height:55px!important;left:5%!important}.MuiOutlinedInput-input{width:300px!important}.MuiButton-containedPrimary{background-color:#3571b8!important;color:#fff}.form{left:55%!important;padding:10px!important}.content .catlist{align-items:center;display:block;flex-wrap:wrap;justify-content:left;list-style:none;margin:1.5rem 1.5rem 0 0;word-break:break-word!important}.gatsby-highlight-code-line{background-color:#feb;border-left:.25em solid #f99;display:block;margin-left:-1em;margin-right:-1em;padding-left:.75em;padding-right:1em}.gatsby-highlight pre[class*=language-].line-numbers{overflow:initial;padding:0 0 0 2.8em}.googletextbox{font-size:1em;padding:.1em}code[class*=language-],pre[class*=language-]{color:#9efeff;direction:ltr;font-family:Operator Mono,Fira Code,Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:17px;font-weight:400;-webkit-hyphens:none;hyphens:none;letter-spacing:.5px;line-height:25px;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px #222245;white-space:pre;word-break:normal;word-spacing:normal}code[class*=language-] ::-moz-selection,code[class*=language-] ::selection,code[class*=language-]::-moz-selection,code[class*=language-]::selection,pre[class*=language-] ::-moz-selection,pre[class*=language-] ::selection,pre[class*=language-]::-moz-selection,pre[class*=language-]::selection{background:#a599e9;color:inherit}pre[class*=language-]{margin:.5em 0;overflow:auto;padding:2em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#1e1e3f}:not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em}.token{font-weight:400}.token.cdata,.token.comment,.token.prolog{color:#b362ff}.token.atrule,.token.delimiter,.token.important,.token.keyword,.token.selector{color:#ff9d00}.token.attr-name,.token.operator{color:#ffb454}.token.punctuation{color:#fff}.token.boolean{color:#ff628c}.token.builtin,.token.doctype,.token.tag,.token.tag .punctuation{color:#ff9d00}.token.entity,.token.symbol{color:#6897bb}.token.constant,.token.number,.token.property,.token.variable{color:#ff628c}.token.char,.token.string{color:#a5ff90}.token.attr-value,.token.attr-value .punctuation{color:#a5c261}.token.attr-value .punctuation:first-child{color:#a9b7c6}.token.url{color:#287bde;text-decoration:underline}.token.function{color:#fad000}.token.regex{background:#364135}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.inserted{background:#0f0}.token.deleted{background:#ff000d}code.language-css .token.property,code.language-css .token.property+.token.punctuation{color:#a9b7c6}code.language-css .token.id,code.language-css .token.selector>.token.attribute,code.language-css .token.selector>.token.class,code.language-css .token.selector>.token.pseudo-class,code.language-css .token.selector>.token.pseudo-element{color:#ffc66d}.token.class-name{color:#fb94ff}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{background:none}pre .line-highlight,pre .line-highlight.line-highlight,pre>code.line-highlight{background:linear-gradient(90deg,rgba(179,98,255,.17),transparent);margin-top:36px}pre .line-highlight:before,pre .line-highlight[data-end]:after,pre>code.line-highlight:before,pre>code.line-highlight[data-end]:after{content:""}pre code{padding-left:0}.navbar .navbar-menu{box-shadow:none!important}.content .taglist{align-items:center;display:flex;flex-wrap:wrap;justify-content:left;list-style:none;margin:1.5rem 1.5rem 0 0}.content .taglist li{margin-bottom:1.5rem;margin-top:0;padding:0 2rem 1rem 0}.full-width-image-container{left:50%;margin:2em -50vw;position:relative;right:50%}.full-width-image,.full-width-image-container{align-items:center;background-position:bottom;background-size:cover;display:flex;height:400px;justify-content:center;width:100vw}.btn{background-color:#fff;border-radius:.25rem;box-shadow:inset 0 0 0 2px #3571b8;color:#000;display:inline-block;font-size:18px;font-size:1rem;font-weight:700;line-height:1.25;padding:12px 16px 10px;text-align:center;text-decoration:none;transition:all .15s ease}.btn:hover{background-color:#3571b8;color:#fff}.margin-top-0{margin-top:0!important}.navbar-item .icon{color:#2b2523}.icon svg{fill:currentColor;height:1.5rem;width:1.5rem}.navbar-brand .navbar-item.logo{padding:0 1rem}footer.footer{background-color:transparent;padding:3rem 0 0}.social{padding:2em}.social a{background-color:#f5f5f5;border-radius:1em;display:inline;height:1em;margin:.5em;padding:.5em .5em .3em;vertical-align:middle;width:1em}.blog-list-item.is-featured{background-color:#2989d879}.blog-list-item header{display:flex;margin-bottom:1em}.blog-list-item .featured-thumbnail{flex-basis:100%;margin:0}/*! bulma.io v0.8.2 | MIT License | github.com/jgthms/bulma */@-webkit-keyframes spinAround{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.button{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.box:not(:last-child),.content:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.subtitle:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.button,.input,.textarea{align-items:center;-moz-appearance:none;-webkit-appearance:none;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding:calc(.5em - 1px) calc(.75em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.input:active,.input:focus,.is-active.button,.is-active.input,.is-active.textarea,.textarea:active,.textarea:focus{outline:none}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */body,h1,h2,h3,h4,html,li,p,textarea,ul{margin:0;padding:0}h1,h2,h3,h4{font-size:100%;font-weight:400}ul{list-style:none}button,input,textarea{margin:0}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}html{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:#fff;font-size:16px;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility}article,footer,header,section{display:block}body,button,input,textarea{font-family:BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif}code{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#333;font-size:1em;font-weight:400;line-height:1.5}a{color:#3273dc;cursor:pointer}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#f14668;font-size:.875em;font-weight:400;padding:.25em .5em}img{height:auto;max-width:100%}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}.is-size-1{font-size:3rem!important}.is-size-2{font-size:2.5rem!important}.is-size-3{font-size:2rem!important}.is-size-4{font-size:1.5rem!important}.is-size-5{font-size:1.25rem!important}@media screen and (max-width:768px){.is-size-3-mobile{font-size:2rem!important}.is-size-5-mobile{font-size:1.25rem!important}}@media print,screen and (min-width:769px){.is-size-2-tablet{font-size:2.5rem!important}.is-size-5-tablet{font-size:1.25rem!important}}@media screen and (min-width:1216px){.is-size-1-widescreen{font-size:3rem!important}.is-size-4-widescreen{font-size:1.5rem!important}}.has-text-centered{text-align:center!important}.has-background-black{background-color:#2b2523!important}.has-text-primary{color:#2b2523!important}a.has-text-primary:focus,a.has-text-primary:hover{color:#0f0d0c!important}.has-text-white-ter{color:#f5f5f5!important}.has-text-weight-semibold{font-weight:600!important}.has-text-weight-bold{font-weight:700!important}.is-block{display:block!important}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(43,37,35,.1),0 0 0 1px rgba(43,37,35,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 .5em 1em -.125em rgba(43,37,35,.1),0 0 0 1px #3273dc}a.box:active{box-shadow:inset 0 1px 2px rgba(43,37,35,.2),0 0 0 1px #3273dc}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding:calc(.5em - 1px) 1em;text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button:hover{border-color:#b5b5b5;color:#363636}.button:focus{border-color:#3273dc;color:#363636}.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-link{background-color:#3273dc;border-color:transparent;color:#fff}.button.is-link:hover{background-color:#276cda}.button.is-link:focus,.button.is-link:hover{border-color:transparent;color:#fff}.button.is-link:focus:not(:active){box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.button.is-link.is-active,.button.is-link:active{background-color:#2366d1;border-color:transparent;color:#fff}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (min-width:1216px){.container{max-width:1152px}}@media screen and (min-width:1408px){.container{max-width:1344px}}.content li+li{margin-top:.25em}.content p:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.icon{align-items:center;display:inline-flex;height:1.5rem;justify-content:center;width:1.5rem}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.notification{background-color:#f5f5f5;border-radius:4px;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code{background:#fff}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-link{background-color:#3273dc;color:#fff}@-webkit-keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{0%{background-position:200% 0}to{background-position:-200% 0}}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body).is-link{background-color:#3273dc;color:#fff}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle span,.title span{font-weight:inherit}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-4{font-size:1.5rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.input,.textarea{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.input::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54,54,54,.3)}.input::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54,54,54,.3)}.input:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input:hover,.textarea:hover{border-color:#b5b5b5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.textarea:active,.textarea:focus{border-color:#3273dc;box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.input,.textarea{box-shadow:inset 0 .0625em .125em rgba(43,37,35,.05);max-width:100%;width:100%}.is-link.input,.is-link.textarea{border-color:#3273dc}.is-link.input:active,.is-link.input:focus,.is-link.is-active.input,.is-link.is-active.textarea,.is-link.textarea:active,.is-link.textarea:focus{box-shadow:0 0 0 .125em rgba(50,115,220,.25)}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.field:not(:last-child){margin-bottom:.75rem}.control{box-sizing:border-box;clear:both;font-size:1rem;text-align:left}.card,.control{position:relative}.card{background-color:#fff;box-shadow:0 .5em 1em -.125em rgba(43,37,35,.1),0 0 0 1px rgba(43,37,35,.02);color:#4a4a4a;max-width:100%}.menu,.message{font-size:1rem}.message{background-color:#f5f5f5;border-radius:4px}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-link{background-color:#eef3fc}.message.is-link .message-body{border-color:#3273dc;color:#2160c4}.message-body{border:solid #dbdbdb;border-radius:4px;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.navbar{background-color:#fff}.navbar{min-height:3.25rem;position:relative;z-index:30}.navbar.is-link{background-color:#3273dc;color:#fff}.navbar.is-link .navbar-brand>.navbar-item{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover{background-color:#2366d1;color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-start>.navbar-item{color:#fff}.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover{background-color:#2366d1;color:#fff}}.navbar>.container{width:100%}.navbar-brand,.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem}.navbar-brand{flex-shrink:0}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;margin-left:auto;position:relative;width:3.25rem}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;-webkit-transform-origin:center;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,-webkit-transform;transition-property:background-color,opacity,transform;transition-property:background-color,opacity,transform,-webkit-transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:first-child{top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:first-child{-webkit-transform:translateY(5px) rotate(45deg);transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:translateY(-5px) rotate(-45deg);transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}a.navbar-item{cursor:pointer}a.navbar-item.is-active,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{background-color:#fafafa;color:#3273dc}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item{align-items:center;display:flex}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(43,37,35,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover{background-color:transparent!important}.navbar-burger{display:none}.navbar-item{align-items:center;display:flex}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-.75rem}a.navbar-item.is-active{color:#2b2523}a.navbar-item.is-active:not(:focus):not(:hover){background-color:transparent}}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}@media print,screen and (min-width:769px){.column.is-offset-1{margin-left:8.33333%}.column.is-4{flex:none;width:33.33333%}.column.is-6{flex:none;width:50%}.column.is-7{flex:none;width:58.33333%}.column.is-10{flex:none;width:83.33333%}.column.is-12{flex:none;width:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:.75rem}.columns.is-multiline{flex-wrap:wrap}@media print,screen and (min-width:769px){.columns:not(.is-desktop){display:flex}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:-webkit-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem!important}@media print,screen and (min-width:769px){.tile:not(.is-child){display:flex}.tile.is-4{flex:none;width:33.33333%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333%}.tile.is-10{flex:none;width:83.33333%}.tile.is-12{flex:none;width:100%}}.section{padding:3rem 1.5rem}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}@media screen and (min-width:769px) and (max-width:1023px){.blog-list-item .featured-thumbnail{flex-basis:50%}}@media screen and (max-width:768px){.blog-list-item header{display:block}.blog-list-item .featured-thumbnail{margin:0 0 1em;max-width:70%;text-align:center}}a{text-decoration:none}</style><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer', 'GTM-NVBMVX8');</script><title data-react-helmet="true">Working Through Roadblocks - A Guide for New Programmers | Blog</title><link data-react-helmet="true" rel="alternate" type="application/rss+xml" title="RSS Feed for Ardalis" href="/rss.xml/"/><link data-react-helmet="true" rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png"/><link data-react-helmet="true" rel="icon" type="image/png" href="/img/favicon-32x32.png" sizes="32x32"/><link data-react-helmet="true" rel="icon" type="image/png" href="/img/favicon-16x16.png" sizes="16x16"/><link data-react-helmet="true" rel="mask-icon" href="/img/safari-pinned-tab.svg" color="#ff4400"/><link rel="sitemap" type="application/xml" href="/sitemap/sitemap-index.xml"/><style id="jss-server-side"></style></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NVBMVX8" height="0" width="0" style="display: none; visibility: hidden" aria-hidden="true"></iframe></noscript><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><div><nav class="navbar is-transparent" role="navigation" aria-label="main-navigation"><div class="container"><div class="navbar-brand"><a class="navbar-item" title="Logo" href="/"><img src="data:image/png;base64,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" alt="Ardalis" style="width:150px"/></a><div class="navbar-burger burger " data-target="navMenu" role="button" tabindex="0"><span></span><span></span><span></span></div></div><div id="navMenu" class="navbar-menu "><div class="navbar-start has-text-centered"><a class="navbar-item" href="/blog">Blog</a><a class="navbar-item" href="/training-classes">Training</a><a class="navbar-item" href="/mentoring">Mentoring</a><a class="navbar-item" href="/tips">Subscribe</a><a class="navbar-item" href="/interviews">Interviews</a><a class="navbar-item" href="/books">Books</a><a class="navbar-item" href="/tools-used">Tools Used</a><a class="navbar-item" href="/contact-us">Contact</a></div><div class="navbar-end has-text-centered"><a class="navbar-item" href="https://www.facebook.com/StevenAndrewSmith" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+RmFjZWJvb2sgaWNvbjwvdGl0bGU+PHBhdGggZD0iTTIyLjY3NiAwSDEuMzI0Qy41OTMgMCAwIC41OTMgMCAxLjMyNHYyMS4zNTJDMCAyMy40MDguNTkzIDI0IDEuMzI0IDI0aDExLjQ5NHYtOS4yOTRIOS42ODl2LTMuNjIxaDMuMTI5VjguNDFjMC0zLjA5OSAxLjg5NC00Ljc4NSA0LjY1OS00Ljc4NSAxLjMyNSAwIDIuNDY0LjA5NyAyLjc5Ni4xNDF2My4yNGgtMS45MjFjLTEuNSAwLTEuNzkyLjcyMS0xLjc5MiAxLjc3MXYyLjMxMWgzLjU4NGwtLjQ2NSAzLjYzSDE2LjU2VjI0aDYuMTE1Yy43MzMgMCAxLjMyNS0uNTkyIDEuMzI1LTEuMzI0VjEuMzI0QzI0IC41OTMgMjMuNDA4IDAgMjIuNjc2IDAiLz48L3N2Zz4=" alt="facebook"/></span></a><a class="navbar-item" href="https://www.linkedin.com/in/stevenandrewsmith" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+TGlua2VkSW4gaWNvbjwvdGl0bGU+PHBhdGggZD0iTTIwLjQ0NyAyMC40NTJoLTMuNTU0di01LjU2OWMwLTEuMzI4LS4wMjctMy4wMzctMS44NTItMy4wMzctMS44NTMgMC0yLjEzNiAxLjQ0NS0yLjEzNiAyLjkzOXY1LjY2N0g5LjM1MVY5aDMuNDE0djEuNTYxaC4wNDZjLjQ3Ny0uOSAxLjYzNy0xLjg1IDMuMzctMS44NSAzLjYwMSAwIDQuMjY3IDIuMzcgNC4yNjcgNS40NTV2Ni4yODZ6TTUuMzM3IDcuNDMzYy0xLjE0NCAwLTIuMDYzLS45MjYtMi4wNjMtMi4wNjUgMC0xLjEzOC45Mi0yLjA2MyAyLjA2My0yLjA2MyAxLjE0IDAgMi4wNjQuOTI1IDIuMDY0IDIuMDYzIDAgMS4xMzktLjkyNSAyLjA2NS0yLjA2NCAyLjA2NXptMS43ODIgMTMuMDE5SDMuNTU1VjloMy41NjR2MTEuNDUyek0yMi4yMjUgMEgxLjc3MUMuNzkyIDAgMCAuNzc0IDAgMS43Mjl2MjAuNTQyQzAgMjMuMjI3Ljc5MiAyNCAxLjc3MSAyNGgyMC40NTFDMjMuMiAyNCAyNCAyMy4yMjcgMjQgMjIuMjcxVjEuNzI5QzI0IC43NzQgMjMuMiAwIDIyLjIyMiAwaC4wMDN6Ii8+PC9zdmc+" alt="linkedin"/></span></a><a class="navbar-item" href="https://twitter.com/ardalis" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+VHdpdHRlciBpY29uPC90aXRsZT48cGF0aCBkPSJNMjMuOTU0IDQuNTY5Yy0uODg1LjM4OS0xLjgzLjY1NC0yLjgyNS43NzUgMS4wMTQtLjYxMSAxLjc5NC0xLjU3NCAyLjE2My0yLjcyMy0uOTUxLjU1NS0yLjAwNS45NTktMy4xMjcgMS4xODQtLjg5Ni0uOTU5LTIuMTczLTEuNTU5LTMuNTkxLTEuNTU5LTIuNzE3IDAtNC45MiAyLjIwMy00LjkyIDQuOTE3IDAgLjM5LjA0NS43NjUuMTI3IDEuMTI0QzcuNjkxIDguMDk0IDQuMDY2IDYuMTMgMS42NCAzLjE2MWMtLjQyNy43MjItLjY2NiAxLjU2MS0uNjY2IDIuNDc1IDAgMS43MS44NyAzLjIxMyAyLjE4OCA0LjA5Ni0uODA3LS4wMjYtMS41NjYtLjI0OC0yLjIyOC0uNjE2di4wNjFjMCAyLjM4NSAxLjY5MyA0LjM3NCAzLjk0NiA0LjgyNy0uNDEzLjExMS0uODQ5LjE3MS0xLjI5Ni4xNzEtLjMxNCAwLS42MTUtLjAzLS45MTYtLjA4Ni42MzEgMS45NTMgMi40NDUgMy4zNzcgNC42MDQgMy40MTctMS42OCAxLjMxOS0zLjgwOSAyLjEwNS02LjEwMiAyLjEwNS0uMzkgMC0uNzc5LS4wMjMtMS4xNy0uMDY3IDIuMTg5IDEuMzk0IDQuNzY4IDIuMjA5IDcuNTU3IDIuMjA5IDkuMDU0IDAgMTMuOTk5LTcuNDk2IDEzLjk5OS0xMy45ODYgMC0uMjA5IDAtLjQyLS4wMTUtLjYzLjk2MS0uNjg5IDEuOC0xLjU2IDIuNDYtMi41NDhsLS4wNDctLjAyeiIvPjwvc3ZnPg==" alt="twitter"/></span></a><a class="navbar-item" href="https://www.youtube.com/ardalis/" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48dGl0bGU+WW91VHViZSBpY29uPC90aXRsZT48cGF0aCBkPSJNMjMuNDk1IDYuMjA1YTMuMDA3IDMuMDA3IDAgMCAwLTIuMDg4LTIuMDg4Yy0xLjg3LS41MDEtOS4zOTYtLjUwMS05LjM5Ni0uNTAxcy03LjUwNy0uMDEtOS4zOTYuNTAxQTMuMDA3IDMuMDA3IDAgMCAwIC41MjcgNi4yMDVhMzEuMjQ3IDMxLjI0NyAwIDAgMC0uNTIyIDUuODA1IDMxLjI0NyAzMS4yNDcgMCAwIDAgLjUyMiA1Ljc4MyAzLjAwNyAzLjAwNyAwIDAgMCAyLjA4OCAyLjA4OGMxLjg2OC41MDIgOS4zOTYuNTAyIDkuMzk2LjUwMnM3LjUwNiAwIDkuMzk2LS41MDJhMy4wMDcgMy4wMDcgMCAwIDAgMi4wODgtMi4wODggMzEuMjQ3IDMxLjI0NyAwIDAgMCAuNS01Ljc4MyAzMS4yNDcgMzEuMjQ3IDAgMCAwLS41LTUuODA1ek05LjYwOSAxNS42MDFWOC40MDhsNi4yNjQgMy42MDJ6Ii8+PC9zdmc+" alt="youtube"/></span></a><a class="navbar-item" href="https://github.com/ardalis" target="_blank" rel="noopener noreferrer"><span class="icon"><img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0iQ2FwYV8xIiB3aWR0aD0iNDM4LjU0OSIgaGVpZ2h0PSI0MzguNTQ5IiB4PSIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MzguNTQ5IDQzOC41NDkiIHk9IjAiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQzOC41NDkgNDM4LjU0OSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PHBhdGggZD0iTTQwOS4xMzIsMTE0LjU3M2MtMTkuNjA4LTMzLjU5Ni00Ni4yMDUtNjAuMTk0LTc5Ljc5OC03OS44QzI5NS43MzYsMTUuMTY2LDI1OS4wNTcsNS4zNjUsMjE5LjI3MSw1LjM2NSBjLTM5Ljc4MSwwLTc2LjQ3Miw5LjgwNC0xMTAuMDYzLDI5LjQwOGMtMzMuNTk2LDE5LjYwNS02MC4xOTIsNDYuMjA0LTc5LjgsNzkuOEM5LjgwMywxNDguMTY4LDAsMTg0Ljg1NCwwLDIyNC42MyBjMCw0Ny43OCwxMy45NCw5MC43NDUsNDEuODI3LDEyOC45MDZjMjcuODg0LDM4LjE2NCw2My45MDYsNjQuNTcyLDEwOC4wNjMsNzkuMjI3YzUuMTQsMC45NTQsOC45NDUsMC4yODMsMTEuNDE5LTEuOTk2IGMyLjQ3NS0yLjI4MiwzLjcxMS01LjE0LDMuNzExLTguNTYyYzAtMC41NzEtMC4wNDktNS43MDgtMC4xNDQtMTUuNDE3Yy0wLjA5OC05LjcwOS0wLjE0NC0xOC4xNzktMC4xNDQtMjUuNDA2bC02LjU2NywxLjEzNiBjLTQuMTg3LDAuNzY3LTkuNDY5LDEuMDkyLTE1Ljg0NiwxYy02LjM3NC0wLjA4OS0xMi45OTEtMC43NTctMTkuODQyLTEuOTk5Yy02Ljg1NC0xLjIzMS0xMy4yMjktNC4wODYtMTkuMTMtOC41NTkgYy01Ljg5OC00LjQ3My0xMC4wODUtMTAuMzI4LTEyLjU2LTE3LjU1NmwtMi44NTUtNi41N2MtMS45MDMtNC4zNzQtNC44OTktOS4yMzMtOC45OTItMTQuNTU5IGMtNC4wOTMtNS4zMzEtOC4yMzItOC45NDUtMTIuNDE5LTEwLjg0OGwtMS45OTktMS40MzFjLTEuMzMyLTAuOTUxLTIuNTY4LTIuMDk4LTMuNzExLTMuNDI5Yy0xLjE0Mi0xLjMzMS0xLjk5Ny0yLjY2My0yLjU2OC0zLjk5NyBjLTAuNTcyLTEuMzM1LTAuMDk4LTIuNDMsMS40MjctMy4yODljMS41MjUtMC44NTksNC4yODEtMS4yNzYsOC4yOC0xLjI3Nmw1LjcwOCwwLjg1M2MzLjgwNywwLjc2Myw4LjUxNiwzLjA0MiwxNC4xMzMsNi44NTEgYzUuNjE0LDMuODA2LDEwLjIyOSw4Ljc1NCwxMy44NDYsMTQuODQyYzQuMzgsNy44MDYsOS42NTcsMTMuNzU0LDE1Ljg0NiwxNy44NDdjNi4xODQsNC4wOTMsMTIuNDE5LDYuMTM2LDE4LjY5OSw2LjEzNiBjNi4yOCwwLDExLjcwNC0wLjQ3NiwxNi4yNzQtMS40MjNjNC41NjUtMC45NTIsOC44NDgtMi4zODMsMTIuODQ3LTQuMjg1YzEuNzEzLTEyLjc1OCw2LjM3Ny0yMi41NTksMTMuOTg4LTI5LjQxIGMtMTAuODQ4LTEuMTQtMjAuNjAxLTIuODU3LTI5LjI2NC01LjE0Yy04LjY1OC0yLjI4Ni0xNy42MDUtNS45OTYtMjYuODM1LTExLjE0Yy05LjIzNS01LjEzNy0xNi44OTYtMTEuNTE2LTIyLjk4NS0xOS4xMjYgYy02LjA5LTcuNjE0LTExLjA4OC0xNy42MS0xNC45ODctMjkuOTc5Yy0zLjkwMS0xMi4zNzQtNS44NTItMjYuNjQ4LTUuODUyLTQyLjgyNmMwLTIzLjAzNSw3LjUyLTQyLjYzNywyMi41NTctNTguODE3IGMtNy4wNDQtMTcuMzE4LTYuMzc5LTM2LjczMiwxLjk5Ny01OC4yNGM1LjUyLTEuNzE1LDEzLjcwNi0wLjQyOCwyNC41NTQsMy44NTNjMTAuODUsNC4yODMsMTguNzk0LDcuOTUyLDIzLjg0LDEwLjk5NCBjNS4wNDYsMy4wNDEsOS4wODksNS42MTgsMTIuMTM1LDcuNzA4YzE3LjcwNS00Ljk0NywzNS45NzYtNy40MjEsNTQuODE4LTcuNDIxczM3LjExNywyLjQ3NCw1NC44MjMsNy40MjFsMTAuODQ5LTYuODQ5IGM3LjQxOS00LjU3LDE2LjE4LTguNzU4LDI2LjI2Mi0xMi41NjVjMTAuMDg4LTMuODA1LDE3LjgwMi00Ljg1MywyMy4xMzQtMy4xMzhjOC41NjIsMjEuNTA5LDkuMzI1LDQwLjkyMiwyLjI3OSw1OC4yNCBjMTUuMDM2LDE2LjE4LDIyLjU1OSwzNS43ODcsMjIuNTU5LDU4LjgxN2MwLDE2LjE3OC0xLjk1OCwzMC40OTctNS44NTMsNDIuOTY2Yy0zLjksMTIuNDcxLTguOTQxLDIyLjQ1Ny0xNS4xMjUsMjkuOTc5IGMtNi4xOTEsNy41MjEtMTMuOTAxLDEzLjg1LTIzLjEzMSwxOC45ODZjLTkuMjMyLDUuMTQtMTguMTgyLDguODUtMjYuODQsMTEuMTM2Yy04LjY2MiwyLjI4Ni0xOC40MTUsNC4wMDQtMjkuMjYzLDUuMTQ2IGM5Ljg5NCw4LjU2MiwxNC44NDIsMjIuMDc3LDE0Ljg0Miw0MC41Mzl2NjAuMjM3YzAsMy40MjIsMS4xOSw2LjI3OSwzLjU3Miw4LjU2MmMyLjM3OSwyLjI3OSw2LjEzNiwyLjk1LDExLjI3NiwxLjk5NSBjNDQuMTYzLTE0LjY1Myw4MC4xODUtNDEuMDYyLDEwOC4wNjgtNzkuMjI2YzI3Ljg4LTM4LjE2MSw0MS44MjUtODEuMTI2LDQxLjgyNS0xMjguOTA2IEM0MzguNTM2LDE4NC44NTEsNDI4LjcyOCwxNDguMTY4LDQwOS4xMzIsMTE0LjU3M3oiLz48L2c+PGRpdiBpZD0iZGl2U2NyaXB0c1VzZWQiIHN0eWxlPSJkaXNwbGF5Om5vbmUiLz48c2NyaXB0IGlkPSJnbG9iYWxWYXJzRGV0ZWN0aW9uIiBzcmM9ImNocm9tZS1leHRlbnNpb246Ly9jbWtkYm1mbmRrZmdlYmxkaG5rYmZobG5lZWZkYWFpcC9qcy93cnNfZW52LmpzIi8+PC9zdmc+" alt="Github"/></span></a></div></div></div></nav><div><section class="section"><div class="full-width-image-container margin-top-0" style="background-image:url(/static/blogging-ea4fdaec566aafddd0291352e3f8802d.jpg)"></div><div class="tile is-ancestor"><div class="tile is-vertical is-7"><div class="tile"><div class="tile is-parent"><article class="tile is-child box"><div class="container content"><div class="columns"><div class="column is-10 is-offset-1"><h1 class="title is-size-2 has-text-weight-bold is-bold-light">Working Through Roadblocks - A Guide for New Programmers</h1><p style="width:100%;font-weight:bold;color:#3571B8"> Date Published: <!-- -->06 September 2017</p><p><img src="/static/4fb4ac75fbd03f00f42e4ac3586c8265/c3638/NotSureIfGoodProgrammer.jpg" alt="Working Through Roadblocks - A Guide for New Programmers" width="100%"/></p><div><p><strong>Last Updated April 2024</strong></p> <p>This is advice that I have given to many novice developers, and that I would like to have been able to give to myself when I just getting started (though some of the advice refers to resources that didn't exist then - alas). If you find it useful, please consider sharing it with someone you know who might also benefit from it.</p> <h2>Roadblocks</h2> <p>As a programmer or software developer, from time to time it's likely you'll be trying to solve a problem, and things just don't go your way. You're in the zone, coding away, getting stuff done, and feeling good. And then something doesn't work. "No problem," you think to yourself, "I'll just try this slightly different approach..." And that doesn't work, either. Or the next thing. Or the next. And soon, you may find yourself growing frustrated. This is such a common occurrence for programmers that it has its own popular meme:</p> <p><a href="/img/TwoStatesEveryProgrammer.png"><img src="/img/TwoStatesEveryProgrammer.png" alt="Two States of Every Programmer"></a></p> <p>It's also the reason that <a href="https://ardalis.com/the-5-laws-of-software-estimates/">estimates are so difficult in software development</a>.</p> <p>Take heart: facing a blocking issue that's difficult for you to diagnose is something that happens to every programmer (please comment if it's never happened to you). Hopefully this fact will help you avoid some natural imposter syndrome as you consider what to do (and may help if you're wondering if programming is really what you want to be doing). When you're stuck, when you're spinning your wheels, here are some things you can do to help get you back on track as quickly as possible. Remember, <strong>programmer time tends to be expensive</strong>, and your time is the most valuable asset you have. Don't waste it, or your company or customer's money! Get back to a productive (and happier!) state as quickly as possible.</p> <h2>Breadcrumbs (or Thread)</h2> <p>The story of <a href="https://en.wikipedia.org/wiki/Hansel_and_Gretel">Hansel and Gretel</a> describes how two children became lost in the woods because they left a trail of breadcrumbs, but this trail was eaten by birds, and so they couldn't find their way home. Sadly, although this story demonstrates that breadcrumbs are a <em>terrible</em> way to find your way back to a safe location, this term continues to be used to describe exactly this feature. A much better literary analog would be <a href="https://en.wikipedia.org/wiki/Ariadne">Ariadne's Thread</a>, but this is much less well-known.</p> <p>In any case, the first thing you should think about when you find yourself running into problems is to make certain that you have a means of returning to a Known Good StateTM (KGS). Obviously, the best way to do this is through the use of source control (ideally, git, these days). Ideally, you committed (at least locally) the last time you found yourself in a KGS. If you're following TDD, try to also follow <a href="https://ardalis.com/rgrc-is-the-new-red-green-refactor-for-test-first-development">Red-Green-Refactor-Commit (or even RGCRC)</a> as you do so. Even if you're not writing tests, <a href="http://www.weeklydevtips.com/episodes/ebe28760/002-check-in-often">Check In Often</a>. This will save you. Make it a habit. And if you're stuck, before you start ripping everything you're working on apart or throwing things at the wall to see what sticks, make sure you have a copy of the code in a working (or very nearly working, if that ship has sailed) state. At the very least (if you're still not convinced by now to use source control), apply the <a href="http://deviq.com/copy-folder-versioning/">Copy Folder Versioning anti-pattern</a> and make yourself a backup copy (or ZIP) of the folder you're working on.</p> <h2>Timeboxing</h2> <p>The next technique to keep in mind is called <em>timeboxing</em>. If you're not familiar with this term, it simply refers to the idea of setting a maximum amount of time, up front, that you will spend on a particular activity. In the case of troubleshooting a problem, it may help to assign yourself 10 or 15 minutes, max, to figure it out. Set a timer, and stick to it. If you're able to solve the problem with time to spare, that's great! Give yourself a pat on the back, reward yourself with a snack, do whatever you do to help get yourself back in the zone, and get back to work (and don't forget to check in). If your timer goes off and you're still stuck, then move on to one of the next techniques.</p> <h2>Searching for Answers</h2> <p>It's hard to imagine, but there was a time when people had to write software without access to ChatGPT, Google or Stack Overflow. Or even instant messenger programs and Discord/Slack/Teams (or IRC). Thankfully, this is not that time. You live in the 21st century. You have access to the sum of the world's knowledge at your fingertips. If you're stuck for more than a few minutes, you should stop spinning your wheels or banging your head against the wall or whatever metaphor seems most appropriate, and start searching for answers using the clues you have at hand.</p> <p><a href="/img/NotSureIfGoodProgrammer.jpg"><img src="/img/NotSureIfGoodProgrammer.jpg" alt="NotSureIfGoodProgrammer"></a></p> <p>As of 2023, AI has surpassed Google (and even Stack Overflow) as the best first place to look for help. Take your error message or your block of not-quite-working code, and paste it into ChatGPT or a similar service. Ask it, in natural language, to help you understand why it's not working or what might be the cause(s) of such an error. You can use this as a form of Rubber Duck Debugging (mentioned below), as well!</p> <p>If that fails, or if it's taking a while to answer, try Googling (or you can google with Bing) the error message. There's a reason this, too, has inspired humorous memes and book covers - it works a great deal of the time. (It works even better if you <a href="https://ardalis.com/attempt-made-to-access-socket/">previously blogged</a> how you overcame the same error message in the past)</p> <p><a href="/img/GooglingTheErrorMessage.jpg"><img src="/img/GooglingTheErrorMessage.jpg" alt="GooglingTheErrorMessage"></a></p> <p>Add in a few keywords related to the technology stack you're using. You'd be amazed how quickly someone with a bit of experience searching can find answers (Note: <em>these are not answers they themselves knew</em>). This is a skill you should develop, and one great way to improve at it is to do it. You're already stuck, you've given it your best shot for a few minutes, there's no shame in seeing if someone else has run into this problem before and learning from their experience.</p> <p>[<img src="/img/doctors-googling-does-not-make-you-doctor.jpg" alt="Googling stuff does not make you a doctor">(/img/doctors-googling-does-not-make-you-doctor.jpg)]</p> <p>Of course, there are diminishing returns to searching for answers, too. You should <em>timebox</em> this phase of your troubleshooting as well. I recommend limiting this to another 10 or 15 minutes. Remember, there's only one of you, and you can only apply one approach to solving your problem at a time. If you've spent 30 minutes now completely blocked and you're still no closer to figuring out why things aren't working, it's time to get some help.</p> <h2>Leverage Others' Experience</h2> <p>If you haven't already done so, <a href="https://stackoverflow.com/questions/ask">search StackOverflow (or an appropriate Stack Exchange site) specifically</a> for your problem (as opposed to relying on Google picking up answers from the site). Assuming this doesn't yield a solution, take a moment and compose a question for StackOverflow (SO) yourself. <strong>Don't jump to this step before spending some time trying to resolve the problem yourself.</strong> Show respect for others by demonstrating the effort you've applied, and you're more likely to get a good response than if you're asking for help every 5 minutes and obviously haven't put much effort into the problem yourself. Include what you've tried and any relevant links you've attempted to leverage in your question! It shows you've done your homework and will keep folks from suggesting things you've already attempted.</p> <p>Once you've posted your question to SO, <strong>the rest of the world is now helping you to solve your problem in parallel with your own efforts!</strong> This is huge, but you can help out further if necessary (again don't do this too often or you're use up others' good will toward you) by soliciting answers to your question through a variety of means. Post a brief synopsis of your problem and the steps you've taken to solve it, and link to the SO question using any of these communities that you're a part of and seem appropriate:</p> <ul> <li>Coworkers and Internal Help Mailing Lists</li> <li>Discord/Slack/Teams - Public communities or your company's private server</li> <li>Twitter/X - use appropriate hashtags</li> <li>Other online communities and mailing lists</li> </ul> <p>Many times, you won't even get as far as posting the question, because just formulating the question often helps you to solve it. This is referred to as <a href="http://deviq.com/rubber-duck-debugging/">Rubber Duck Debugging</a>. Try explaining your problem to a rubber duck before you ask your coworker, and a good portion of the time just formulating the question you want to ask (out loud, ideally) will help you to identify the answer.</p> <p><a href="http://deviq.com/rubber-duck-debugging/"><img src="/img/RubberDuckDebugging-400x400-300x300.png" alt="Rubber Duck Debugging"></a></p> <blockquote class="twitter-tweet" data-lang="en"><p dir="ltr" lang="en">This is a great list! I'd add demonstrating the problem to someone else has been helpful to me. They might ask a really good question.</p>— Lanette Creamer (@lanettecream) <a href="https://twitter.com/lanettecream/status/905638706521899008">September 7, 2017</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> <h2>Take a Break</h2> <p>If you've done all of the above and you still haven't found the answer, take a break. Depending on circumstances, this might mean going to bed, going to lunch, going for a short walk, grabbing a snack, or even just checking email or doing other work activities. At this point, though, the rest of the world is helping you solve this problem, so even if you take a break, you're still (potentially) getting closer to an answer. And your subconscious is still going strong, too. When you return to the problem, you may notice something that you'd overlooked or taken for granted before, which solves the whole problem (or helps you realize you were actually solving the wrong problem, which happens quite a bit, too).</p> <h2>Apply the Scientific Method</h2> <p>When you're stuck, after spending a (short) period of time just trying things to see what works, it helps to regroup and become more methodical. Apply the scientific method to your approach to the problem. Make a theory about what the root cause might be. Determine a way to prove (or disprove!) that your theory is the right one.</p> <p>It's like if you've lost your keys. At first, you just try the usual places. Your pocket. Your coat. The hook by the door. Maybe the freezer. Your pocket again. Your coat again. But if none of that works, it's time to start being more methodical. Retrace your steps. Start exhaustively ruling out each possibility. Scrambling and grasping for quick wins only works to a point - after that it's better to have a plan and maximize efficiency.</p> <p>Start thinking of each potential solution as an experiment (testing a theory). Run your experiment and capture the results. Hopefully the result helps you determine whether or not your theory explained the behavior you were seeing. If not, continue reducing the possible sources of the problem through repetition. Make sure as you follow this process that you are only changing one thing at a time. This is another time when good source control can really help you.</p> <p>It can also be a good time to think about automating some of the experiments you're conducting, if possible. Writing some code that asserts that part of your application behaves in a certain way under certain conditions - that sounds an awful lot like a unit or integration test to me. If you think it might be valuable to be able to run that same test in the future (perhaps with every push to your source control), consider codifying your experiment as a test. Or better yet, write as many of those experiments as you can as tests in the first place, which leads us to...</p> <h2>Use Automation</h2> <p>Use tests, build scripts, build servers, and other automation techniques to maximize how quickly you're able to diagnose when you have solved the problem, and to ensure your "fix" hasn't introduced new problems. The value of an automated test isn't in telling you how your code behaves when you write it - it's in telling you that your code still behaves that way at some point in the future. What's even more valuable is when a test is able to tell you that your code no longer does what it did after you just introduced a change <strong>that you had no idea would even impact the code the test was covering</strong>. If the only value you place on your tests is in validating that your code does what you think it does today, you're missing most of the point of having such tests. When you do find yourself blocked, your tests can be a great help in showing you all of the things that aren't broken. And if any of them <em>are</em> broken, they might help you become unblocked by showing you the source of the problem.</p> <h2>More AI Tips</h2> <p>You can use <a href="https://visualstudio.microsoft.com/github-copilot/">GitHub Copilot</a> in your IDE of choice and try to get help by typing comments and letting it generate similar or equivalent code to what you're trying to do. Works best for relatively small, focused functions <em>but breaking things down into small focused functions will help your overall design anyway</em> so try to do that!</p> <p>You can use <a href="https://docs.github.com/en/copilot/github-copilot-chat/using-github-copilot-chat-in-your-ide">GitHub Copilot Chat</a> in your IDE of choice to leverage AI in a way similar to ChatGPT, but while giving the AI more context specific to your codebase and problem. Just be sure you have the relevant files open so that they're in scope for the chat session. <strong>Tip:</strong> You can ask what is in scope if you're not sure.</p> <h2>Burnout and Stress</h2> <p>Sometimes you'll find yourself blocked because you're simply burnt out. You may not be physically tired, but mentally you may be feeling the stress of a variety of factors. If simply taking a break (as suggested above) doesn't help, you may need more help to get yourself back into form. Talk to someone. Use some vacation time. Consider different roles within your org or even different positions at other organizations if you think the issue is your current role. Try to improve your fitness, eating, and sleep schedule, as any or all of these can lead to or exacerbate your stress and burnout problems.</p> <p>When things are generally going OK, you may be able to keep stress and/or burnout in check. But when things get frustrating, such as when something is blocked and you have no idea why (and a deadline and/or boss is looming), that increase in stress can become a tipping point. In addition to trying to solve the immediate problem, take a moment to consider how you're feeling about your work in general, even when things are "going well."</p> <h2>Summary</h2> <p>You're going to get stuck. It's frustrating, but it happens to everybody. Make sure you approach it in a positive fashion, and that you apply tactics that will minimize the time you spend stuck. As developers, we're constantly trying to build things nobody has ever built before on top of software that didn't even exist until a couple of years ago at most. The fact that any of it works as often as it does is amazing. The fact that what you think should be a relatively simple and straightforward task sometimes results in hours spent trying to figure out WHY. IT. JUST. DOESN'T. WORK. is just a part of this line of work.</p> <p><strong>It's not your fault and it's not just you.</strong></p> <p>Minimize how much time you allow yourself to spend on trying to get unblocked by applying the ideas above, and if you have any of your own to share please post them in the comments below.</p> <p><em>If you found this useful, consider sharing it with a peer and joining my <a href="/tips">weekly dev tips newsletter</a> or <a href="https://youtube.com/ardalis">subscribe to my YouTube channel</a>. Cheers!</em></p></div><span><div style="margin-top:2rem"><h4>Tags - <a style="font-size:1rem;color:gray" href="/tags/">Browse all tags</a></h4><ul class="taglist"><li><a href="/tags/software-craftsmanship/">software craftsmanship</a></li><li><a href="/tags/software-development/">Software Development</a></li><li><a href="/tags/tip/">tip</a></li><li><a href="/tags/productivity/">productivity</a></li><li><a href="/tags/visual-studio/">visual studio</a></li><li><a href="/tags/visual-studio-code/">visual studio code</a></li><li><a href="/tags/programming/">programming</a></li><li><a href="/tags/junior-developers/">junior developers</a></li><li><a href="/tags/troubleshooting/">troubleshooting</a></li></ul></div></span><span><div style="margin-top:1rem"><h4>Category - <a style="font-size:1rem;color:gray" href="/category/">Browse all categories</a></h4><ul class="taglist"><li><a href="/category/productivity/">Productivity</a></li><li><a href="/category/software-development/">Software Development</a></li></ul></div></span><div class="content has-text-centered"><div class="content-card"><div class="card"><div class="firstinfo"><img src="/static/steve-smith-ardalis-200x200-e9fab63b806b33a2ee3ded4a954bbdfa.jpg" alt="Steve Smith"/><div class="profileinfo"><h1>About Ardalis</h1><h3>Software Architect</h3><p class="bio">Steve is an experienced software architect and trainer, focusing on code quality and Domain-Driven Design with .NET.</p></div></div></div></div></div><div><div id="disqus_thread"></div></div></div></div></div></article></div></div></div><div><header><div><div class="tile is-parent"><article class="tile is-child box"><div class="sidebar" id="sidebar"><div class="content has-text-centered"><div class="content-card"><div class="card-sidebar"><div class="firstinfo"><img src="/static/steve-smith-ardalis-200x200-e9fab63b806b33a2ee3ded4a954bbdfa.jpg" alt="Steve Smith"/><div class="profileinfo"><h1>About Ardalis</h1><h3>Software Architect</h3><p class="bio">Steve is an experienced software architect and trainer, focusing on code quality and Domain-Driven Design with .NET.</p></div></div></div></div></div><div style="padding:8px;margin-left:10px">Get a <a href="/tips">Free Developer Tip</a> in your inbox every Wednesday.</div><div><a href="/search"><h2 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="magnifying glass">🔍</span> SEARCH</h2></a></div> <br/><div><h2 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="graduation cap">🎓</span> ONLINE TRAINING</h2></div> <br/><div class="recent-post"><ul class="recent-post"><li><a href="https://dometrain.com/bundle/from-zero-to-hero-modular-monoliths-in-dotnet/">From Zero to Hero: Modular Monoliths in .NET</a></li><li><a href="https://www.pluralsight.com/courses/refactoring-solid-c-sharp-code">Refactoring to SOLID C# Code</a> NEW!</li><li><a href="https://www.pluralsight.com/courses/aspdotnet-core-6-web-api-best-practices">ASP.NET Core 6 Web API: Best Practices</a></li><li><a href="https://www.pluralsight.com/courses/working-c-sharp-generics-best-practices">Working with C# Generics: Best Practices</a></li><li><a href="https://www.pluralsight.com/courses/fundamentals-domain-driven-design">Domain-Driven Design Fundamentals</a></li><li><a href="https://www.pluralsight.com/courses/refactoring-csharp-developers">Refactoring for C# Devs</a></li><li><a href="https://www.pluralsight.com/courses/kanban-getting-started">Kanban: Getting Started</a></li><li><a href="https://www.pluralsight.com/courses/csharp-solid-principles">SOLID Principles for C# Devs</a></li><li><a href="https://www.pluralsight.com/courses/design-patterns-overview">Design Patterns Overview</a></li></ul></div> <br/><div class="recent-post"><h2 style="font-size:22px;padding:7px;font-weight:BOLD"><span role="img" aria-label="clipboard">📋</span> CATEGORIES</h2> <br/><ul class="recent-post" style="text-transform:uppercase"><li><a href="/category/career-advice/">Career Advice<!-- --> (<!-- -->2<!-- -->)</a></li><li><a href="/category/iraq/">Iraq<!-- --> (<!-- -->158<!-- -->)</a></li><li><a href="/category/personal/">Personal<!-- --> (<!-- -->37<!-- -->)</a></li><li><a href="/category/productivity/">Productivity<!-- --> (<!-- -->168<!-- -->)</a></li><li><a href="/category/security/">Security<!-- --> (<!-- -->7<!-- -->)</a></li><li><a href="/category/software-development/">Software Development<!-- --> (<!-- -->960<!-- -->)</a></li><li><a href="/category/uncategorized/">Uncategorized<!-- --> (<!-- -->435<!-- -->)</a></li></ul> </div><div><br/><h4 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="book">📘</span> FREE ARCHITECTURE EBOOK</h4><br/><center><a href="/architecture-ebook"><img src="/static/Architecture-eBook-Cover-242x300-09d775f8f28cb004b00c47b84c574494.png" alt="book"/></a><h4><a href="/architecture-ebook">Get the Book!</a></h4></center><br/><h1 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="pen">🖊️</span> RECENT ARTICLES</h1><br/><div class="columns is-multiline"><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/interfaces-describe-what-implementations-describe-how/">Interfaces Describe What - Implementations Describe How</a></li></ul></div></header></article></div><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/you-should-blog/">You Should Blog</a></li></ul></div></header></article></div><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/from-microservices-to-modular-monoliths/">From Microservices to Modular Monoliths</a></li></ul></div></header></article></div><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/navigation-properties-between-aggregates-modules/">Modeling Navigation Properties Between Aggregates or Modules</a></li></ul></div></header></article></div><div><article><header><div class="recent-post"><ul class="recent-post"><li><a href="/comparing-unit-testable-code-with-maintainable-code/">Comparing Unit Testable Code with Maintainable Code</a></li></ul></div></header></article></div></div><br/><h1 style="font-size:22px;padding:7px;margin-left:15px;font-weight:BOLD"><span role="img" aria-label="bird">🐦</span> RECENT TWEETS</h1><a class="twitter-timeline" data-width="400" data-height="800" data-theme="light" href="https://twitter.com/ardalis?ref_src=twsrc%5Etfw" data-chrome="noscrollbar">Tweets by ardalis</a><script async="" src="https://platform.twitter.com/widgets.js" charSet="utf-8" type="text/javascript"></script></div><div></div></div></article></div></div></header></div></div></section></div><footer class="footer has-background-black has-text-white-ter"><div class="content has-text-centered has-background-black has-text-white-ter"><div class="container has-background-black has-text-white-ter"><div class="columns"><div class="column is-4"><form action="https://www.google.com/search" method="get"><input type="hidden" name="q" value="site:ardalis.com"/><input type="text" name="q" alt="search" class="googletextbox"/><input type="submit" value="Search my Site with Google" class="googletextbox"/></form><br/><a href="/interviews/">Interviews</a><br/><a href="/contact">Contact</a></div><div class="column is-4"><div class="content has-text-centered"><img src="data:image/png;base64,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" alt="Ardalis" style="width:5em;height:5em"/><p>Copyright © 2024</p><br/></div></div><div class="column is-4 social"><a title="facebook" href="https://www.facebook.com/StevenAndrewSmith"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+RmFjZWJvb2sgaWNvbjwvdGl0bGU+PHBhdGggZD0iTTIyLjY3NiAwSDEuMzI0Qy41OTMgMCAwIC41OTMgMCAxLjMyNHYyMS4zNTJDMCAyMy40MDguNTkzIDI0IDEuMzI0IDI0aDExLjQ5NHYtOS4yOTRIOS42ODl2LTMuNjIxaDMuMTI5VjguNDFjMC0zLjA5OSAxLjg5NC00Ljc4NSA0LjY1OS00Ljc4NSAxLjMyNSAwIDIuNDY0LjA5NyAyLjc5Ni4xNDF2My4yNGgtMS45MjFjLTEuNSAwLTEuNzkyLjcyMS0xLjc5MiAxLjc3MXYyLjMxMWgzLjU4NGwtLjQ2NSAzLjYzSDE2LjU2VjI0aDYuMTE1Yy43MzMgMCAxLjMyNS0uNTkyIDEuMzI1LTEuMzI0VjEuMzI0QzI0IC41OTMgMjMuNDA4IDAgMjIuNjc2IDAiLz48L3N2Zz4=" alt="Facebook" style="width:1em;height:1em"/></a><a title="linkedin" href="https://www.linkedin.com/in/stevenandrewsmith"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+TGlua2VkSW4gaWNvbjwvdGl0bGU+PHBhdGggZD0iTTIwLjQ0NyAyMC40NTJoLTMuNTU0di01LjU2OWMwLTEuMzI4LS4wMjctMy4wMzctMS44NTItMy4wMzctMS44NTMgMC0yLjEzNiAxLjQ0NS0yLjEzNiAyLjkzOXY1LjY2N0g5LjM1MVY5aDMuNDE0djEuNTYxaC4wNDZjLjQ3Ny0uOSAxLjYzNy0xLjg1IDMuMzctMS44NSAzLjYwMSAwIDQuMjY3IDIuMzcgNC4yNjcgNS40NTV2Ni4yODZ6TTUuMzM3IDcuNDMzYy0xLjE0NCAwLTIuMDYzLS45MjYtMi4wNjMtMi4wNjUgMC0xLjEzOC45Mi0yLjA2MyAyLjA2My0yLjA2MyAxLjE0IDAgMi4wNjQuOTI1IDIuMDY0IDIuMDYzIDAgMS4xMzktLjkyNSAyLjA2NS0yLjA2NCAyLjA2NXptMS43ODIgMTMuMDE5SDMuNTU1VjloMy41NjR2MTEuNDUyek0yMi4yMjUgMEgxLjc3MUMuNzkyIDAgMCAuNzc0IDAgMS43Mjl2MjAuNTQyQzAgMjMuMjI3Ljc5MiAyNCAxLjc3MSAyNGgyMC40NTFDMjMuMiAyNCAyNCAyMy4yMjcgMjQgMjIuMjcxVjEuNzI5QzI0IC43NzQgMjMuMiAwIDIyLjIyMiAwaC4wMDN6Ii8+PC9zdmc+" alt="Linkedin" style="width:1em;height:1em"/></a><a title="twitter" href="https://twitter.com/ardalis"><img class="fas fa-lg" src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+VHdpdHRlciBpY29uPC90aXRsZT48cGF0aCBkPSJNMjMuOTU0IDQuNTY5Yy0uODg1LjM4OS0xLjgzLjY1NC0yLjgyNS43NzUgMS4wMTQtLjYxMSAxLjc5NC0xLjU3NCAyLjE2My0yLjcyMy0uOTUxLjU1NS0yLjAwNS45NTktMy4xMjcgMS4xODQtLjg5Ni0uOTU5LTIuMTczLTEuNTU5LTMuNTkxLTEuNTU5LTIuNzE3IDAtNC45MiAyLjIwMy00LjkyIDQuOTE3IDAgLjM5LjA0NS43NjUuMTI3IDEuMTI0QzcuNjkxIDguMDk0IDQuMDY2IDYuMTMgMS42NCAzLjE2MWMtLjQyNy43MjItLjY2NiAxLjU2MS0uNjY2IDIuNDc1IDAgMS43MS44NyAzLjIxMyAyLjE4OCA0LjA5Ni0uODA3LS4wMjYtMS41NjYtLjI0OC0yLjIyOC0uNjE2di4wNjFjMCAyLjM4NSAxLjY5MyA0LjM3NCAzLjk0NiA0LjgyNy0uNDEzLjExMS0uODQ5LjE3MS0xLjI5Ni4xNzEtLjMxNCAwLS42MTUtLjAzLS45MTYtLjA4Ni42MzEgMS45NTMgMi40NDUgMy4zNzcgNC42MDQgMy40MTctMS42OCAxLjMxOS0zLjgwOSAyLjEwNS02LjEwMiAyLjEwNS0uMzkgMC0uNzc5LS4wMjMtMS4xNy0uMDY3IDIuMTg5IDEuMzk0IDQuNzY4IDIuMjA5IDcuNTU3IDIuMjA5IDkuMDU0IDAgMTMuOTk5LTcuNDk2IDEzLjk5OS0xMy45ODYgMC0uMjA5IDAtLjQyLS4wMTUtLjYzLjk2MS0uNjg5IDEuOC0xLjU2IDIuNDYtMi41NDhsLS4wNDctLjAyeiIvPjwvc3ZnPg==" alt="Twitter" style="width:1em;height:1em"/></a><a title="youtube" href="https://www.youtube.com/ardalis/"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI0IDI0Ij48dGl0bGU+WW91VHViZSBpY29uPC90aXRsZT48cGF0aCBkPSJNMjMuNDk1IDYuMjA1YTMuMDA3IDMuMDA3IDAgMCAwLTIuMDg4LTIuMDg4Yy0xLjg3LS41MDEtOS4zOTYtLjUwMS05LjM5Ni0uNTAxcy03LjUwNy0uMDEtOS4zOTYuNTAxQTMuMDA3IDMuMDA3IDAgMCAwIC41MjcgNi4yMDVhMzEuMjQ3IDMxLjI0NyAwIDAgMC0uNTIyIDUuODA1IDMxLjI0NyAzMS4yNDcgMCAwIDAgLjUyMiA1Ljc4MyAzLjAwNyAzLjAwNyAwIDAgMCAyLjA4OCAyLjA4OGMxLjg2OC41MDIgOS4zOTYuNTAyIDkuMzk2LjUwMnM3LjUwNiAwIDkuMzk2LS41MDJhMy4wMDcgMy4wMDcgMCAwIDAgMi4wODgtMi4wODggMzEuMjQ3IDMxLjI0NyAwIDAgMCAuNS01Ljc4MyAzMS4yNDcgMzEuMjQ3IDAgMCAwLS41LTUuODA1ek05LjYwOSAxNS42MDFWOC40MDhsNi4yNjQgMy42MDJ6Ii8+PC9zdmc+" alt="YouTube" style="width:1em;height:1em"/></a><a title="github" href="https://github.com/ardalis"><img src="data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+R2l0SHViIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0xMiAuMjk3Yy02LjYzIDAtMTIgNS4zNzMtMTIgMTIgMCA1LjMwMyAzLjQzOCA5LjggOC4yMDUgMTEuMzg1LjYuMTEzLjgyLS4yNTguODItLjU3NyAwLS4yODUtLjAxLTEuMDQtLjAxNS0yLjA0LTMuMzM4LjcyNC00LjA0Mi0xLjYxLTQuMDQyLTEuNjFDNC40MjIgMTguMDcgMy42MzMgMTcuNyAzLjYzMyAxNy43Yy0xLjA4Ny0uNzQ0LjA4NC0uNzI5LjA4NC0uNzI5IDEuMjA1LjA4NCAxLjgzOCAxLjIzNiAxLjgzOCAxLjIzNiAxLjA3IDEuODM1IDIuODA5IDEuMzA1IDMuNDk1Ljk5OC4xMDgtLjc3Ni40MTctMS4zMDUuNzYtMS42MDUtMi42NjUtLjMtNS40NjYtMS4zMzItNS40NjYtNS45MyAwLTEuMzEuNDY1LTIuMzggMS4yMzUtMy4yMi0uMTM1LS4zMDMtLjU0LTEuNTIzLjEwNS0zLjE3NiAwIDAgMS4wMDUtLjMyMiAzLjMgMS4yMy45Ni0uMjY3IDEuOTgtLjM5OSAzLS40MDUgMS4wMi4wMDYgMi4wNC4xMzggMyAuNDA1IDIuMjgtMS41NTIgMy4yODUtMS4yMyAzLjI4NS0xLjIzLjY0NSAxLjY1My4yNCAyLjg3My4xMiAzLjE3Ni43NjUuODQgMS4yMyAxLjkxIDEuMjMgMy4yMiAwIDQuNjEtMi44MDUgNS42MjUtNS40NzUgNS45Mi40Mi4zNi44MSAxLjA5Ni44MSAyLjIyIDAgMS42MDYtLjAxNSAyLjg5Ni0uMDE1IDMuMjg2IDAgLjMxNS4yMS42OS44MjUuNTdDMjAuNTY1IDIyLjA5MiAyNCAxNy41OTIgMjQgMTIuMjk3YzAtNi42MjctNS4zNzMtMTItMTItMTIiLz48L3N2Zz4=" alt="GitHub" style="width:1em;height:1em"/></a><a title="mastodon" rel="me" href="https://fosstodon.org/@ardalis">Mastodon</a></div></div><div class="columns"><div class="column is-12"> <br/></div></div></div></div></footer></div></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/working-through-roadblocks-a-guide-for-new-programmers/";window.___webpackCompilationHash="9f072ce39b8c45e776d8";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-7da9e88def8c798a4eb9.js"],"app":["/app-405db4ecfef604df7c88.js"],"component---src-pages-404-js":["/component---src-pages-404-js-1976de88f000a167ddcd.js"],"component---src-pages-blog-xxindex-js":["/component---src-pages-blog-xxindex-js-6bcf93906ae77ae2d8f9.js"],"component---src-pages-category-index-js":["/component---src-pages-category-index-js-48d61f4a46bb641b8956.js"],"component---src-pages-contact-us-index-js":["/component---src-pages-contact-us-index-js-5b411c187d58149838fb.js"],"component---src-pages-contact-us-thanks-js":["/component---src-pages-contact-us-thanks-js-4628b8a932d6ba8aab4f.js"],"component---src-pages-search-js":["/component---src-pages-search-js-a08b213b54d487a46d0b.js"],"component---src-pages-tags-index-js":["/component---src-pages-tags-index-js-19205344ecd0edc99e53.js"],"component---src-templates-assessments-page-js":["/component---src-templates-assessments-page-js-6eb574b0cb3280515679.js"],"component---src-templates-blog-list-js":["/component---src-templates-blog-list-js-0654f80ec4fb1083e770.js"],"component---src-templates-blog-post-js":["/component---src-templates-blog-post-js-a0b924a3ca1633ff2ab9.js"],"component---src-templates-category-js":["/component---src-templates-category-js-fcf4126d77453579328c.js"],"component---src-templates-ebook-page-js":["/component---src-templates-ebook-page-js-bd3cc1f64c724e6b2225.js"],"component---src-templates-index-page-js":["/component---src-templates-index-page-js-e858569f1b057f1865d5.js"],"component---src-templates-interviews-page-js":["/component---src-templates-interviews-page-js-ba4485a2c98fe4cbe0d7.js"],"component---src-templates-mentoring-page-js":["/component---src-templates-mentoring-page-js-5bb43e188b85eb0ea5d8.js"],"component---src-templates-software-craftsmanship-2016-wall-calendar-sponsorship-page-js":["/component---src-templates-software-craftsmanship-2016-wall-calendar-sponsorship-page-js-336fba6ad39c3dd88394.js"],"component---src-templates-tags-js":["/component---src-templates-tags-js-be64cf526cda48ad19f7.js"],"component---src-templates-tips-page-js":["/component---src-templates-tips-page-js-46547b7f6de4bc8075e7.js"],"component---src-templates-tools-used-page-js":["/component---src-templates-tools-used-page-js-57cf6d51808846c98f3d.js"],"component---src-templates-training-classes-page-js":["/component---src-templates-training-classes-page-js-9f8bb3852c890a4a7db3.js"]};/*]]>*/</script><script src="/polyfill-7da9e88def8c798a4eb9.js" nomodule=""></script><script src="/app-405db4ecfef604df7c88.js" async=""></script><script src="/532a2f07-f97befafd74bf8dd0311.js" async=""></script><script src="/framework-3a4fd0dc0ae7f6fdcce7.js" async=""></script><script src="/webpack-runtime-3c5edcbff810762fe2d4.js" async=""></script></body></html>

Pages: 1 2 3 4 5 6 7 8 9 10