<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected--bmudn81i1" -->

---
title: The Terminal Made Me a Better Developer (And Not for the...
description: A developer reflects on how shifting from GUI tools to the terminal reshaped their understanding of how software actually works, covering filesystem...
canonical: https://daily.dev/posts/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected--bmudn81i1
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: The Terminal Made Me a Better Developer (And Not for the Reasons I Expected) | daily.dev
og:description: A developer reflects on how shifting from GUI tools to the terminal reshaped their understanding of how software actually works, covering filesystem...
og:url: https://daily.dev/posts/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected--bmudn81i1
og:image: https://api.daily.dev/og/posts/BMUDn81I1.png
og:image:alt: The Terminal Made Me a Better Developer (And Not for the Reasons I Expected)
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# The Terminal Made Me a Better Developer (And Not for the Reasons I Expected)

**[DEV](https://daily.dev/sources/devto)** · 13 min read · 36 upvotes · 4 comments

## Summary

A developer reflects on how shifting from GUI tools to the terminal reshaped their understanding of how software actually works, covering filesystem navigation, process management, Linux permissions, basic networking debugging, and reading error output. The real payoff wasn't typing speed but developing investigative habits: checking what's running on a port with ss or pgrep, inspecting file permissions with ls -l and stat, testing DNS and HTTP with dig and curl, and understanding pipes. The piece closes with five hands-on exercises for newer developers to try, while emphasizing that GUIs aren't bad, just that they hide the underlying mechanics.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://dev.to/sizzlebop/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected-nn6>

## Questions this post answers

### How do I find what process is listening on a specific port, like 5173, on Linux?

Use ss -ltnp to list listening TCP sockets with process info, or filter directly with ss -ltnp | grep ':5173'. For a Node-based dev server, pgrep -af node can also help identify the running process. These commands help determine whether a port conflict is caused by a forgotten instance of your own app still running.

_Debugging a stuck dev server port is a familiar snag; daily.dev surfaces practical fixes like this for developers._

### Why would a bash script fail to execute even though the file is right there and visible?

It's likely a permissions issue rather than a missing file: the script may lack execute permission, or the file might be owned by a different user without the needed rights. Running ls -l script.sh or stat script.sh reveals ownership and permission bits so you can see exactly why execution or writing is being denied.

_Developers puzzling over Linux permission errors can find similar troubleshooting breakdowns on daily.dev._

### What's the difference between execute permission on a file versus on a directory in Linux?

On a file, execute permission allows running it as a program or script. On a directory, execute permission instead controls whether you can traverse into it, meaning access its contents and files, rather than literally 'executing' the directory itself. This distinction often confuses newcomers encountering unexpected permission-denied errors.

_Understanding these Linux permission nuances matters for anyone debugging access issues; daily.dev tracks such practical explainers._

## Community discussion

Top comments from developers on daily.dev.

**@nikhil3** · 4 upvotes

> For me, it's a rabbit hole sometimes 😂 I dig so deep into a command that I forget what I was trying to do in the first place.

**@yaireo** · 3 upvotes

> Well, for us with decades of experience, back then there was only terminal. I am very happy those days are over, a mouse is now a common device and GUI is everywhere. hurray for humanity escaping the pit of terminals.

**@swarnasharmin** · 0 upvotes

> Does CLI mastery build system-level intuition, or just CLI syntax muscle memory?

## Similar posts on daily.dev

- [The Terminal Is an Art](https://daily.dev/posts/the-terminal-is-an-art-co7reysrn) · Dev Genius · 112 upvotes · 17 comments

---

Tags: [#linux](https://daily.dev/tags/linux), [#productivity](https://daily.dev/tags/productivity), [#networking](https://daily.dev/tags/networking), [#cli](https://daily.dev/tags/cli)

[View this post on daily.dev](https://daily.dev/posts/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected--bmudn81i1)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"The Terminal Made Me a Better Developer (And Not for the Reasons I Expected)","url":"https://daily.dev/posts/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected--bmudn81i1","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected--bmudn81i1"},"datePublished":"2026-10-19T10:42:50.638Z","dateModified":"2026-10-19T10:43:13.674Z","description":"A developer reflects on how shifting from GUI tools to the terminal reshaped their understanding of how software actually works, covering filesystem...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/b4d124f724e41e27ab055700d3765e0f?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/b4d124f724e41e27ab055700d3765e0f?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"DEV","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"DEV","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/devto","url":"https://daily.dev/sources/devto"},"commentCount":4,"discussionUrl":"https://daily.dev/posts/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected--bmudn81i1","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":35},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":4}],"keywords":"linux,productivity,networking,cli","timeRequired":"PT13M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"DEV","item":"https://daily.dev/sources/devto"},{"@type":"ListItem","position":3,"name":"The Terminal Made Me a Better Developer (And Not for the Reasons I Expected)"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected--bmudn81i1","comment":[{"@type":"Comment","text":"For me, it’s a rabbit hole sometimes 😂 I dig so deep into a command that I forget what I was trying to do in the first place.","datePublished":"2026-10-19T12:13:07.270Z","url":"https://daily.dev/posts/BMUDn81I1#c-7zgpaGUvE","author":{"@type":"Person","name":"Nikhil","url":"https://daily.dev/nikhil3","image":"https://avatars.githubusercontent.com/u/123929646?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4}},{"@type":"Comment","text":"Well, for us with decades of experience, back then there was only terminal. I am very happy those days are over, a mouse is now a common device and GUI is everywhere. hurray for humanity escaping the pit of terminals.","datePublished":"2026-10-19T13:01:05.801Z","dateModified":"2026-10-19T13:01:38.946Z","url":"https://daily.dev/posts/BMUDn81I1#c-fPgJW8OiO","author":{"@type":"Person","name":"Yair Even Or","url":"https://daily.dev/yaireo","image":"https://avatars.githubusercontent.com/u/845031?v=4"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3}},{"@type":"Comment","text":"Does CLI mastery build system-level intuition, or just CLI syntax muscle memory?","datePublished":"2026-10-19T21:52:10.820Z","url":"https://daily.dev/posts/BMUDn81I1#c-N5M0X0NR5","author":{"@type":"Person","name":"Swarna Sharmin","url":"https://daily.dev/swarnasharmin","image":"https://media.daily.dev/image/upload/s--joHEq_jD--/f_auto/v1791022797/avatars/avatar_ZL6bebyCVkszL2cr0g8ab?_a=BAMAMicg0"}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/the-terminal-made-me-a-better-developer-and-not-for-the-reasons-i-expected--bmudn81i1#faq","mainEntity":[{"@type":"Question","name":"How do I find what process is listening on a specific port, like 5173, on Linux?","acceptedAnswer":{"@type":"Answer","text":"Use ss -ltnp to list listening TCP sockets with process info, or filter directly with ss -ltnp | grep ':5173'. For a Node-based dev server, pgrep -af node can also help identify the running process. These commands help determine whether a port conflict is caused by a forgotten instance of your own app still running. Debugging a stuck dev server port is a familiar snag; daily.dev surfaces practical fixes like this for developers."}},{"@type":"Question","name":"Why would a bash script fail to execute even though the file is right there and visible?","acceptedAnswer":{"@type":"Answer","text":"It's likely a permissions issue rather than a missing file: the script may lack execute permission, or the file might be owned by a different user without the needed rights. Running ls -l script.sh or stat script.sh reveals ownership and permission bits so you can see exactly why execution or writing is being denied. Developers puzzling over Linux permission errors can find similar troubleshooting breakdowns on daily.dev."}},{"@type":"Question","name":"What's the difference between execute permission on a file versus on a directory in Linux?","acceptedAnswer":{"@type":"Answer","text":"On a file, execute permission allows running it as a program or script. On a directory, execute permission instead controls whether you can traverse into it, meaning access its contents and files, rather than literally 'executing' the directory itself. This distinction often confuses newcomers encountering unexpected permission-denied errors. Understanding these Linux permission nuances matters for anyone debugging access issues; daily.dev tracks such practical explainers."}}]}
```

