<?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: Sébastien D.</title>
    <description>The latest articles on DEV Community by Sébastien D. (@dsebastien).</description>
    <link>https://dev.to/dsebastien</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%2F245388%2Fd48f988b-8f5e-45f0-8324-80f7a9345616.png</url>
      <title>DEV Community: Sébastien D.</title>
      <link>https://dev.to/dsebastien</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dsebastien"/>
    <language>en</language>
    <item>
      <title>Advice for people getting started with Knowledge Management and Writing</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Sun, 25 Aug 2024 08:10:14 +0000</pubDate>
      <link>https://dev.to/dsebastien/advice-for-people-getting-started-with-knowledge-management-and-writing-3h1b</link>
      <guid>https://dev.to/dsebastien/advice-for-people-getting-started-with-knowledge-management-and-writing-3h1b</guid>
      <description>&lt;p&gt;Having used &lt;a href="https://notes.dsebastien.net/30+Areas/33+Permanent+notes/33.02+Content/Obsidian?ref=dsebastien.net" rel="noopener noreferrer"&gt;Obsidian&lt;/a&gt; for a few years extensively, creating products (e.g., the &lt;a href="https://notes.dsebastien.net/30+Areas/33+Permanent+notes/33.02+Content/Obsidian+Starter+Kit?ref=dsebastien.net" rel="noopener noreferrer"&gt;Obsidian Starter Kit&lt;/a&gt;), and &lt;a href="https://developassion.gumroad.com/l/pkm-coaching?ref=dsebastien.net" rel="noopener noreferrer"&gt;coaching&lt;/a&gt; people about Knowledge Management, my recommendations would be:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Avoid spending too much time researching the topic. The first step is to create the habit, get used to the tool, and WRITE. All the rest is just procrastination in disguise (really!)&lt;/li&gt;
&lt;li&gt;Start simple: Avoid complexity like the plague. Structure and plugins can come later, once you reach a critical mass of notes&lt;/li&gt;
&lt;li&gt;Prefer a dead simple folder structure (e.g., one folder for everything!), tag your notes, and choose good names&lt;/li&gt;
&lt;li&gt;Avoid long notes. Create "atomic" ones: short, focused on a single idea, and connected with other ones&lt;/li&gt;
&lt;li&gt;Create a journal in Obsidian, and use it as the entry point: add your notes to your daily notes, and create separate notes only afterward. That helps focusing on WRITING, instead of having to worry about organizing, tagging, etc. Again, organizing can come over time, as needed&lt;/li&gt;
&lt;li&gt;Don't consider your notes as final: they're forever drafts&lt;/li&gt;
&lt;li&gt;Don't give up. Knowledge Management has a "startup problem". It takes time to reach the return on investment&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Again, ignore the theory for a while, it won't help you now. You can always explore PARA, Zettelkasten, Johnny Decimal, and other things later on.&lt;/p&gt;

&lt;p&gt;If you really reach the point where you feel overwhelmed with your notes, then maybe take a look at something like my &lt;a href="https://notes.dsebastien.net/30+Areas/33+Permanent+notes/33.02+Content/Obsidian+Starter+Kit?ref=dsebastien.net" rel="noopener noreferrer"&gt;Obsidian Starter Kit&lt;/a&gt;. Hundreds of people are happy with it. It's a 1:1 copy of the system I use for myself. It's powerful, but simple, and it stays out of the way. Its goal is to let people focus on writing: &lt;a href="https://developassion.gumroad.com/l/obsidian-starter-kit" rel="noopener noreferrer"&gt;https://developassion.gumroad.com/l/obsidian-starter-kit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Useful resources&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Obsidian tutorial: &lt;a href="https://www.dsebastien.net/the-ultimate-beginners-guide-to-obsidian/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/the-ultimate-beginners-guide-to-obsidian/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Note naming tips: &lt;a href="https://www.dsebastien.net/the-art-of-note-naming-keys-to-effective-knowledge-management/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/the-art-of-note-naming-keys-to-effective-knowledge-management/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Avoid long notes: &lt;a href="https://www.dsebastien.net/how-to-split-long-notes-into-atomic-notes-a-comprehensive-guide/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/how-to-split-long-notes-into-atomic-notes-a-comprehensive-guide/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Atomic notes: &lt;a href="https://www.dsebastien.net/the-value-of-atomic-notes/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/the-value-of-atomic-notes/&lt;/a&gt;
How to connect ideas: &lt;a href="https://www.dsebastien.net/how-to-connect-ideas-together/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/how-to-connect-ideas-together/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How to tag: &lt;a href="https://www.dsebastien.net/2022-05-17-why-and-how-to-tag-notes-in-your-pkm/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/2022-05-17-why-and-how-to-tag-notes-in-your-pkm/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Evergreen notes: &lt;a href="https://www.dsebastien.net/continuous-note-taking/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/continuous-note-taking/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gradual return of PKM: &lt;a href="https://www.dsebastien.net/the-gradual-return-on-investment-of-pkm/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/the-gradual-return-on-investment-of-pkm/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How I use daily notes: &lt;a href="https://www.dsebastien.net/how-i-use-daily-notes/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/how-i-use-daily-notes/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How to structure daily notes in Obsidian: &lt;a href="https://www.dsebastien.net/my-daily-note-template-in-obsidian/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/my-daily-note-template-in-obsidian/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;My public notes (thousands of examples): &lt;a href="https://notes.dsebastien.net/" rel="noopener noreferrer"&gt;https://notes.dsebastien.net/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;My newsletter (I write about PKM all day long): &lt;a href="https://www.dsebastien.net/tag/newsletter/" rel="noopener noreferrer"&gt;https://www.dsebastien.net/tag/newsletter/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;About Sébastien&lt;br&gt;
I am &lt;a href="https://www.dsebastien.net/about/" rel="noopener noreferrer"&gt;Sébastien Dubois&lt;/a&gt;. You can &lt;a href="https://x.com/dSebastien" rel="noopener noreferrer"&gt;follow me on X&lt;/a&gt;) 🐦&lt;/p&gt;

&lt;p&gt;I am an author, founder, and coach. I write books and articles about &lt;a href="https://www.dsebastien.net/tag/knowledge-work/" rel="noopener noreferrer"&gt;Knowledge Work&lt;/a&gt;, &lt;a href="https://www.dsebastien.net/tag/personal-knowledge-management/" rel="noopener noreferrer"&gt;Personal Knowledge Management&lt;/a&gt;, &lt;a href="https://www.dsebastien.net/tag/note-taking/" rel="noopener noreferrer"&gt;Note-taking&lt;/a&gt;, Lifelong Learning, &lt;a href="https://www.dsebastien.net/tag/personal-organization/" rel="noopener noreferrer"&gt;Personal Organization&lt;/a&gt;, and &lt;a href="https://www.dsebastien.net/tag/productivity/" rel="noopener noreferrer"&gt;Zen Productivity&lt;/a&gt;. I also craft lovely digital products . You can learn more about my projects &lt;a href="https://www.dsebastien.net/projects/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to follow my work, then &lt;a href="https://www.dsebastien.net/#/portal/signup" rel="noopener noreferrer"&gt;become a member&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to get to the next level?
&lt;/h2&gt;

&lt;p&gt;To embark on your Knowledge Management journey, consider investing in resources that will equip you with the tools and strategies you need. You can start by exploring the concepts and best practices with my &lt;a href="https://developassion.gumroad.com/l/knowledge-management-for-beginners" rel="noopener noreferrer"&gt;Knowledge Management course&lt;/a&gt; 🔥.&lt;/p&gt;

&lt;p&gt;Then, check out the &lt;a href="https://developassion.gumroad.com/l/obsidian-starter-kit" rel="noopener noreferrer"&gt;Obsidian Starter Kit&lt;/a&gt; and the &lt;a href="https://developassion.gumroad.com/l/obsidian-starter-course" rel="noopener noreferrer"&gt;accompanying video course&lt;/a&gt;. It will give you a rock-solid starting point for your note-taking and Knowledge Management efforts.&lt;/p&gt;

&lt;p&gt;If you want to take a more holistic approach, then the &lt;a href="https://developassion.gumroad.com/l/knowledge-worker-kit" rel="noopener noreferrer"&gt;Knowledge Worker Kit&lt;/a&gt; is for you. It covers PKM, but expands into productivity, personal organization, project/task management, and more: &lt;a href="https://developassion.gumroad.com/l/knowledge-worker-kit" rel="noopener noreferrer"&gt;https://developassion.gumroad.com/l/knowledge-worker-kit&lt;/a&gt;&lt;/p&gt;

</description>
      <category>writing</category>
      <category>pkm</category>
    </item>
    <item>
      <title>My current Indie Hacking toolkit</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Thu, 27 Jan 2022 21:39:25 +0000</pubDate>
      <link>https://dev.to/dsebastien/my-current-indie-hacking-toolkit-2fpd</link>
      <guid>https://dev.to/dsebastien/my-current-indie-hacking-toolkit-2fpd</guid>
      <description>&lt;p&gt;I thought I could share my current Indie Hacking toolkit. Hopefully, you'll find something interesting in here! A large portion of those tools can be used for free.&lt;/p&gt;

&lt;p&gt;Note that only a tiny fraction of those tools are necessary, depending on the business you create/run. Keep in mind that a toolbox is just something that contains a set of tools that you &lt;em&gt;might&lt;/em&gt; need. You don't have to pick them all at once. They're in your toolbox, and you can pick them up when you need to use them. Moreover, you don't need to get all of those at once. You can get new tools when you actually need those 🔧.&lt;/p&gt;

&lt;p&gt;Alright, let's go! 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  My favorite Personal Knowledge Management (PKM), note-taking &amp;amp; journaling tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PKM: Obsidian (&lt;a href="https://obsidian.md" rel="noopener noreferrer"&gt;https://obsidian.md&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Journaling: LogSeq (&lt;a href="https://logseq.com" rel="noopener noreferrer"&gt;https://logseq.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Shared knowledge, inventory, processes, etc: Notion (&lt;a href="https://www.notion.so" rel="noopener noreferrer"&gt;https://www.notion.so&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Capturing highlights: Readwise (&lt;a href="https://readwise.io" rel="noopener noreferrer"&gt;https://readwise.io&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Mind maps: Freemind (&lt;a href="http://freemind.sourceforge.net" rel="noopener noreferrer"&gt;http://freemind.sourceforge.net&lt;/a&gt;), Whimsical (&lt;a href="https://whimsical.com" rel="noopener noreferrer"&gt;https://whimsical.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My favorite productivity tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Time blocking and focus: focusd, our upcoming project (&lt;a href="https://focusd.app" rel="noopener noreferrer"&gt;https://focusd.app&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Time tracking: Clockify (&lt;a href="https://clockify.me" rel="noopener noreferrer"&gt;https://clockify.me&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Tasks: Trello (&lt;a href="https://trello.com" rel="noopener noreferrer"&gt;https://trello.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Calendar: Google Calendar&lt;/li&gt;
&lt;li&gt;Text expander: Espanso (&lt;a href="https://espanso.org" rel="noopener noreferrer"&gt;https://espanso.org&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;My time timer (&lt;a href="https://amzn.to/3AEU9Hx" rel="noopener noreferrer"&gt;https://amzn.to/3AEU9Hx&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;And my whiteboard of course!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My favorite software development tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;IDE: IntelliJ (Feels so much better to use than VS Code), VS Code (because it's useful too from time to time) + VS Code extension packs (&lt;a href="https://dsebastien.net/blog/2019-11-24-vs-code-extension-packs-to-boost-productivity" rel="noopener noreferrer"&gt;https://dsebastien.net/blog/2019-11-24-vs-code-extension-packs-to-boost-productivity&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;SCM: Git + Hub (&lt;a href="https://github.com/github/hub" rel="noopener noreferrer"&gt;https://github.com/github/hub&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Git GUI: GitKraken (&lt;a href="https://www.gitkraken.com/invite/jdXvWeMU" rel="noopener noreferrer"&gt;https://www.gitkraken.com/invite/jdXvWeMU&lt;/a&gt;). Very pleasing UI for Git, allowing to quickly add/remove hunks (my favorite feature of Git, along with rebase) (heads up: I'm an ambassador for them!)&lt;/li&gt;
&lt;li&gt;Source Code hosting, CI &amp;amp; CD: GitHub &amp;amp; Gitlab&lt;/li&gt;
&lt;li&gt;Code formatting: Prettier (&lt;a href="https://prettier.io" rel="noopener noreferrer"&gt;https://prettier.io&lt;/a&gt;) because we have better things to do than format code by hand or waste time comparing code style diffs&lt;/li&gt;
&lt;li&gt;Scripting &amp;amp; shell: Bash &amp;amp; ZSH, tmux&lt;/li&gt;
&lt;li&gt;Windows Subsystem for Linux (WSL): To feel right at home even on Windows&lt;/li&gt;
&lt;li&gt;ConEmu + Git Bash + Notepad++ when stuck in Windows-land, configured with a Quake-style dropdown terminal&lt;/li&gt;
&lt;li&gt;Linux Terminal: Tilda (main now), Yakuake (past) and Terminator (I'll be back...)&lt;/li&gt;
&lt;li&gt;Notepadqq on *nix&lt;/li&gt;
&lt;li&gt;User Story Maps and brainstorming: Miro (&lt;a href="https://www.miro.com" rel="noopener noreferrer"&gt;https://www.miro.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;UX &amp;amp; UI: Figma (&lt;a href="https://figma.com" rel="noopener noreferrer"&gt;https://figma.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Schemas: Diagram.net, Excalidraw (&lt;a href="https://excalidraw.com" rel="noopener noreferrer"&gt;https://excalidraw.com&lt;/a&gt;), Visual Paradigm Community Edition&lt;/li&gt;
&lt;li&gt;Logos: Logology (&lt;a href="https://www.logology.co" rel="noopener noreferrer"&gt;https://www.logology.co&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Documentation, knowledge base, processes, etc: Notion&lt;/li&gt;
&lt;li&gt;Lightshot for screenshots (Windows)&lt;/li&gt;
&lt;li&gt;Correcting mistyped commands: thefuck (&lt;a href="https://github.com/nvbn/thefuck" rel="noopener noreferrer"&gt;https://github.com/nvbn/thefuck&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Testing API calls: HTTPIE (&lt;a href="https://httpie.io" rel="noopener noreferrer"&gt;https://httpie.io&lt;/a&gt;) and Insomnia (&lt;a href="https://insomnia.rest" rel="noopener noreferrer"&gt;https://insomnia.rest&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;FTP &amp;amp; al: FileZilla (&lt;a href="https://filezilla-project.org/" rel="noopener noreferrer"&gt;https://filezilla-project.org/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Network analysis: WireShark (&lt;a href="https://www.wireshark.org" rel="noopener noreferrer"&gt;https://www.wireshark.org&lt;/a&gt;) and nmap&lt;/li&gt;
&lt;li&gt;tldr for avoiding wasting days in man pages (&lt;a href="https://tldr.sh" rel="noopener noreferrer"&gt;https://tldr.sh&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Installers: SDKMan (&lt;a href="https://sdkman.io" rel="noopener noreferrer"&gt;https://sdkman.io&lt;/a&gt;), Winget (&lt;a href="https://github.com/microsoft/winget-cli" rel="noopener noreferrer"&gt;https://github.com/microsoft/winget-cli&lt;/a&gt;), Homebrew (&lt;a href="https://brew.sh" rel="noopener noreferrer"&gt;https://brew.sh&lt;/a&gt;), Volta (&lt;a href="https://volta.sh" rel="noopener noreferrer"&gt;https://volta.sh&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Spotify (can't live without this one)&lt;/li&gt;
&lt;li&gt;f.lux to save my eyes (&lt;a href="https://justgetflux.com" rel="noopener noreferrer"&gt;https://justgetflux.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The Chrome Dev Tools and tons of extensions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My current tech stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Language: TypeScript&lt;/li&gt;
&lt;li&gt;Front-end: Next.js, maybe soon Remix&lt;/li&gt;
&lt;li&gt;UI: Tailwind&lt;/li&gt;
&lt;li&gt;Back-end: NestJS on my most recent project, really enjoyed the DX&lt;/li&gt;
&lt;li&gt;Monorepo: Nrwl NX (&lt;a href="https://nx.dev/" rel="noopener noreferrer"&gt;https://nx.dev/&lt;/a&gt;). Really can't live without this one&lt;/li&gt;
&lt;li&gt;State machines: XState (&lt;a href="https://xstate.js.org" rel="noopener noreferrer"&gt;https://xstate.js.org&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Immutability: Immer (&lt;a href="https://immerjs.github.io/immer" rel="noopener noreferrer"&gt;https://immerjs.github.io/immer&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;DB: PostgreSQL @ Supabase (or others), CouchDB&lt;/li&gt;
&lt;li&gt;Authentication: Auth0&lt;/li&gt;
&lt;li&gt;Infrastructure: Docker &amp;amp; Kubernetes, Minikube and microk8s for dev, kubectl/kubens (&lt;a href="https://github.com/ahmetb/kubectx" rel="noopener noreferrer"&gt;https://github.com/ahmetb/kubectx&lt;/a&gt;), Skaffold (&lt;a href="https://skaffold.dev" rel="noopener noreferrer"&gt;https://skaffold.dev&lt;/a&gt;), Dive (&lt;a href="https://github.com/wagoodman/dive" rel="noopener noreferrer"&gt;https://github.com/wagoodman/dive&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Hosting: DigitalOcean, Vercel, Netlify&lt;/li&gt;
&lt;li&gt;DNS: CloudFlare&lt;/li&gt;
&lt;li&gt;Certificates: LetsEncrypt, mkcert for dev (&lt;a href="https://github.com/FiloSottile/mkcert" rel="noopener noreferrer"&gt;https://github.com/FiloSottile/mkcert&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Reverse proxy: NGINX&lt;/li&gt;
&lt;li&gt;Analytics: Plausible (&lt;a href="https://plausible.io/sites" rel="noopener noreferrer"&gt;https://plausible.io/sites&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Mails: Mailgun (&lt;a href="https://www.mailgun.com" rel="noopener noreferrer"&gt;https://www.mailgun.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Integration: Zapier (&lt;a href="https://zapier.com" rel="noopener noreferrer"&gt;https://zapier.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;NoCode: Bubble (&lt;a href="https://bubble.io" rel="noopener noreferrer"&gt;https://bubble.io&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My favorite writing tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Grammar, typos and complexity: Grammarly (&lt;a href="https://app.grammarly.com" rel="noopener noreferrer"&gt;https://app.grammarly.com&lt;/a&gt;) and Hemingway (&lt;a href="https://hemingwayapp.com" rel="noopener noreferrer"&gt;https://hemingwayapp.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Alternatives: Rephrasely (&lt;a href="https://rephrasely.com" rel="noopener noreferrer"&gt;https://rephrasely.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Blogging: My own site, Medium, HashNode and DEV.to&lt;/li&gt;
&lt;li&gt;Fiction writing: Scrivener (&lt;a href="https://www.literatureandlatte.com/scrivener/overview" rel="noopener noreferrer"&gt;https://www.literatureandlatte.com/scrivener/overview&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where to find images and illustrations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Unsplash (&lt;a href="https://unsplash.com" rel="noopener noreferrer"&gt;https://unsplash.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Pexels (&lt;a href="https://www.pexels.com" rel="noopener noreferrer"&gt;https://www.pexels.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Kaboompics (&lt;a href="https://kaboompics.com" rel="noopener noreferrer"&gt;https://kaboompics.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;unDraw (&lt;a href="https://undraw.co" rel="noopener noreferrer"&gt;https://undraw.co&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Favicon (&lt;a href="https://realfavicongenerator.net" rel="noopener noreferrer"&gt;https://realfavicongenerator.net&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;The Noun Project (&lt;a href="https://thenounproject.com" rel="noopener noreferrer"&gt;https://thenounproject.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where to find fonts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;dafont (&lt;a href="https://www.dafont.com" rel="noopener noreferrer"&gt;https://www.dafont.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;FontSpace (&lt;a href="https://www.fontspace.com" rel="noopener noreferrer"&gt;https://www.fontspace.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Google Fonts (&lt;a href="https://fonts.google.com" rel="noopener noreferrer"&gt;https://fonts.google.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where I store my files
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Google Drive&lt;/li&gt;
&lt;li&gt;Synology NAS (DS1812+)&lt;/li&gt;
&lt;li&gt;Amazon S3&lt;/li&gt;
&lt;li&gt;Digital Ocean&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Remote backup services
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Backblaze (&lt;a href="https://www.backblaze.com" rel="noopener noreferrer"&gt;https://www.backblaze.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Amazon Glacier (I'm moving away though)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools you can use to find product and domain names
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Namecheap (&lt;a href="https://www.namecheap.com" rel="noopener noreferrer"&gt;https://www.namecheap.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Google domains (&lt;a href="https://domains.google.com" rel="noopener noreferrer"&gt;https://domains.google.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;DreamHost (&lt;a href="https://www.dreamhost.com" rel="noopener noreferrer"&gt;https://www.dreamhost.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Domain.garden (&lt;a href="https://domain.garden" rel="noopener noreferrer"&gt;https://domain.garden&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Domainr (&lt;a href="https://domainr.com" rel="noopener noreferrer"&gt;https://domainr.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Namelix (&lt;a href="https://namelix.com" rel="noopener noreferrer"&gt;https://namelix.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Namae (&lt;a href="https://namae.dev" rel="noopener noreferrer"&gt;https://namae.dev&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I use to check social handles availability
&lt;/h2&gt;

&lt;p&gt;Social handle availability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NameCheckr (&lt;a href="https://www.namecheckr.com" rel="noopener noreferrer"&gt;https://www.namecheckr.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I use to find UI inspiration
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Dribbble (&lt;a href="https://dribbble.com" rel="noopener noreferrer"&gt;https://dribbble.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools you can use to look for existing trademarks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;USPTO (&lt;a href="https://www.uspto.gov/trademarks/search" rel="noopener noreferrer"&gt;https://www.uspto.gov/trademarks/search&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;BOIP (&lt;a href="https://www.boip.int/en/entrepreneurs/trademarks" rel="noopener noreferrer"&gt;https://www.boip.int/en/entrepreneurs/trademarks&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;WIPO (&lt;a href="https://www3.wipo.int/branddb/en" rel="noopener noreferrer"&gt;https://www3.wipo.int/branddb/en&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools I use for SEO
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ahrefs (&lt;a href="https://ahrefs.com" rel="noopener noreferrer"&gt;https://ahrefs.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Wordtracker (&lt;a href="https://www.wordtracker.com" rel="noopener noreferrer"&gt;https://www.wordtracker.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Sitebulb (&lt;a href="https://sitebulb.com" rel="noopener noreferrer"&gt;https://sitebulb.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Keywords Everywhere (&lt;a href="https://keywordseverywhere.com" rel="noopener noreferrer"&gt;https://keywordseverywhere.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Keyword planner (&lt;a href="https://ads.google.com/aw/keywordplanner" rel="noopener noreferrer"&gt;https://ads.google.com/aw/keywordplanner&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Google Webmaster Tools&lt;/li&gt;
&lt;li&gt;SEM Rush (&lt;a href="https://www.semrush.com" rel="noopener noreferrer"&gt;https://www.semrush.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Detailed SEO Extension (&lt;a href="https://chrome.google.com/webstore/detail/detailed-seo-extension/pfjdepjjfjjahkjfpkcgfmfhmnakjfba" rel="noopener noreferrer"&gt;https://chrome.google.com/webstore/detail/detailed-seo-extension/pfjdepjjfjjahkjfpkcgfmfhmnakjfba&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ahrefs SEO Toolbar (&lt;a href="https://ahrefs.com/seo-toolbar" rel="noopener noreferrer"&gt;https://ahrefs.com/seo-toolbar&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Linked Data vocabularies (&lt;a href="https://schema.org" rel="noopener noreferrer"&gt;https://schema.org&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Google Schema Markup Testing Tool (&lt;a href="https://developers.google.com/search/docs/advanced/structured-data" rel="noopener noreferrer"&gt;https://developers.google.com/search/docs/advanced/structured-data&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools I use to follow trends
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Google Trends (&lt;a href="https://trends.google.com/trends" rel="noopener noreferrer"&gt;https://trends.google.com/trends&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Exploding topics (&lt;a href="https://explodingtopics.com" rel="noopener noreferrer"&gt;https://explodingtopics.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Pinterest Trends (&lt;a href="https://trends.pinterest.com" rel="noopener noreferrer"&gt;https://trends.pinterest.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Subreddit Stats (&lt;a href="https://subredditstats.com/" rel="noopener noreferrer"&gt;https://subredditstats.com/&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools I use for CRM, Invoicing, etc
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Odoo (&lt;a href="https://www.odoo.com" rel="noopener noreferrer"&gt;https://www.odoo.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools I use to create landing pages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Carrd (&lt;a href="https://carrd.co" rel="noopener noreferrer"&gt;https://carrd.co&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Services to host and serve images
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cloudinary (&lt;a href="https://cloudinary.com" rel="noopener noreferrer"&gt;https://cloudinary.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Password management tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;KeePass (yes, I'm old school)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solutions for online banking and payments
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Wise&lt;/li&gt;
&lt;li&gt;PayPal&lt;/li&gt;
&lt;li&gt;Stripe (&lt;a href="https://stripe.com" rel="noopener noreferrer"&gt;https://stripe.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools to sell infoproducts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Gumroad (&lt;a href="https://www.gumroad.com):" rel="noopener noreferrer"&gt;https://www.gumroad.com):&lt;/a&gt; great because it acts as the Merchant of Record (MoR)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for publishing newsletters (free and paid)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Revue (&lt;a href="https://www.getrevue.co" rel="noopener noreferrer"&gt;https://www.getrevue.co&lt;/a&gt;) because of its Twitter integration&lt;/li&gt;
&lt;li&gt;ConvertKit (&lt;a href="https://convertkit.com" rel="noopener noreferrer"&gt;https://convertkit.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools to create online polls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Typeform (&lt;a href="https://www.typeform.com" rel="noopener noreferrer"&gt;https://www.typeform.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools to create Slide decks (😂)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Excalideck (&lt;a href="https://excalideck.com" rel="noopener noreferrer"&gt;https://excalideck.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for video recording
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Loom (&lt;a href="https://www.loom.com" rel="noopener noreferrer"&gt;https://www.loom.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Screencasts: Camtasia&lt;/li&gt;
&lt;li&gt;Use DSRL as a Webcam: Sparkocam (&lt;a href="https://sparkosoft.com/sparkocam" rel="noopener noreferrer"&gt;https://sparkosoft.com/sparkocam&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove background: XSplit VCam&lt;/li&gt;
&lt;li&gt;Record on phone: Filmic Pro (&lt;a href="https://play.google.com/store/apps/details?id=com.filmic.filmicpro" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.filmic.filmicpro&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for video editing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Adobe Premiere Pro&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for image editing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Minimize images: TinyPNG (&lt;a href="https://tinypng.com" rel="noopener noreferrer"&gt;https://tinypng.com&lt;/a&gt;) and ImageMagick (&lt;a href="https://imagemagick.org" rel="noopener noreferrer"&gt;https://imagemagick.org&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Resize/convert images: ImageMagick (&lt;a href="https://imagemagick.org" rel="noopener noreferrer"&gt;https://imagemagick.org&lt;/a&gt;) and Paint.net (&lt;a href="https://www.getpaint.net" rel="noopener noreferrer"&gt;https://www.getpaint.net&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Create animated GIFs: ScreenToGIF (&lt;a href="https://www.screentogif.com" rel="noopener noreferrer"&gt;https://www.screentogif.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Process photos: Adobe Lightroom&lt;/li&gt;
&lt;li&gt;Have some 2D fun: Adobe Photoshop and Gimp (&lt;a href="https://www.gimp.org" rel="noopener noreferrer"&gt;https://www.gimp.org&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Create/edit SVGs: Figma (vector drawing tools are awesome!) and InkScape (&lt;a href="https://inkscape.org" rel="noopener noreferrer"&gt;https://inkscape.org&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Create illustrations: Canva (&lt;a href="https://www.canva.com" rel="noopener noreferrer"&gt;https://www.canva.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for 3D modeling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Blender (&lt;a href="https://www.blender.org" rel="noopener noreferrer"&gt;https://www.blender.org&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for audio recording
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Audacity (&lt;a href="https://www.audacityteam.org" rel="noopener noreferrer"&gt;https://www.audacityteam.org&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for streaming
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;StreamLabs OBS (&lt;a href="https://streamlabs.com" rel="noopener noreferrer"&gt;https://streamlabs.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Communication tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Twitter&lt;/li&gt;
&lt;li&gt;Discord, Slack, Microsoft Teams&lt;/li&gt;
&lt;li&gt;Calls: Zoom&lt;/li&gt;
&lt;li&gt;Book meetings: Calendly (&lt;a href="https://calendly.com" rel="noopener noreferrer"&gt;https://calendly.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Instant messaging: Telegram&lt;/li&gt;
&lt;li&gt;Work &amp;amp; projects: LinkedIn, Polywork with a custom domain (&lt;a href="https://updates.dsebastien.net" rel="noopener noreferrer"&gt;https://updates.dsebastien.net&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools for audience building
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;FeedHive (&lt;a href="https://feedhive.io" rel="noopener noreferrer"&gt;https://feedhive.io&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;TweetDeck (&lt;a href="https://tweetdeck.twitter.com" rel="noopener noreferrer"&gt;https://tweetdeck.twitter.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;BlackMagic (trial for now) (&lt;a href="https://blackmagic.so" rel="noopener noreferrer"&gt;https://blackmagic.so&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;SparkToro (&lt;a href="https://sparktoro.com" rel="noopener noreferrer"&gt;https://sparktoro.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools and sites for staying up to date
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;My Twitter lists (&lt;a href="https://twitter.com/dSebastien/lists" rel="noopener noreferrer"&gt;https://twitter.com/dSebastien/lists&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Feedly (&lt;a href="https://feedly.com/" rel="noopener noreferrer"&gt;https://feedly.com/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Various podcasts (including the IH podcast)&lt;/li&gt;
&lt;li&gt;Hacker News (&lt;a href="https://news.ycombinator.com" rel="noopener noreferrer"&gt;https://news.ycombinator.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;ProductHunt (&lt;a href="https://www.producthunt.com" rel="noopener noreferrer"&gt;https://www.producthunt.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Communities that support Indie Hackers and tools for community building/management
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Rosie Sherry's wonderful Indiependent Community (&lt;a href="https://gumroad.com/a/249779315/GoImj" rel="noopener noreferrer"&gt;https://gumroad.com/a/249779315/GoImj&lt;/a&gt; — full disclosure, I'm a member AND an affiliate)&lt;/li&gt;
&lt;li&gt;Indie Worldwide (&lt;a href="https://indieworldwide.co" rel="noopener noreferrer"&gt;https://indieworldwide.co&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;IndieHackers of course ;-)&lt;/li&gt;
&lt;li&gt;Circle (&lt;a href="https://circle.so" rel="noopener noreferrer"&gt;https://circle.so&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Luma (&lt;a href="https://lu.ma" rel="noopener noreferrer"&gt;https://lu.ma&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Butter (&lt;a href="https://www.butter.us" rel="noopener noreferrer"&gt;https://www.butter.us&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In this article, I've listed many of the tools in my toolbox. There are some more, but those are the main ones. You don't have to feel overwhelmed or intimidated by this list. You probably don't need many of those. There are an infinity of tools, but we should only care about those we really need. Don't bring more tools in your life than you need to.&lt;/p&gt;

&lt;p&gt;That's it for today! ✨&lt;/p&gt;

&lt;h2&gt;
  
  
  About Sébastien
&lt;/h2&gt;

&lt;p&gt;Hello everyone! I'm Sébastien Dubois. I'm an author, founder, and CTO. I write books and articles about programming (TypeScript, Web, React, Angular, NestJS, etc), personal knowledge management, personal organization, and productivity.&lt;/p&gt;

&lt;p&gt;If you've enjoyed this article then subscribe to my newsletter: &lt;a href="https://newsletter.dsebastien.net" rel="noopener noreferrer"&gt;https://newsletter.dsebastien.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can follow me on Twitter: &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;https://twitter.com/dSebastien&lt;/a&gt; 🐦&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to think logically</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Sun, 16 Jan 2022 09:15:56 +0000</pubDate>
      <link>https://dev.to/dsebastien/how-to-think-logically-4h7p</link>
      <guid>https://dev.to/dsebastien/how-to-think-logically-4h7p</guid>
      <description>&lt;p&gt;One of the most important skills for knowledge workers is &lt;em&gt;logical thinking/reasoning&lt;/em&gt;. It's of course also true for software crafters. In this article, I'll explore what it means to think logically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftwv6nzkmtmvrsmh35stj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftwv6nzkmtmvrsmh35stj.jpg" alt="Thinking. Picture courtesy of Radu Florin (https://unsplash.com/@raduflorin)" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This content is part of &lt;a href="https://developassion.gumroad.com/l/DevConcepts-Volume-01-SoftwareCraft" rel="noopener noreferrer"&gt; the first volume&lt;/a&gt; of my &lt;a href="https://dev-concepts.dev" rel="noopener noreferrer"&gt;Dev Concepts series of books&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why are analytical skills important?
&lt;/h2&gt;

&lt;p&gt;Like our computers, our brains need to have enough "raw computing power". &lt;em&gt;Analytical skills&lt;/em&gt; help us to analyze/process and understand information faster. These include logical reasoning, data analysis, critical thinking, research, forecasting, problem-solving, data mining, reporting, organization, etc.&lt;/p&gt;

&lt;p&gt;The good news is that analytical skills are not innate. You can train yours, and improve.&lt;/p&gt;

&lt;p&gt;Useful references:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=uV18HsZRdk0" rel="noopener noreferrer"&gt;4 steps process&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=mRsiPFJG2u4" rel="noopener noreferrer"&gt;Analytical skills everyone should know&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What does it mean to think logically?
&lt;/h2&gt;

&lt;p&gt;Thinking logically is all about thinking in &lt;em&gt;steps&lt;/em&gt;. It's about going from ideas/observations/facts, making assumptions, validating those, and reaching conclusions. Again and again, and again.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cogito, ergo sum. I think, therefore I am. —René Descartes, Discourse on the Method&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Logical thinking is mainly related to the left side of the brain, which is all about logic and control (facts, patterns, words, language, perception, order, time, comprehension, etc). The right side of the brain is more closely related to emotions, creativity, and looking at the big picture. We all have a dominant side; either more logical or more creative. But, luckily, we can strengthen both sides at will; logical thinking is certainly not an innate talent. We can all learn and improve.&lt;/p&gt;

&lt;p&gt;Programming is a great way to improve your reasoning skills because you'll need to apply logical thinking &lt;em&gt;all the time&lt;/em&gt;. While designing your system, while coding it, and of course while troubleshooting issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arguments, premises, ideas, claims, logical reasoning, deduction, induction and abduction
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Dubito, ergo cogito, ergo sum. I doubt, therefore I think, therefore I am. — Antoine Léonard Thomas&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The following argument terminology diagram, taken from &lt;a href="https://en.wikipedia.org/wiki/Argument" rel="noopener noreferrer"&gt;Wikipedia&lt;/a&gt; is quite interesting and worth exploring a bit:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgum436tw1jx7uex4q6jk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgum436tw1jx7uex4q6jk.png" alt="Argument terminology used in logic. Source: https://en.wikipedia.org/wiki/Argument" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Based on &lt;em&gt;arguments&lt;/em&gt;/&lt;em&gt;premises&lt;/em&gt;/ideas/claims, each having a truth value (i.e., true or false), we try to reach conclusions using &lt;em&gt;deduction&lt;/em&gt; or &lt;em&gt;induction&lt;/em&gt;. When using deduction, the conclusions follow from the premises. When using induction, the conclusions follow from the premises... with some level of certainty.&lt;/p&gt;

&lt;p&gt;With deduction, our conclusions may be valid or invalid, demonstrating sound or unsound reasoning. With induction, the reasoning may be cogent or uncogent, depending on the level of certainty of our reasoning. I just wanted to mention those because both deduction and induction are super useful "tools" for going from issues to solutions, and it's useful to pay attention to which kind of reasoning we're using while solving problems.&lt;/p&gt;

&lt;p&gt;Often, we also use &lt;em&gt;abduction&lt;/em&gt; to find solutions. Abduction is basically inference to reach the most likely conclusion. We often use abduction while developing because we lack time to verify our conclusions and instead have to use our gut feeling. Another reason to use abduction is also the cheapness of trying things out. More often than not, we can pick a good candidate solution and try it out quickly (i.e., we use empirical evidence). Abduction works better and better as you get more experienced in a specific domain. For instance, once you'll have solved a thousand bugs with a specific technology stack, then your deduction/abduction skills should be much stronger in that domain.&lt;/p&gt;

&lt;p&gt;Let's take an example: I've used Java and Spring for a number of years. When I start a Spring-based application, and it crashes with an error message, it doesn't take me long to figure out what's going on and make good guesses about potential solutions.&lt;/p&gt;

&lt;p&gt;Whatever problem you're working on, make sure to evaluate the pros and cons and to test-drive solutions to increase confidence in your reasoning&lt;/p&gt;

&lt;p&gt;The stronger your logical thinking skills get, the faster you'll identify inconsistencies, and errors in reasoning. This will help you to better judge arguments, ideas and proposals, and influence things for the best. Critical thinking is very important in this regard.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The definition of insanity is doing the same thing over and over again, but expecting different results. — Albert Einstein&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In IT, we often think we're going crazy when we're in front of a problem that we don't understand. But it's all right (really :p). Software systems are deterministic by nature, so there's almost always a very logical explanation; it's just that there are so many inter-related parts that problems quickly get complicated to understand.&lt;/p&gt;

&lt;p&gt;Useful references:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Descartes-Error-Emotion-Reason-Human-ebook/dp/B00AFY2XVK?tag=dsebastien00-20" rel="noopener noreferrer"&gt;Descartes' Error: Emotion, Reason, and the Human Brain&lt;/a&gt; by Antonio R. Damasio&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Logic" rel="noopener noreferrer"&gt;Logic @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cleverism.com/skills-and-tools/logical-thinking" rel="noopener noreferrer"&gt;Logical thinking @ Cleverism&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lifehack.org/594032/logical-thinking" rel="noopener noreferrer"&gt;Logical thinking @ Lifehack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Logical_reasoning" rel="noopener noreferrer"&gt;Logical reasoning @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Modus_ponens" rel="noopener noreferrer"&gt;Modus ponens @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Deductive_reasoning" rel="noopener noreferrer"&gt;Deductive reasoning @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Inductive_reasoning" rel="noopener noreferrer"&gt;Inductive reasoning @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Abductive_reasoning" rel="noopener noreferrer"&gt;Abductive reasoning @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Inference" rel="noopener noreferrer"&gt;Inference @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Rule_of_inference" rel="noopener noreferrer"&gt;Rule of inference @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Argument" rel="noopener noreferrer"&gt;Argument terminology @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Empirical_evidence" rel="noopener noreferrer"&gt;Empirical evidence @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Cogito,_ergo_sum" rel="noopener noreferrer"&gt;Cogito ergo sum @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Memory_improvement" rel="noopener noreferrer"&gt;Memory improvement @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In this article, I've discussed the importance of cultivating a logical thought process. Logic is key for knowledge workers in general and software crafters in particular. That is why I encourage you to train and improve your analytical skills.&lt;/p&gt;

&lt;p&gt;In future articles, I'll explore different approaches we can use to analyze and solve problems in a consistent and systematic way.&lt;/p&gt;

&lt;p&gt;That's it for today! ✨&lt;/p&gt;

&lt;h2&gt;
  
  
  About Sébastien
&lt;/h2&gt;

&lt;p&gt;Hello everyone! I'm Sébastien Dubois. I'm an author, founder, and CTO. I write books and articles about programming (TypeScript, Web, React, Angular, NestJS, etc), personal knowledge management, personal organization, and productivity.&lt;/p&gt;

&lt;p&gt;If you've enjoyed this article then subscribe to my newsletter: &lt;a href="https://newsletter.dsebastien.net" rel="noopener noreferrer"&gt;https://newsletter.dsebastien.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can follow me on Twitter: &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;https://twitter.com/dSebastien&lt;/a&gt; 🐦&lt;/p&gt;

</description>
      <category>thinking</category>
      <category>programming</category>
      <category>beginners</category>
      <category>problemsolving</category>
    </item>
    <item>
      <title>Why craftsmanship matters</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Wed, 03 Nov 2021 07:54:13 +0000</pubDate>
      <link>https://dev.to/dsebastien/why-craftsmanship-matters-30p6</link>
      <guid>https://dev.to/dsebastien/why-craftsmanship-matters-30p6</guid>
      <description>&lt;p&gt;This is a guest post written by &lt;a href="https://twitter.com/yennickt" rel="noopener noreferrer"&gt;Yennick Trevels&lt;/a&gt;, a fellow &lt;a href="https://digitalbuff.dev/" rel="noopener noreferrer"&gt;software craftsman&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As customers we like beautiful products, quality products that can last for years, products we don't have to worry about and which just work. These products typically come with a higher cost attached to them, but we're willing to pay for it because the product or service makes our life easier or more colourful. But sometimes we get tempted into buying the cheaper product, or going with the cheaper contractor. When we do, it typically already starts with the ordering process that isn't giving us the advice that we actually need, but we decide to order anyway. Time goes by, and we haven't received an update on the ordering status, so we decide to call them. Turns out they forgot to send the product but promise they will send it immediately. The day of delivery is finally there and we open the package. The result is pretty lifeless, grey, but does the job...until it starts to break down after a month of use. It's then when we ask ourselves why we didn't go for the product or service that clearly was better in terms of quality, made by a craftsman but more expensive.&lt;/p&gt;

&lt;p&gt;Clearly being a craftsman is important, but it requires a long-term consistent investment. So why should you start investing in it early to reap the benefits later, and what are these benefits exactly?&lt;/p&gt;

&lt;h2&gt;
  
  
  What is craftsmanship
&lt;/h2&gt;

&lt;p&gt;Craftsmanship, the art of efficiently making beautiful and high quality products. It has been around for thousands of years. Used by all kinds of professions to differentiate themselves from their competitors, for their love of the craft, to reach customers that enjoy well-crafted products and to find a market where price isn't the only determining factor.&lt;/p&gt;

&lt;p&gt;It starts with learning to use the right tools for the job and knowing how to select these tools. Truly understanding what makes a great tool and even knowing how to create the necessary tooling. Without a good set of tools, it is hard to be efficient and to deliver that consistent quality.&lt;br&gt;
Learning to craft a quality product, to iterate on it and harden it. To research new concepts that give you insights into how to craft even better products, concepts which will last for a long time.&lt;br&gt;
But being a craftsman doesn't stop at the technical level, it's also about being an efficient communicator and planner. Knowing how to gather requirements, how to plan the work and communicate progress.&lt;/p&gt;

&lt;p&gt;Craftsmanship is a never-ending effort to improve one's craft.&lt;/p&gt;

&lt;h2&gt;
  
  
  It differentiates you
&lt;/h2&gt;

&lt;p&gt;Software engineering is a highly sought after profession, but still a competitive one. If you just look at the gruelling interview processes some companies employ, you better stand out from the crowd. But how do you stand out?&lt;br&gt;
Craftsmen of old practiced their craft in a public area, for all to see how they start from a raw material and end up with a product that is tuned to perfection. People would notice, would be convinced of the quality and be glad to pay a premium. Word of mouth would spread quickly, providing a solid stream of work for the craftsman.&lt;/p&gt;

&lt;p&gt;As software engineers we can do the same, by sharing our knowledge and building software in the open. It's our way of displaying our skills, our craftsmanship, to the world. When you build valuable software and share knowledge, word about your work will spread more easily (via Twitter, in companies, in communities, ...). It all works towards creating trust, without people actually having worked with you. It makes you the easier choice over someone else.&lt;/p&gt;

&lt;p&gt;While working in the open certainly helps to differentiate you, it's the private work that also slowly but steadily builds your reputation. When working on projects you will quickly notice those developers who are underperforming, and those that have clearly invested in their craft and stand out from the crowd. It's the last category of developers who will generate a positive word of mouth. When people move on to other companies and that company is looking to hire more people, their names will come up. Don't underestimate the number of people you work with over the years and how this can quickly snowball in building a positive name in the industry. When others are willing to vouch for you, it's probably the most effective way to dodge those gruelling interview rounds.&lt;/p&gt;

&lt;h2&gt;
  
  
  It makes you reliable
&lt;/h2&gt;

&lt;p&gt;As a customer, the last thing you want to do is having to micro-manage your contractor. Double-checking the quality they deliver, following-up with their progress, or even having to tell them how to do their job. You paid them (good) money to solve a problem of yours, so that you don't have to worry about it.&lt;br&gt;
This is where your qualities as a craftsman come in, which make you a reliable partner to work with. Customers can expect solid advice, a quality product and clear communication. You become the go-to worry-free solution for customers who value their time and are willing to pay for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  It builds your network
&lt;/h2&gt;

&lt;p&gt;Guilds have always been a place where craftsman gather, share their knowledge and help each other. In our field of software engineering we come together in user groups and meetups, both online and offline. Consistently being involved in and contributing to those groups will build a relationship with the other members, it builds trust. If you then also display proficiency in your craft and willingness to help others, they will also gladly send work your way.&lt;/p&gt;

&lt;h2&gt;
  
  
  It makes you of higher value
&lt;/h2&gt;

&lt;p&gt;When you don't consistently invest in your craft, you won't have anything to compete on except price. This makes you a low-margin commodity. A craftsman on the other hand has a unique set of skills or products for sale, which makes price less of a factor. As a craftsman it's easier to build a loyal and returning customer base, because they won't simply compare you on price. The consistent output of quality results also makes it so that price increases won't make your customers switch to the competition as easily, because that has now become a high-risk action (do they really want to risk worse results for a slight price increase?!).&lt;br&gt;
And yes, you can &lt;a href="https://www.nationalgeographic.com/adventure/article/140729-dinosaur-coprolite-paleontology-dung-fossil-auction" rel="noopener noreferrer"&gt;sell a turd with good marketing and make a lot of money&lt;/a&gt;, but it's much easier to market and sell the qualities of a well-crafted product or service.&lt;/p&gt;

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

&lt;p&gt;In-depth articles on how to improve one's craftsmanship can be easily seen as "something fluffy that developers waste time on" when you don't look at the bigger picture. But those small gems of knowledge keep adding up and when applied consistently are part of making you a craftsman. They not only feed our inner geek, but have a long-lasting impact on our career as a software developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  About Yennick Trevels
&lt;/h2&gt;

&lt;p&gt;Yennick has been practicing and applying his craft as a software developer for over 15 years in various roles (junior-senior software engineer, consultant, technical team lead, self-employed developer) for various companies (startups, enterprise companies, government). He's now sharing his knowledge on building a career in software engineering on &lt;a href="https://digitalbuff.dev" rel="noopener noreferrer"&gt;digitalbuff.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That’s it for today!&lt;/p&gt;

&lt;p&gt;PS: check out the &lt;a href="https://dev-concepts.dev/" rel="noopener noreferrer"&gt;Dev Concepts collection of e-books&lt;/a&gt;, &lt;a href="https://join.slack.com/t/softwarecrafterstalk/shared_invite/zt-umgx3v06-4rtJ20PXz867GTPzCk1zeQ" rel="noopener noreferrer"&gt;join the Software Crafters community&lt;/a&gt;, the &lt;a href="https://dsebastien.net/pkm-community" rel="noopener noreferrer"&gt;Personal Knowledge Management community&lt;/a&gt;, and &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;come say hi on Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>codequality</category>
      <category>craftsmanship</category>
    </item>
    <item>
      <title>Getting started with Svelte, Tailwind, and Nrwl NX</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Sun, 17 Oct 2021 23:21:26 +0000</pubDate>
      <link>https://dev.to/dsebastien/getting-started-with-svelte-tailwind-and-nrwl-nx-17fc</link>
      <guid>https://dev.to/dsebastien/getting-started-with-svelte-tailwind-and-nrwl-nx-17fc</guid>
      <description>&lt;p&gt;In this article, I'll show you how to create a &lt;a href="https://svelte.dev/" rel="noopener noreferrer"&gt;Svelte&lt;/a&gt; application with &lt;a href="https://nx.dev/" rel="noopener noreferrer"&gt;Nrwl NX&lt;/a&gt; and how install/configure &lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxngglbsm3as7qevdnkj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxngglbsm3as7qevdnkj.jpg" alt="Photo by Ferenc Almasi on Unsplash" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tailwindcss.com/" rel="noopener noreferrer"&gt;Tailwind&lt;/a&gt; is more popular than ever. If you've been following me, you know that I'm a huge fan. Recently I've started exploring Svelte, and wanted to know how to combine it with Tailwind. Not only that, but I also wanted to use Nrwl NX. This is a summary of my findings.&lt;/p&gt;

&lt;p&gt;This is a short, but very practical article. If you hope to learn how Svelte/Tailwind work and why you should use those then this article is not for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Battleplan
&lt;/h2&gt;

&lt;p&gt;First, we'll create a &lt;a href="https://nx.dev/" rel="noopener noreferrer"&gt;Nrwl NX&lt;/a&gt; workspace to structure our project.&lt;/p&gt;

&lt;p&gt;Once we're done, we'll install the &lt;a href="https://nxext.dev/docs/svelte/overview/" rel="noopener noreferrer"&gt;Svelte plugin&lt;/a&gt; into the workspace, and we'll use it to create our Svelte application.&lt;/p&gt;

&lt;p&gt;Then, we'll install Tailwind, and a few supporting tools (e.g., PostCSS and autoprefixer). After that, we'll configure Tailwind, PostCSS, and our Svelte application. Finally, we'll load Tailwind's base styles in our application, and we'll add some styling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the Nx workspace
&lt;/h2&gt;

&lt;p&gt;NX is a really powerful tool that I use in most of my projects. NX supports many frameworks and programming languages.&lt;/p&gt;

&lt;p&gt;Creating an Nx workspace is as simple as running the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx create-nx-workspace &amp;lt;workspace name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokypd5y0vzur8pyzuysj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokypd5y0vzur8pyzuysj.gif" alt="Create NX workspace" width="900" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the moment, NX does not natively support Svelte, so we need to create an empty workspace. The &lt;code&gt;create-nx-workspace&lt;/code&gt; command should generate the following structure for you:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw4dpibd1zxd0zghbw3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxw4dpibd1zxd0zghbw3k.png" alt="NX workspace contents" width="250" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the standard structure for Nx workspaces. The key elements are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;apps&lt;/code&gt; folder, which will later contain our Svelte application&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;libs&lt;/code&gt; folder, which we can use to host parts of our monorepo to make those easily reusable across projects&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;nx.json&lt;/code&gt; file, which is the configuration file of Nx&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;package.json&lt;/code&gt; file in which we can manage our dependencies&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;workspace.json&lt;/code&gt; file, which is the configuration file for our Nx workspace&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installing the Svelte plugin for Nx
&lt;/h2&gt;

&lt;p&gt;Now that our workspace is created, we need to install the &lt;a href="https://nxext.dev/docs/svelte/overview/" rel="noopener noreferrer"&gt;Svelte community plugin&lt;/a&gt;, created and maintained by &lt;a href="https://twitter.com/dominik_pieper" rel="noopener noreferrer"&gt;Dominik Pieper&lt;/a&gt;. This plugin makes it possible to create and build Svelte applications in a Nrwl NX workspace. You can find the official documentation &lt;a href="https://nxext.dev/docs/svelte/overview/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For this example, I'll use &lt;code&gt;npm&lt;/code&gt;, but feel free to use &lt;code&gt;yarn&lt;/code&gt; if you prefer. Installing the plugin is quite &lt;a href="https://nxext.dev/docs/svelte/installation/" rel="noopener noreferrer"&gt;straightforward&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install @nxext/svelte --save&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once done, we have access to the schematics and builders.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the Svelte application
&lt;/h2&gt;

&lt;p&gt;The Svelte plugin for NX includes &lt;a href="https://nxext.dev/docs/svelte/schematics/application" rel="noopener noreferrer"&gt;a schematic&lt;/a&gt; that we will use to create our Svelte application:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx nx g @nxext/svelte:app app_name&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This command will generate the application and store it inside the &lt;code&gt;apps/&amp;lt;app_name&amp;gt;&lt;/code&gt; folder. Pick any name you fancy.&lt;/p&gt;

&lt;p&gt;Inside that folder, you should find the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpv2f3wyyuimvk0i2qr3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpv2f3wyyuimvk0i2qr3.png" alt="Svelte application structure" width="243" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code of the application can be found under &lt;code&gt;src&lt;/code&gt;, while the assets (e.g., images, fonts, global styles, etc) will go into the &lt;code&gt;public&lt;/code&gt; folder.&lt;/p&gt;

&lt;p&gt;Notice the &lt;code&gt;svelte.config.cjs&lt;/code&gt; file. This is the configuration file for Svelte. We'll adapt it in a minute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Svelte application configuration
&lt;/h2&gt;

&lt;p&gt;In the previous section, I've mentioned the &lt;code&gt;svelte.config.cjs&lt;/code&gt; file that you should find under &lt;code&gt;apps/&amp;lt;app name&amp;gt;&lt;/code&gt;. Let's take a look at it:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;All this file does is export a configuration object for the build of our Svelte application. By default, it uses the &lt;a href="https://github.com/sveltejs/svelte-preprocess" rel="noopener noreferrer"&gt;svelte-preprocess&lt;/a&gt; package, which is a preprocessor for Svelte providing support for PostCSS, SCSS, TypeScript, and much more.&lt;/p&gt;

&lt;p&gt;The question is: how is that file used by the build system? To answer that question, we need to look at the &lt;code&gt;workspace.json&lt;/code&gt; file at the root of the NX workspace. It has been updated by the Svelte plugin for NX:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;As you can see, the different targets (e.g., build and serve) use a specific executor: &lt;code&gt;@nxext/svelte:build&lt;/code&gt;, which is provided by the Svelte plugin for NX. That executor supports &lt;a href="https://nxext.dev/docs/svelte/builder/build" rel="noopener noreferrer"&gt;a number of options&lt;/a&gt;. In the example above, we care about the &lt;code&gt;svelteConfig&lt;/code&gt; setting, which defines the configuration file to use for Svelte.&lt;/p&gt;

&lt;p&gt;When we build the Svelte application using NX, here's what happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NX loads the &lt;code&gt;workspace.json&lt;/code&gt; file to know about the different applications and libraries&lt;/li&gt;
&lt;li&gt;It executes the requested operation (let's imagine a build of the Svelte app)&lt;/li&gt;
&lt;li&gt;When the Svelte app is being built, NX knows which executor to launch to take care of the grunt's work&lt;/li&gt;
&lt;li&gt;The Svelte NX plugin executor loads its configuration and notices the &lt;code&gt;svelteConfig&lt;/code&gt; option. It loads the corresponding file (i.e., &lt;code&gt;svelte.config.cjs&lt;/code&gt;), and updates its default build configuration accordingly&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installing Tailwind
&lt;/h2&gt;

&lt;p&gt;To install Tailwind, we need to add a few packages to our project, as explained in the &lt;a href="https://tailwindcss.com/docs/installation" rel="noopener noreferrer"&gt;official documentation&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -D tailwindcss@latest postcss@latest autoprefixer@latest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We'll also install a few additional ones:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -D postcss-import@latest postcss-preset-env@latest node-sass@latest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next up we'll configure Tailwind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring Tailwind
&lt;/h2&gt;

&lt;p&gt;To configure Tailwind, create a file called &lt;code&gt;tailwind.config.js&lt;/code&gt; at the root of the NX workspace with the following contents:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;This configuration enables the &lt;a href="https://javascript.plainenglish.io/why-tailwind-just-in-time-mode-is-a-game-changer-and-how-to-use-it-right-now-dubois-s%C3%A9bastien-182db2e64e26" rel="noopener noreferrer"&gt;JIT mode of Tailwind&lt;/a&gt; and configures PurgeCSS properly. If you want to know more, check out the &lt;a href="https://tailwindcss.com/docs/configuration" rel="noopener noreferrer"&gt;official documentation of Tailwind&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now, we need to configure PostCSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring PostCSS
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://postcss.org/" rel="noopener noreferrer"&gt;PostCSS&lt;/a&gt; is a CSS processor that Tailwind relies on to do its magic.&lt;/p&gt;

&lt;p&gt;The details about PostCSS are out of scope for this article, but let me explain something anyway. One thing you need to understand is that PostCSS can be used to define a &lt;em&gt;processing pipeline&lt;/em&gt; for CSS code. The very first step of that pipeline receives the CSS as you wrote it, and processes it in some way. Then, the next step receives the result of the previous one and applies its own processing. And so on and so on. Now that you know this, you'll understand that the order of the elements in the configuration below &lt;em&gt;does&lt;/em&gt; matter.&lt;/p&gt;

&lt;p&gt;Go ahead and create a file called &lt;code&gt;postcss.config.js&lt;/code&gt; at the root of the NX workspace, with the following contents:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;What does this do?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, we apply the &lt;code&gt;postcss-import&lt;/code&gt; &lt;a href="https://github.com/postcss/postcss-import#readme" rel="noopener noreferrer"&gt;plugin&lt;/a&gt;, which adds support for the &lt;code&gt;@import&lt;/code&gt; syntax in our CSS code&lt;/li&gt;
&lt;li&gt;Second, we enable Tailwind and its &lt;a href="https://tailwindcss.com/docs/using-with-preprocessors" rel="noopener noreferrer"&gt;support for CSS nesting&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Third, we enable the &lt;code&gt;postcss-preset-env&lt;/code&gt; plugin, which adds support for &lt;a href="https://github.com/csstools/postcss-preset-env" rel="noopener noreferrer"&gt;many other cool things&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alright, our CSS processing pipeline is configured!&lt;/p&gt;

&lt;h2&gt;
  
  
  Loading our PostCSS configuration
&lt;/h2&gt;

&lt;p&gt;By default, the Svelte plugin for Nrwl NX uses its own Svelte preprocessing configuration. To make sure that our PostCSS configuration is loaded, we need to adapt the Svelte configuration file that we saw earlier.&lt;/p&gt;

&lt;p&gt;Open up the &lt;code&gt;svelte.config.cjs&lt;/code&gt; file under &lt;code&gt;apps/&amp;lt;app name&amp;gt;&lt;/code&gt; and adapt it as follows:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;As you can see, all we did was pass a configuration to the &lt;code&gt;sveltePreprocess&lt;/code&gt; method and define the &lt;code&gt;postcss&lt;/code&gt; configuration, associating it with an empty object. We only did this to replace the default &lt;code&gt;postcss&lt;/code&gt; configuration included by the Svelte NX plugin. This ensures that our own PostCSS configuration is loaded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Load Tailwind in the Svelte application
&lt;/h2&gt;

&lt;p&gt;We're almost ready to start using Tailwind in our code.&lt;/p&gt;

&lt;p&gt;The next thing we need to do is load the default styles of Tailwind. To do so, go ahead and create a file called &lt;code&gt;Tailwind.svelte&lt;/code&gt; under &lt;code&gt;apps/&amp;lt;app name&amp;gt;/src&lt;/code&gt;, with the following contents:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;There are a few things to notice here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We have marked the styles as &lt;code&gt;global&lt;/code&gt; to make sure that those get applied on the global scope&lt;/li&gt;
&lt;li&gt;We have set &lt;code&gt;lang="postcss"&lt;/code&gt; to state that we're using PostCSS&lt;/li&gt;
&lt;li&gt;We have loaded Tailwind's global styles using the &lt;code&gt;@tailwind&lt;/code&gt; directive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, we need to load and use our Tailwind component inside the &lt;code&gt;App&lt;/code&gt; component. Open the &lt;code&gt;src/&amp;lt;app name&amp;gt;/src/App.svelte&lt;/code&gt; file and adapt the contents as follows:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;What we did here is simply import the &lt;code&gt;Tailwind.svelte&lt;/code&gt; file, and use it.&lt;/p&gt;

&lt;p&gt;We're done with the configuration! Great.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running the application
&lt;/h2&gt;

&lt;p&gt;To run the application, we can now use the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx nx serve &amp;lt;app_name&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I recommend getting used to the &lt;code&gt;nx&lt;/code&gt; command, which is the &lt;a href="https://nx.dev/l/r/getting-started/nx-cli" rel="noopener noreferrer"&gt;CLI of Nrxl NX&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you're anything like me, then you might want to update the &lt;code&gt;scripts&lt;/code&gt; section of your &lt;code&gt;package.json&lt;/code&gt; file:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;The names of the script should be self-descriptive. Just replace &lt;code&gt;&amp;lt;app_name&amp;gt;&lt;/code&gt; with the application name you've chosen.&lt;/p&gt;

&lt;p&gt;To run our application, we can now use &lt;code&gt;npm start&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To learn more, make sure to look at the &lt;a href="https://nx.dev/l/r/getting-started/nx-cli" rel="noopener noreferrer"&gt;NX CLI documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Alright, we can now start playing with Tailwind!&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Tailwind
&lt;/h2&gt;

&lt;p&gt;Let's look at a few ways we can use Tailwind in our Svelte application. Edit the &lt;code&gt;App.svelte&lt;/code&gt; file again as follows:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;In this example, we've used Tailwind in three different ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inside the HTML template, we've used &lt;code&gt;class="..."&lt;/code&gt; to modify the styles of an element using Tailwind. This is the approach you can find in most Tailwind examples out there&lt;/li&gt;
&lt;li&gt;Inside the &lt;code&gt;style&lt;/code&gt; tag, we've defined global styles by using the &lt;code&gt;:global&lt;/code&gt; scope &lt;a href="https://svelte.dev/docs#style" rel="noopener noreferrer"&gt;supported by Svelte&lt;/a&gt;, and we've defined our styles using the &lt;code&gt;@apply&lt;/code&gt; directive&lt;/li&gt;
&lt;li&gt;Inside the &lt;code&gt;style&lt;/code&gt; tag, we've defined a class called &lt;code&gt;example&lt;/code&gt;, in which we've also used &lt;code&gt;@apply&lt;/code&gt;. This approach creates locally scoped styles that only exist for the current component.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you look at the application now, it should look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6szsltku91epawzpi7aj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6szsltku91epawzpi7aj.png" alt="Example" width="800" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Template
&lt;/h2&gt;

&lt;p&gt;If you're in a hurry, then you can use the template I've prepared and published on Github with the results of this experiment. You can find it here: &lt;a href="https://github.com/dsebastien/svelte-tailwind-nx-template" rel="noopener noreferrer"&gt;https://github.com/dsebastien/svelte-tailwind-nx-template&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;In this article, I've explained how to create a Svelte application using Nrwl NX. I've also covered how to add Tailwind support. Hopefully, this will have taught you a few things about how to configure Svelte applications, PostCSS and Tailwind.&lt;/p&gt;

&lt;p&gt;That’s it for today!&lt;/p&gt;

&lt;p&gt;PS: check out the &lt;a href="https://dev-concepts.dev/" rel="noopener noreferrer"&gt;Dev Concepts collection of e-books&lt;/a&gt;, &lt;a href="https://join.slack.com/t/softwarecrafterstalk/shared_invite/zt-umgx3v06-4rtJ20PXz867GTPzCk1zeQ" rel="noopener noreferrer"&gt;join the Software Crafters community&lt;/a&gt;, the &lt;a href="https://dsebastien.net/pkm-community" rel="noopener noreferrer"&gt;Personal Knowledge Management community&lt;/a&gt;, and &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;come say hi on Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>svelte</category>
      <category>tailwindcss</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Problem-solving 101</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Sat, 11 Sep 2021 08:04:51 +0000</pubDate>
      <link>https://dev.to/dsebastien/problem-solving-101-31i2</link>
      <guid>https://dev.to/dsebastien/problem-solving-101-31i2</guid>
      <description>&lt;p&gt;In this article, I want to discuss problem-solving, one of the key skills that software developers need to master. As a software developer, you'll face problems &lt;em&gt;all day long&lt;/em&gt;. IT in general and software development in particular is really all about solving problems. If you don't enjoy doing that, then you might not like software development all that much.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnshspixju4y7m3hek7p3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnshspixju4y7m3hek7p3.jpg" alt="Picture courtesy of https://unsplash.com/@alandelacruz4" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This content is part of &lt;a href="https://gum.co/DevConcepts-Part-01-SoftwareCraft" rel="noopener noreferrer"&gt; the first volume&lt;/a&gt; of my &lt;a href="https://dev-concepts.dev" rel="noopener noreferrer"&gt;Dev Concepts series of books&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Early days
&lt;/h2&gt;

&lt;p&gt;In your early days as a developer, you'll spend &lt;em&gt;a lot&lt;/em&gt; of time fighting against compilers, interpreters and linters. Why is this expression invalid? What is wrong with that function? What type should be used here? etc. Over time, once you overcome those learning difficulties, you'll get to bang your hand against the wall for more "important" issues such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How should we call this variable?&lt;/li&gt;
&lt;li&gt;Haven't I imported that module?&lt;/li&gt;
&lt;li&gt;Why is that value null at this point?&lt;/li&gt;
&lt;li&gt;Shouldn't this be true at this point?&lt;/li&gt;
&lt;li&gt;What was I doing ten minutes ago?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just kidding! More seriously though, because of the constant trial and error process that you'll go through over the years, you'll face and resolve the same kinds of issues over and over again, albeit in different forms. It'll gradually become easier and easier for you to solve those issues. But new variants will emerge, always surprising you. Like viruses, there are always new problem variants.&lt;/p&gt;

&lt;p&gt;Also, the more experienced you become, the more complex the problems you'll have to solve (the most complex ones always being about team collaboration). The other fun part as your experience grows is that you'll be able to anticipate problems and avoid some of them, for instance by creating more solid architectures/designs from the beginning.&lt;/p&gt;

&lt;p&gt;When you are constantly facing issues, there are two main possible reactions: go mad or find it amusing, and move forward with the resolution of the new puzzle at hand. Hopefully, you'll be part of the second group. Sometimes, it'll take you a few minutes to solve an issue, and it won't trouble you much. But sometimes, issues will take hours or even days to be fixed, which can be hard on your morale, especially when you feel the pressure. There are also problems that you won't be able to crack and for which you and your teams will have to find external help, or workarounds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem-solving cycle and approaches
&lt;/h2&gt;

&lt;p&gt;Problem-solving can be tackled using a systematic approach. For instance, with the &lt;em&gt;problem-solving cycle&lt;/em&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhy7lhuo2wjc0gss13ouw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhy7lhuo2wjc0gss13ouw.png" alt="Problem-solving cycle" width="800" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recognize the problem&lt;/strong&gt;: Before anything else, we need to see that there's a problem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define the problem&lt;/strong&gt;: We need to clarify what needs to be solved precisely&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Develop a strategy to fix it&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organize information&lt;/strong&gt;: What information do we have about the problem, what do we have to figure out, etc&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track progress&lt;/strong&gt;: If we don't track our progress, then we risk spending too much time/energy. By evaluating progress, we'll be able to devise/try other strategies if needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluate found solutions (correctness, efficiency, etc)&lt;/strong&gt;: Especially useful if there are multiple solutions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remember&lt;/strong&gt;: Keep track of previously encountered problems, and their solutions to avoid having to find the same solutions again in the future&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While analyzing problems, we can create an &lt;a href="https://en.wikipedia.org/wiki/Argument_map" rel="noopener noreferrer"&gt;&lt;em&gt;argument map&lt;/em&gt;&lt;/a&gt;, which is a useful tool to visualize the &lt;em&gt;problem space&lt;/em&gt;. We can also make use of many other &lt;a href="https://en.wikipedia.org/wiki/Problem_structuring_methods" rel="noopener noreferrer"&gt;problem structuring methods&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Reformulating a problem is also very useful to make sure that it is clearly understood. Once clearly articulated, it should be simplified/reduced as much as possible. The goal is to simplify, focus on the essential and remove all the noise.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Brainstorming&lt;/strong&gt;: Identify many ideas and potential solutions without judging those immediately&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analogies&lt;/strong&gt;: Compare with other similar problems&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Divide and conquer&lt;/strong&gt;: Break down the problem in smaller, more easily solvable parts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abstraction&lt;/strong&gt;: Solve the problem on paper/in thought/on a prototype before solving it on the real system&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hypothesis validation&lt;/strong&gt;: Validate parts of the solution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Root cause analysis&lt;/strong&gt;: Identify the real source of the problem&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elimination&lt;/strong&gt;: Rework or even eliminate a system or subsystem to make problems disappear altogether. Sometimes, eliminating the source of a problem is the fastest way to move forward&lt;/li&gt;
&lt;li&gt;etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For instance, we can create an &lt;a href="https://en.wikipedia.org/wiki/Issue_tree" rel="noopener noreferrer"&gt;issue tree&lt;/a&gt;, which visualizes the possible solutions to a problem and explore those separately. For root cause analysis, we can use the &lt;a href="https://en.wikipedia.org/wiki/Five_whys" rel="noopener noreferrer"&gt;five whys&lt;/a&gt; technique and/or &lt;a href="https://en.wikipedia.org/wiki/Ishikawa_diagram" rel="noopener noreferrer"&gt;Ishikawa diagrams&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We can also use &lt;a href="https://en.wikipedia.org/wiki/Mind_map" rel="noopener noreferrer"&gt;&lt;em&gt;mind maps&lt;/em&gt;&lt;/a&gt;, which are one of the more powerful tools at our disposal to organize information/knowledge and analyze concepts/ideas. I'm a huge fan of mind maps. Mind maps are also very useful to use when trying to solve problems.&lt;/p&gt;

&lt;p&gt;In general, visualizations and &lt;a href="https://en.wikipedia.org/wiki/Diagrammatic_reasoning" rel="noopener noreferrer"&gt;diagrammatic reasoning&lt;/a&gt; helps &lt;em&gt;a lot&lt;/em&gt;, so don't hesitate to read articles/books about visualization techniques; it &lt;em&gt;will&lt;/em&gt;, prove useful.&lt;/p&gt;

&lt;p&gt;As professional problem solvers, there's a true &lt;em&gt;pleasure&lt;/em&gt; when we finally get to the "Aha!" moment (also known as the &lt;a href="https://en.wikipedia.org/wiki/Eureka_effect" rel="noopener noreferrer"&gt;Eureka effect&lt;/a&gt;); when the puzzle is finally solved. It only lasts an instant (because the next problem is already in front of you), but that moment is &lt;em&gt;bliss&lt;/em&gt;. Sometimes the solution will come out of the blue. Many developers have already gone to sleep with an issue on their mind, and with a solution at hand in the morning.&lt;/p&gt;

&lt;p&gt;In IT, problems often have many possible solutions. Of course, some are better than others, but it's not always obvious.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Ideal-Problem-Solver-Improving-Creativity/dp/0716722046?tag=dsebastien00-20" rel="noopener noreferrer"&gt;The Ideal Problem Solver: A Guide for Improving Thinking, Learning, and Creativity&lt;/a&gt; by John D. Bransford and Barry S. Stein&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Problem_solving" rel="noopener noreferrer"&gt;Problem solving&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Cracked-problems-solutions-strategy-consultants-ebook/dp/B07DMFYH2R?tag=dsebastien00-20" rel="noopener noreferrer"&gt;Cracked it!: How to solve big problems&lt;/a&gt; by Bernard Garrette, Corey Phelps and Olivier Sibony&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Issue_tree" rel="noopener noreferrer"&gt;Issue tree&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Five_whys" rel="noopener noreferrer"&gt;Five whys&lt;/a&gt; technique&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Ishikawa_diagram" rel="noopener noreferrer"&gt;Ishikawa diagrams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Mind_map" rel="noopener noreferrer"&gt;Mind maps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Mind-Map-Mastery-Complete-Learning/dp/1786781417?tag=dsebastien00-20" rel="noopener noreferrer"&gt;Mind Map Mastery&lt;/a&gt; by Tony Buzan&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Diagrammatic_reasoning" rel="noopener noreferrer"&gt;Diagrammatic reasoning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Eureka_effect" rel="noopener noreferrer"&gt;Eureka effect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/How-Solve-Aspect-Mathematical-Method/dp/069116407X?tag=dsebastien00-20" rel="noopener noreferrer"&gt;How to Solve It&lt;/a&gt; by G. Polya&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/dp/0141033576?tag=dsebastien00-20" rel="noopener noreferrer"&gt;Thinking, Fast and Slow&lt;/a&gt; by Daniel Kahneman&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In this article, I've discussed problem-solving skills, which are key for all software crafters. I've covered the problem-solving cycle, as well as a number of approaches you can take to tackle the most complex problems. Make sure to check out the references that I've shared above, as those contain many more keys to help you solve the fascinating puzzles you'll be confronted with.&lt;/p&gt;

&lt;p&gt;Problem-solving does require a particular mindset/thought process, an analytical mind, and specific skills that I'll cover in later articles.&lt;/p&gt;

&lt;p&gt;What is your favorite approach to solve problems?&lt;/p&gt;

&lt;p&gt;That’s it for today!&lt;/p&gt;

&lt;p&gt;PS: If you want to learn more about software/Web/product development, then &lt;a href="https://dsebastien.net/news" rel="noopener noreferrer"&gt;subscribe to my newsletter&lt;/a&gt;, &lt;a href="https://dev-concepts.dev/" rel="noopener noreferrer"&gt;check out my Dev Concepts books&lt;/a&gt;, &lt;a href="https://join.slack.com/t/softwarecrafterstalk/shared_invite/zt-umgx3v06-4rtJ20PXz867GTPzCk1zeQ" rel="noopener noreferrer"&gt;join the Software Crafters community&lt;/a&gt;, and &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;come say hi on Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>problemsolving</category>
      <category>software</category>
      <category>programming</category>
      <category>coding</category>
    </item>
    <item>
      <title>Quality vs user satisfaction</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Fri, 03 Sep 2021 15:37:30 +0000</pubDate>
      <link>https://dev.to/dsebastien/quality-vs-user-satisfaction-4hah</link>
      <guid>https://dev.to/dsebastien/quality-vs-user-satisfaction-4hah</guid>
      <description>&lt;p&gt;Software crafters care &lt;em&gt;a lot&lt;/em&gt; about the quality of their work, but business realities are generally much more important.&lt;/p&gt;

&lt;p&gt;As a software crafter, you'll often be faced with the following conundrum: how to deliver the best possible quality results, hence satisfying the crafter in you, while pleasing end users, who usually want high-quality results yesterday?&lt;/p&gt;

&lt;p&gt;Let's explore this subject together. This content is part of &lt;a href="https://gum.co/DevConcepts-Part-01-SoftwareCraft" rel="noopener noreferrer"&gt; the first volume&lt;/a&gt; of my &lt;a href="https://dev-concepts.dev" rel="noopener noreferrer"&gt;Dev Concepts series of books&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2kb98tdl19jchnepwwj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2kb98tdl19jchnepwwj.jpg" alt="Tension" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tradeoffs and responsibilities
&lt;/h2&gt;

&lt;p&gt;It's &lt;em&gt;always&lt;/em&gt; a question of &lt;em&gt;balance&lt;/em&gt;. Software crafters should generally strive for better quality but, always have to make tradeoffs. Satisfying user needs and respecting hard deadlines always has priority, but it doesn't mean that you should always give up on quality.&lt;/p&gt;

&lt;p&gt;As a professional, you should dare to question business choices and deadlines. You should also provide information and bring clarity. Your customers deserve to know about their options, the tradeoffs involved and need to be guided towards better choices. Moreover, quality is &lt;em&gt;also&lt;/em&gt; closely related to user satisfaction, even if it isn't always obvious.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software quality facets
&lt;/h2&gt;

&lt;p&gt;Software quality is composed of both &lt;em&gt;external&lt;/em&gt; and &lt;em&gt;internal&lt;/em&gt; elements. External quality is usually much more tangible for end users. For instance, users of a system only see the user interface and its behavior. If the quality of the user interface deteriorates, then it'll be discovered rather quickly. Internal quality has more to do with the &lt;em&gt;robustness&lt;/em&gt; of the system and its &lt;em&gt;reliability&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If you cut corners on the internal quality, then it will also impact end users, but in different and seemingly less obvious ways. They'll receive incorrect results, or calculations will take much longer than they should, etc. The system might crash unexpectedly, and the defect rate might increase drastically. It might also take longer and longer to deliver new features over time, as more and more time is spent fixing bugs and putting out fires. Most importantly, quick and dirty can sometimes have dramatic consequences (e.g., reputation &amp;amp; financial) on businesses.&lt;/p&gt;

&lt;h2&gt;
  
  
  High expectations
&lt;/h2&gt;

&lt;p&gt;Interestingly, our expectations towards IT systems are heavily influenced by the applications we use on a daily basis in our lives (e.g., Gmail, Office 365, etc). This translates into high expectations from customers, who don't understand (or care for that matter!) about the complexity of achieving the same results as the biggest organizations in the world. Chances are that you are not working for Google, Microsoft, Facebook, Amazon, Apple, and the like. This means that you will have limited resources at your disposal, varying skill sets, and obviously tradeoffs to make. Make sure to inform customers about the complexity of their requests, and bring them "back down to earth".&lt;/p&gt;

&lt;h2&gt;
  
  
  The constant tension between quality and cost
&lt;/h2&gt;

&lt;p&gt;We are all used to the quality vs cost relationship. Often in real life, if we pay less, then we get tend to get lower quality, and vice versa. This is not necessarily true with software. There are always shades of gray. Let's consider a few more dimensions to better understand the possible solutions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3elflpn3ygnm9hl8k87.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3elflpn3ygnm9hl8k87.png" alt="Quality vs Cost" width="253" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As shown on this wonderful "flower diagram" (yes, just made that up), there are a few closely related concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope&lt;/strong&gt;: We can decide to develop fewer features, or to simplify the ones on the roadmap of the project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time&lt;/strong&gt;: We can change the timeline to be able to reach the required quality level while delivering the expected features&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality&lt;/strong&gt;: We can decide to make quality trade-offs and thus reduce the (immediate) costs while keeping the initial timeline&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risks&lt;/strong&gt;: We can accept taking more risks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whichever approach you pick, &lt;em&gt;all&lt;/em&gt; the dimensions will be impacted. For example, reducing the available time by 10 while keeping the same scope will most probably have a catastrophic impact on quality (and project risks). Reducing quality will increase risks, time to completion and thus overall costs, etc.&lt;/p&gt;

&lt;p&gt;Clear and timely communication is &lt;em&gt;critical&lt;/em&gt; for success. Before deciding to lower internal or external quality to meet deadlines, make sure to understand the possible tradeoffs, and to explain those to stakeholders so that conscious decisions can be taken by the business. A &lt;a href="https://en.wikipedia.org/wiki/SWOT_analysis" rel="noopener noreferrer"&gt;Strengths Weaknesses Opportunities Threats (SWOT)&lt;/a&gt; analysis can be useful for this.&lt;/p&gt;

&lt;p&gt;NOTE: As a software crafter, you should also "fight" when needed so that quality is taken into consideration and is part of the project planning, just like other considerations. For instance, if there are code improvements/cleanups to take care of, then you should justify and defend those. Never remain silent about quality and security risks.&lt;/p&gt;

&lt;p&gt;One way to help end users to realize that quality is not perfect yet is to make the user interface less polished. The idea is that if you deliver a top-notch user interface, then users will feel like they've received complete &amp;amp; high-quality software, independently of what's under the hood.&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/SWOT_analysis" rel="noopener noreferrer"&gt;SWOT analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.martinfowler.com/bliki/TradableQualityHypothesis.html" rel="noopener noreferrer"&gt;Tradable quality hypothesis&lt;/a&gt; by Martin Fowler&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Principles-Quality-Costs-Implementation-Use/dp/087389443X?tag=dsebastien00-20" rel="noopener noreferrer"&gt;Principles of Quality Costs, Implementation, and Use&lt;/a&gt; by Jack Campanella&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In this article, I've quickly explored the different tradeoffs around software quality and user satisfaction. It's a tough debate because reality is complex, and each situation is specific. My main point is that you shouldn't always just cut corners and lower the quality of your work just to meet deadlines. Sometimes it's better to stand up, analyze the pros and cons, the risks involved, and help your customers make decisions that they won't regret later on.&lt;/p&gt;

&lt;p&gt;What is your opinion about this topic? How do you deal with pressure to deliver and the tension it creates?&lt;/p&gt;

&lt;p&gt;That’s it for today!&lt;/p&gt;

&lt;p&gt;PS: If you want to learn tons of other cool things about product/software/Web development, then &lt;a href="https://dev-concepts.dev/" rel="noopener noreferrer"&gt;check out the Dev Concepts e-books&lt;/a&gt;, &lt;a href="https://dsebastien.net/news" rel="noopener noreferrer"&gt;subscribe to my newsletter&lt;/a&gt;, and &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;come say hi on Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>codequality</category>
      <category>priorities</category>
      <category>tradeoffs</category>
    </item>
    <item>
      <title>An online community for Software Crafters</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Wed, 25 Aug 2021 13:02:54 +0000</pubDate>
      <link>https://dev.to/dsebastien/an-online-community-for-software-crafters-2590</link>
      <guid>https://dev.to/dsebastien/an-online-community-for-software-crafters-2590</guid>
      <description>&lt;p&gt;There's now an online community dedicated to Software Crafters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wkuvlaenoolsyuga8xx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wkuvlaenoolsyuga8xx.jpg" alt="Craft" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  One more community? Why?
&lt;/h2&gt;

&lt;p&gt;I've decided to create an online community for Software Crafters. Here's what it's all about!&lt;/p&gt;

&lt;p&gt;There are countless communities out there, on Slack, Discord, Reddit, etc. But I don't think that there are many dedicated to people who consider themselves as "artisans of code".&lt;/p&gt;

&lt;p&gt;I want to create that space because I'm sure that I'm not alone and that many people share the same passion for IT and Software Development.&lt;/p&gt;

&lt;p&gt;Considering IT &amp;amp; software development as a craft doesn't mean focusing on code quality more than business outcomes, on the contrary. But it does mean not losing sight of technical debt, and the risks/costs it incurs.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to join?
&lt;/h2&gt;

&lt;p&gt;If you think of yourself as a crafter, then come join us on Slack, where we'll discuss best practices around code quality, testing, security, software design, IT architecture, and more!&lt;/p&gt;

&lt;p&gt;Here's the invite link: &lt;a href="https://join.slack.com/t/softwarecrafterstalk/shared_invite/zt-umgx3v06-4rtJ20PXz867GTPzCk1zeQ" rel="noopener noreferrer"&gt;https://join.slack.com/t/softwarecrafterstalk/shared_invite/zt-umgx3v06-4rtJ20PXz867GTPzCk1zeQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PS: If you want to learn tons of other cool things about product/software/Web development, then &lt;a href="https://dev-concepts.dev/" rel="noopener noreferrer"&gt;check out the Dev Concepts series&lt;/a&gt;, &lt;a href="https://dsebastien.net/news" rel="noopener noreferrer"&gt;subscribe to my newsletter&lt;/a&gt;, and &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;come say hi on Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>codequality</category>
    </item>
    <item>
      <title>What is a software crafter?</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Wed, 18 Aug 2021 15:23:53 +0000</pubDate>
      <link>https://dev.to/dsebastien/what-is-a-software-crafter-5fab</link>
      <guid>https://dev.to/dsebastien/what-is-a-software-crafter-5fab</guid>
      <description>&lt;p&gt;Even if we use terms such as &lt;em&gt;software engineering&lt;/em&gt; and &lt;em&gt;software architecture&lt;/em&gt;, software development is really much more of an art form than a science.&lt;/p&gt;

&lt;p&gt;This content is part of &lt;a href="https://gum.co/DevConcepts-Part-01-SoftwareCraft" rel="noopener noreferrer"&gt; the first volume&lt;/a&gt; of my &lt;a href="https://dev-concepts.dev" rel="noopener noreferrer"&gt;Dev Concepts series of books&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe5lqp1qr11huysul2b8u.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe5lqp1qr11huysul2b8u.jpg" alt="Craft" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Software Crafter?
&lt;/h2&gt;

&lt;p&gt;Simply put, the software craft is about &lt;em&gt;&lt;em&gt;more&lt;/em&gt;&lt;/em&gt; than just software development and software engineering:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyusn5wsoy2f9bc15864.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdyusn5wsoy2f9bc15864.png" alt="Software development/engineering vs Software craft" width="368" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After 15+ years in the field, software development feels much more like an art than like a science to me. In IT, each problem has an almost infinite number of solutions. Some are better than others, and it takes experience to know. To me, that's the fun part of the job. Every day is filled with new interesting puzzles to solve. It can be frustrating at times, but when approached with the right mindset, it can be a real pleasure.&lt;/p&gt;

&lt;p&gt;I personally consider myself as a software crafter. Much more so than as a software developer/engineer. The word &lt;em&gt;craft&lt;/em&gt; has a very &lt;em&gt;profound&lt;/em&gt; meaning for me.&lt;/p&gt;

&lt;p&gt;I consider it as a combination of the following definitions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skill in planning, making, or executing&lt;/li&gt;
&lt;li&gt;Make or produce with care, skill, or ingenuity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a crafter, I don't &lt;em&gt;just&lt;/em&gt; want to be a coder, generating endless lines of meaningless code. I don't want to be a generator of one-line wizardry that nobody can understand. Writing working software is simply &lt;em&gt;not enough&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I don't want to deliver solutions that are very costly or even impossible to maintain. I don't want to create solutions that don't deliver real value to their users. Collaborating with customers is not enough for me.&lt;/p&gt;

&lt;p&gt;That is why I've signed the &lt;a href="https://manifesto.softwarecraftsmanship.org" rel="noopener noreferrer"&gt;&lt;em&gt;Manifest for Software Craftsmanship&lt;/em&gt;&lt;/a&gt;, along with at least 30K other crafters.&lt;/p&gt;

&lt;p&gt;What I want is to be a &lt;em&gt;professional&lt;/em&gt;, part of a community of professionals. What I want is to craft &lt;em&gt;&lt;em&gt;beautiful code&lt;/em&gt;&lt;/em&gt; that stands the test of time. I want to help raise the bar higher for everyone. I also want to help others learn the craft. Finally, I want to build &lt;em&gt;partnerships&lt;/em&gt; with my customers, so that I can continually bring value to them. If you're familiar with the &lt;a href="https://agilemanifesto.org" rel="noopener noreferrer"&gt;Agile Manifesto&lt;/a&gt;, then I would say that I value the craft over simple "execution". I've called my company &lt;a href="https://developassion.be" rel="noopener noreferrer"&gt;DeveloPassion&lt;/a&gt; precisely because I have a passion for software development and want to leverage that passion to build &lt;em&gt;great&lt;/em&gt; software for my customers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Your work is craft, and if you hone your ability and apply it with respect and care, then like the skilled wheelwright you can generate meaning in the daily efforts of your professional life. Cal Newport, Deep Work&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Creating what I consider to be well-crafted (or beautiful) code/software requires careful thought and attention, which in turn requires &lt;em&gt;sharp&lt;/em&gt; skills. Developers that don't consider software development as a craft won't put in the efforts required to fully grasp what they're doing and will be satisfied with much lower quality results.&lt;/p&gt;

&lt;p&gt;Considering software development/engineering as a craft has an important impact on what you want to deliver: not only value, but also quality, maintainability, beauty, and even &lt;em&gt;elegance&lt;/em&gt;. Beautiful/high-quality software is multi-faceted, as I explain in Dev Concepts. Approaching software development as a craft also deeply influences the pride that you can feel in your work.&lt;/p&gt;

&lt;p&gt;I want to encourage each and every single one of you to really consider software development/engineering as a craft rather than as a "production" job, and to raise the bar higher by aiming for quality over quantity. Crafters should also be able to communicate effectively with customers, and subject matter experts. Professionals understand that strong communication skills are &lt;em&gt;paramount&lt;/em&gt; for success. It's not only a question of execution! The net results will be happier customers, less costly developments, and pride for achieving great results.&lt;/p&gt;

&lt;p&gt;Becoming a software crafter is not easy. In the next articles, I'll tell you everything I know about how to become one. It takes time and effort, but you can aim to become one on the very first day; simply by truly &lt;em&gt;caring&lt;/em&gt;. Caring not only for the end result, but for everything in and around the development (i.e., tooling, methodology, approach, collaboration, documentation, etc).&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://manifesto.softwarecraftsmanship.org" rel="noopener noreferrer"&gt;Manifesto for Software Craftsmanship&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master-ebook/dp/B003GCTQAE?tag=dsebastien-20" rel="noopener noreferrer"&gt;The Pragmatic Programmer: From Journeyman to Master&lt;/a&gt; by Andrew Hunt&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862?tag=dsebastien-20" rel="noopener noreferrer"&gt;Software Craftsmanship: The New Imperative&lt;/a&gt; by Mike Hendrickson&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Craftsman-Richard-Sennett/dp/0300151195?tag=dsebastien-20" rel="noopener noreferrer"&gt;The Craftsman&lt;/a&gt; by Richard Sennett&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Apprenticeship-Patterns-Guidance-Aspiring-Craftsman/dp/0596518382?tag=dsebastien-20" rel="noopener noreferrer"&gt;Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman&lt;/a&gt; by Dave Hoove and Adewale Oshineye&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/pulse/what-software-craftsmanship-david-max/" rel="noopener noreferrer"&gt;What is Software Craftsmanship&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.infoq.com/news/2008/08/manifesto-fifth-craftsmanship/" rel="noopener noreferrer"&gt;Craftsmanship - the Fifth Agile Manifesto Value?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://qz.com/work/1371151/what-happened-to-software-craftsmanship" rel="noopener noreferrer"&gt;What happened to Software Craftsmanship&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In this article, I've tried to share my vision of what it means to be a software crafter. It means different things to different people, but there's a core element to it: the constant focus on going above and beyond, and improving constantly.&lt;/p&gt;

&lt;p&gt;You can approach software development as a job, like any other, something that brings food on the table. At that's fine, really. But approaching this job as a craft will help you achieve better results, and take pride in your work.&lt;/p&gt;

&lt;p&gt;What is your opinion about this topic? Are you also a software crafter? Do you want to become one?&lt;/p&gt;

&lt;p&gt;That’s it for today!&lt;/p&gt;

&lt;p&gt;PS: If you want to learn tons of other cool things about product/software/Web development, then &lt;a href="https://dev-concepts.dev/" rel="noopener noreferrer"&gt;check out the Dev Concepts series&lt;/a&gt;, &lt;a href="https://dsebastien.net/news" rel="noopener noreferrer"&gt;subscribe to my newsletter&lt;/a&gt;, and &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;come say hi on Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>coding</category>
      <category>craft</category>
    </item>
    <item>
      <title>How to get started in IT and grow as a Software developer</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Sat, 14 Aug 2021 12:27:19 +0000</pubDate>
      <link>https://dev.to/dsebastien/how-to-get-started-in-it-and-grow-as-a-software-developer-2cg7</link>
      <guid>https://dev.to/dsebastien/how-to-get-started-in-it-and-grow-as-a-software-developer-2cg7</guid>
      <description>&lt;p&gt;In this article, I'll quickly describe a path that you can follow in order to discover/learn IT and Software development from scratch. I'll also discuss the different career paths that you can explore over time, based on your own interests and goals.&lt;/p&gt;

&lt;p&gt;This content is part of &lt;a href="https://gum.co/DevConcepts-Part-01-SoftwareCraft" rel="noopener noreferrer"&gt; the first volume&lt;/a&gt; of my &lt;a href="https://dev-concepts.dev" rel="noopener noreferrer"&gt;Dev Concepts series&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1bxx9bi6ld2mohelpyyy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1bxx9bi6ld2mohelpyyy.jpg" alt="Grow" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Let's start by taking a look at a simple overview of the different sub-domains of IT and software development that you can explore over the course of your career. There's more, but those are front and center:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fockrbuv5p7iiirzbiv54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fockrbuv5p7iiirzbiv54.png" alt="Roadmap" width="516" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, there's quite a lot. Enough actually to keep you busy and learning for a whole lifetime. The above diagram puts more emphasis on the Software Development part, which is why it is bigger. But rest assured that the other domains are as important, and at least as wide. You could in fact spend your whole career in any of those "sub-domains" of IT, and you would still be learning new things every single day.&lt;/p&gt;

&lt;p&gt;There's actually so much complexity and variety in IT that each of the sub-domains includes various job types. You could become a security specialist, focused on pentesting, or a malware specialist, a hardware hacker, a cloud security expert, an IT auditor, etc. Or you could work in IT architecture, and become a software architect, an infrastructure architect, a solution architect or even an enterprise architect. It's the same for most domains, really! This is actually one of the things that I enjoy the most about IT. There's so much to learn and do that you will &lt;em&gt;never&lt;/em&gt; get bored.&lt;/p&gt;

&lt;p&gt;It can feel daunting at first, but don't be scared. You can start small, learn the basics, grow at your own pace, and finally reach your dream job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where should I start?
&lt;/h2&gt;

&lt;p&gt;If you're just getting started with IT and Software development, then you should focus on a few core topics at first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Computer architecture&lt;/li&gt;
&lt;li&gt;Operating systems&lt;/li&gt;
&lt;li&gt;Coding basics&lt;/li&gt;
&lt;li&gt;General concerns (e.g., code quality and testing)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your goal shouldn't be to become an expert right away, but rather to get a bird's eye view over IT before diving into more specific subjects like front-end or back-end development. Many tutorials on the Web will immediately teach you about HTML, CSS and JavaScript, without helping you to see the bigger picture. Of course, you can take shortcuts to accelerate learning, but if you lack fundamental knowledge, then you'll have a hard time becoming a software crafter, and you'll have difficulties further down the road.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; You should get into the mindset of a software crafter right from the get go. Try to discover, understand and follow best practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where do I go from there?
&lt;/h2&gt;

&lt;p&gt;In the beginning, whether you choose to explore back-end or front-end development doesn't matter all that much. If you know which side you prefer to work in, then it's easier indeed, but both are as complex and as difficult to learn. They each have their specificities and attention points. Over time, if you're motivated enough, then you should jump over the fence and discover the other part. You might even try to go full-stack from the very beginning, but it'll probably take you more time to become really productive. The good news is that there is &lt;em&gt;a lot&lt;/em&gt; of overlap between back-end and front-end development.&lt;/p&gt;

&lt;p&gt;Whichever path you choose, &lt;strong&gt;security must always be on your mind&lt;/strong&gt;. It isn't an option. Security is a top priority, whether you, your team, team leader and/or organization realize it or not.&lt;/p&gt;

&lt;p&gt;As you gain confidence/understanding of the basics, you'll be able to dive into software design to improve the quality of your code, and help it stand the test of time.&lt;/p&gt;

&lt;p&gt;After a while, you should get (at least) a basic understanding of software architecture. Ideally, you should also learn more about solution architecture and enterprise architecture, as those are really impactful areas of the software world (especially so in larger organizations).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TIP:&lt;/strong&gt; Don't worry about the time it all takes. This is a journey. Not a sprint, but rather a marathon. Take your time and move forward, one step at a time.&lt;/p&gt;

&lt;p&gt;Another idea is to dive deeper into the functional or even business analysis sides to become a better partner for the end-users. As I've mentioned in my previous &lt;a href="https://javascript.plainenglish.io/what-is-the-difference-between-software-developers-engineers-coders-and-programmers-b4ee7eb23b66" rel="noopener noreferrer"&gt;article&lt;/a&gt;, depending on the organization you work in, you might have more or less opportunity (or need) to do this.&lt;/p&gt;

&lt;p&gt;Furthermore, growing more knowledgeable about IT infrastructure/operations, cloud computing and &lt;em&gt;DevSecOps&lt;/em&gt; will help you to contribute to the full spectrum of the application life cycle. Knowing how a system is deployed, how the infrastructure is configured is &lt;em&gt;very&lt;/em&gt; useful and people who want to get into technical leadership clearly need to understand that. I've personally decided to work for a few years in IT infrastructure so that I could dive much deeper into that area. Believe me, I've learned a ton. It was definitely challenging, but it was also super fun.&lt;/p&gt;

&lt;p&gt;You may also try to learn what you can about team/project/process management. Team organization is a fascinating subject in and of itself. Knowing about team/product/project management is incredibly useful, whether you're in charge or not. Most software is developed by teams made of humans, and the team dynamics have a &lt;em&gt;huge&lt;/em&gt; impact on what the team is able to deliver. Product management is also a very interesting area, where having a background in IT can help a lot.&lt;/p&gt;

&lt;p&gt;One thing to avoid is doing the exact same job for too long (unless it remains interesting/engaging/fun), because you'll stagnate, and you won't be challenged enough to learn new things. The same goes for staying on a legacy technical stack for too long, which can keep you too far away from the current job market, and make it much harder for you to find a new job. It's common knowledge that you should always expand your comfort zone. It's the only way forward in life ;-)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One can choose to go back toward safety or forward toward growth. Growth must be chosen again and again; fear must be overcome again and again. (Abraham Maslow)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;All of these steps can take you in various directions over time. You could become a software developer, a technical leader, a team manager, a front-end specialist, a business analyst, a security specialist, an IT architect, or even a Chief Technical Officer (CTO) if that's what you fancy. The possibilities are endless. You could also decide to specialize in a very specific niche domain. It's not my preference, but it's all up to you... and that's the cool part!&lt;/p&gt;

&lt;p&gt;The notion of &lt;em&gt;seniority&lt;/em&gt; is also of interest, but is really relative; it means different things to different people. Some people/organizations consider that seniority equals number of years, while that couldn't be further from the truth. To me, seniority is about both knowledge, &lt;em&gt;and&lt;/em&gt; experience. Both take time to acquire of course, but with motivation and dedication, one can learn much faster. Time alone is an awful indicator of seniority.&lt;/p&gt;

&lt;p&gt;Finally, independently of your evolution within the world of software development, you'll also have to choose between being an employee, a consultant, a freelancer, or even a mix of those. For instance, I'm currently a freelance IT coach/CTO and a part-time employee. One benefit of being a consultant/freelancer is that you'll &lt;em&gt;have to&lt;/em&gt; learn much faster; there's no choice, otherwise you won't be able to find/satisfy clients. You'll also get to discover various environments, teams and company cultures. Those experiences can help you grow much faster.&lt;/p&gt;

&lt;p&gt;Don't hesitate to revisit your choice over time too; what's true for you today might not be tomorrow, and change can be wonderful, and refreshing!&lt;/p&gt;

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

&lt;p&gt;In this article, I've told you about possible career paths in IT and software development. I've also given you a few pieces of advice about where to start, based on my own experience. Of course, this is just my opinion. I'm a generalist, not a specialist, so I see a lot of value in learning about many things. But being a specialist is also fine.&lt;/p&gt;

&lt;p&gt;In any case, it's your own career, so make your own choices. Just keep in mind that not choosing is also a choice. No matter what you choose, make sure to have fun!&lt;/p&gt;

&lt;p&gt;Come discuss on Twitter, and tell me about your own career choices!&lt;/p&gt;

&lt;p&gt;That’s it for today!&lt;/p&gt;

&lt;p&gt;PS: If you want to learn tons of other cool things about product/software/Web development, then &lt;a href="https://dev-concepts.dev/" rel="noopener noreferrer"&gt;check out the Dev Concepts series&lt;/a&gt;, &lt;a href="https://dsebastien.net/news" rel="noopener noreferrer"&gt;subscribe to my newsletter&lt;/a&gt;, and &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;come say hi on Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>career</category>
      <category>learntocode</category>
    </item>
    <item>
      <title>What is the difference between software developers, engineers, coders, and programmers</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Tue, 03 Aug 2021 12:18:38 +0000</pubDate>
      <link>https://dev.to/dsebastien/what-is-the-difference-between-software-developers-engineers-coders-and-programmers-35l3</link>
      <guid>https://dev.to/dsebastien/what-is-the-difference-between-software-developers-engineers-coders-and-programmers-35l3</guid>
      <description>&lt;p&gt;Now that we've clarified a bit &lt;a href="https://javascript.plainenglish.io/what-is-software-development-4a6433f2ded3" rel="noopener noreferrer"&gt;what software development is&lt;/a&gt; and &lt;a href="https://javascript.plainenglish.io/what-is-software-engineering-dubois-s%C3%A9bastien-333e347a0919" rel="noopener noreferrer"&gt;how software engineering differs&lt;/a&gt;, let's look at the difference between software developers, software engineers, coders, and programmers. Please note that this is a personal opinion, and depends on the context; there's no universal truth here.&lt;/p&gt;

&lt;p&gt;This content is part of my &lt;a href="https://dev-concepts.dev" rel="noopener noreferrer"&gt;Dev Concepts series&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is there really any difference?
&lt;/h2&gt;

&lt;p&gt;Let's answer a seemingly simple, but important question: what is a &lt;em&gt;software developer, engineer, coder, programmer&lt;/em&gt;? Well, like many things in IT, the answer is "it depends".&lt;/p&gt;

&lt;p&gt;Usually, I use those terms interchangeably, because I consider that &lt;em&gt;all&lt;/em&gt; the people who write code should actually apply software engineering techniques. I'm not a big fan of the term "coder", because it gives the impression that code is all there is, and nothing could be farther away from the truth. It's doing more harm than good, even if the term sounds "cool". The same is true for the term "programmer".&lt;/p&gt;

&lt;p&gt;Generally speaking, a software developer is someone who writes code and thus who creates software. Obviously, software developers need to know as much as possible about code and programming languages.&lt;/p&gt;

&lt;p&gt;Then, depending on the context/environment (e.g., hobby, side-project, small/large team, small/big company, etc), developers have more or less responsibilities. The common denominator of course remains the coding part and everything that surrounds it directly (e.g., code quality, best practices, patterns, etc). As a software crafter, I consider that &lt;em&gt;all&lt;/em&gt; software developers also need to test their code (ideally using automated tests), but I know environments where quality assurance and testing are kept separate from development (for better or worse).&lt;/p&gt;

&lt;p&gt;In small startups, "developers" tend to take care of &lt;em&gt;everything&lt;/em&gt;, and the kitchen sink. For instance, they'll take on requirements gathering, solution architecture, software design, coding, User Interface (UI) design, User Experience (UX) design, testing, release management, deployment, infrastructure, security, and so on. It's much more frequent to find so-called &lt;em&gt;full-stack&lt;/em&gt; developers working for small startups.&lt;/p&gt;

&lt;p&gt;In large teams/groups/organizations, there is a much more granular separation of roles and segregation of duties. There, you'll find business analysts (BAs), functional analysts (FAs), enterprise architects, solution architects, software architects, software developers, UX designers, UX architects, UI designers, Web designers, front-end developers, back-end developers, testers, security analysts and more!&lt;/p&gt;

&lt;p&gt;As I've said, &lt;em&gt;it depends&lt;/em&gt;.&lt;/p&gt;

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

&lt;p&gt;In this short article, I've quickly discussed multiple terms that are often used interchangeably in the software development world. Software developer, engineer, coder, programmer, etc. What's in a name, right?&lt;/p&gt;

&lt;p&gt;It's just an idea, a simple &lt;em&gt;concept&lt;/em&gt;. And that's the magic; if you learn the concepts one by one, then you'll quickly become one of us, a software crafter. It's not that hard; it's like everything, it just takes time.&lt;/p&gt;

&lt;p&gt;That’s it for today!&lt;/p&gt;

&lt;p&gt;PS: If you want to learn tons of other cool things about product/software/Web development, then &lt;a href="https://dev-concepts.dev/" rel="noopener noreferrer"&gt;check out the Dev Concepts series&lt;/a&gt;, &lt;a href="https://dsebastien.net/news" rel="noopener noreferrer"&gt;subscribe to my newsletter&lt;/a&gt;, and &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;come say hi on Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>learntocode</category>
    </item>
    <item>
      <title>What is software engineering</title>
      <dc:creator>Sébastien D.</dc:creator>
      <pubDate>Thu, 29 Jul 2021 15:41:03 +0000</pubDate>
      <link>https://dev.to/dsebastien/what-is-software-engineering-2idf</link>
      <guid>https://dev.to/dsebastien/what-is-software-engineering-2idf</guid>
      <description>&lt;p&gt;In this article, I'll share my personal take on the difference between software development and &lt;em&gt;software engineering&lt;/em&gt; (SE). It is a personal opinion, so take it with a grain of salt.&lt;/p&gt;

&lt;p&gt;This content is part of my &lt;a href="https://dev-concepts.dev" rel="noopener noreferrer"&gt;Dev Concepts series&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flh92p1dwieuuopbg7cbo.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flh92p1dwieuuopbg7cbo.jpeg" alt="Engineering" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So what is it about?
&lt;/h2&gt;

&lt;p&gt;Many people may tell you that both terms refer to the same concept. Personally, I don't agree. The way I see things, software development is the "what" (i.e., the activity) and software engineering is &lt;em&gt;broader&lt;/em&gt;; it corresponds to the "what" &lt;em&gt;and&lt;/em&gt; the "how" (i.e., the &lt;em&gt;process&lt;/em&gt;, the approaches, the methodologies, etc).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Before going any further, I want to clearly state that the term "engineering" might be wrongly interpreted. Software engineering takes inspiration from engineering and tries to apply similar structured approaches to software development, but fundamentally, Software development/engineering is and will remain a &lt;em&gt;creative&lt;/em&gt; endeavor. The software world is complex. Even if we try to apply engineering techniques to professionalize the way we work, it is hard to predict software development time, to provide verifiable proof that a piece of software does what it should be doing, etc.&lt;/p&gt;

&lt;p&gt;I like the definition of the IEEE standards body:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software (IEEE 610.12-1990)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To create software, we perform various activities, and &lt;em&gt;how&lt;/em&gt; we approach those activities has a &lt;em&gt;&lt;em&gt;huge&lt;/em&gt;&lt;/em&gt; impact on the results and on the overall quality. Writing code is only a part of the story. There are many more activities around coding. For instance, before coding, we need to understand user needs (i.e., their requirements). Then, we need to clarify the business rules (e.g., is X accepted or not, when, how, &lt;em&gt;why&lt;/em&gt;), the workflows (e.g., what happens before/after X), the data models (i.e., what concepts/data will the application manipulate), the data flows, etc. Still before coding, we also need to &lt;em&gt;architect&lt;/em&gt; and &lt;em&gt;design&lt;/em&gt; the solution so that it is built on solid grounds.&lt;/p&gt;

&lt;p&gt;The coding part itself is also critical of course, and there are many dimensions/things to take care of. Security is also something of the utmost importance. Finally, once code has been written for an application, it needs to be built, tested/validated, released, deployed, monitored, maintained, etc. My &lt;a href="https://dev-concepts.dev" rel="noopener noreferrer"&gt;Dev Concepts series&lt;/a&gt; as a whole discusses those topics.&lt;/p&gt;

&lt;p&gt;Luckily, there's actually a generally accepted &lt;em&gt;standard&lt;/em&gt; defining a set of &lt;em&gt;phases&lt;/em&gt; for software development projects. It is called the Software/System Development Life Cycle (SDLC). Personally, I think that all software developers should clearly understand the SDLC and apply it in their projects, whether big or small.&lt;/p&gt;

&lt;p&gt;Next to the software development phases, there are other things to consider like the software development approaches/methodologies (e.g., Agile, XP, etc) and project management techniques (e.g., PMBOK), which greatly impact the way we work, and collaborate with each other.&lt;/p&gt;

&lt;p&gt;To finish this short post, I'll leave you with a wonderful quote from Margaret Hamilton, one of the pioneers of software engineering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Software during the early days of this project was treated like a stepchild and not taken as seriously as other engineering disciplines, such as hardware engineering; and it was regarded as an art and as magic, not a science. I had always believed that both art and science were involved in its creation, but at that time most thought otherwise. Knowing this, I fought to bring the software legitimacy so that it (and those building it) would be given its due respect and thus I began to use the term “software engineering” to distinguish it from hardware and other kinds of engineering; yet, treat each type of engineering as part of the overall systems engineering process. When I first started using this phrase, it was considered to be quite amusing. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. Software eventually and necessarily gained the same respect as any other discipline. (Margaret Hamilton, Lead software engineer of the Apollo Project)&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959?tag=dsebastien-20" rel="noopener noreferrer"&gt;The Mythical Man-Month: Essays on Software Engineering&lt;/a&gt; by Frederick Brooks. That book has deeply influenced me as a crafter&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Software_engineering" rel="noopener noreferrer"&gt;Software engineering @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.guru99.com/what-is-software-engineering.html" rel="noopener noreferrer"&gt;What is software engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mit.jyu.fi/ope/kurssit/TIES462/Materiaalit/IEEE_SoftwareEngGlossary.pdf" rel="noopener noreferrer"&gt;Software engineering glossary: IEEE Software Engineering glossary @ MIT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Systems_development_life_cycle" rel="noopener noreferrer"&gt;SDLC @ Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In this short article, I've introduced the notion of software engineering. It's just an idea, a simple &lt;em&gt;concept&lt;/em&gt;. And that's the magic; if you learn the concepts one by one, then you'll quickly become one of us, a software crafter. It's not that hard; it's like everything, it just takes time.&lt;/p&gt;

&lt;p&gt;That’s it for today!&lt;/p&gt;

&lt;p&gt;PS: If you want to learn tons of other cool things about product/software/Web development, then &lt;a href="https://dev-concepts.dev/" rel="noopener noreferrer"&gt;check out the Dev Concepts series&lt;/a&gt;, &lt;a href="https://dsebastien.net/news" rel="noopener noreferrer"&gt;subscribe to my newsletter&lt;/a&gt;, and &lt;a href="https://twitter.com/dSebastien" rel="noopener noreferrer"&gt;come say hi on Twitter&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>coding</category>
      <category>theory</category>
      <category>concepts</category>
    </item>
  </channel>
</rss>
