summaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
Diffstat (limited to 'content')
-rw-r--r--content/en/posts/java-dev-with-true-idea.md24
1 files changed, 18 insertions, 6 deletions
diff --git a/content/en/posts/java-dev-with-true-idea.md b/content/en/posts/java-dev-with-true-idea.md
index 45f9b961..c6c7ba0d 100644
--- a/content/en/posts/java-dev-with-true-idea.md
+++ b/content/en/posts/java-dev-with-true-idea.md
@@ -5,14 +5,26 @@ draft: true
toc: true
---
-Let's be totally honest. **IntelliJ IDEA is bloated, slow and buggy.** It's not the worst tool but certainly does not provide a comfortable dev experience (tho their web page says "Built for your comfort"), especially when it's so damn expensive!
+Let's be totally honest. **IntelliJ IDEA is bloated, slow and buggy.** It's not the worst tool but certainly does not provide a comfortable dev experience (tho their web page says "Built for your comfort"), especially when it's so damn expensive!<!--more-->
-The one thing I don't understand is how people urge Java beginners to download this software filled with magic buttons when they don't understand how everything works. For me, I never fully understand the underlying mechanism of "Run/Debug" button —— It does too many things! It runs a single Java file with a main function but also build a WAR package, start a local server and runs your application. When I started out learning Java and Spring, people just told me to configure this and configure that, simply asking me to follow a set of instructions that seems to come out of nowhere. And then, I was told to hit the "Run" button. And boom. There's your project up and running. Start Developing!
+## Stop taking things for granted (and having new-commers to do the same)
-Softwares like IDEA make development unnecessarily complicated with too many user interfaces. I can put up with photo and video editing app like PhotoShop being complex in user interface, for there's no other way to do it. But for software development? Why would I need all those sections and subsections in the setting panel when a bunch of text files can do the work just fine?
+The one thing I don't understand is how people urge Java beginners to download this software filled with magic buttons when they don't understand how everything works. For me, I never fully understand the magic behind "Run/Debug" button —— It does too many things! It runs a single Java file with a main function but also build a WAR package, start a local server and runs your application. When I started out learning Spring, people just told me to configure this and configure that, simply asking me to follow a set of instructions that seems to come out of nowhere. And then, I was told to hit the "Run" button. And boom. There's your project up and running. Start Developing!
-When the interface is like this, learning Java Development becomes two things: The basic language knowledge (the syntax, common libraries and best practices) and HOW TO GET THIS GODDAMN THING TO F\*CKING WORK.
+Softwares like IDEA make development unnecessarily complicated with too many user interfaces. I can put up with photo and video editing app like PhotoShop being complex in user interface, for there's no other way to do it. But for software development? Why would I need all those sections and subsections in the setting panel when a bunch of configuration files can do the work just fine?
+
+When the interface is like this, learning Java development becomes two things: The basic language knowledge (the syntax, common libraries and best practices) and HOW TO GET THIS GODDAMN THING TO F\*CKING WORK.
+
+I don't see C programmers losing their minds because their editors break. In fact, let's appreciate the beauty of C development. You got a simple editor, a trusty compiler, and... nothing else. Your compiler tells you what goes wrong, and you fix it. That's it! JavaScript development also requires only an editor and NPM to work, as simple as C. There might be tools like ESLint and husky that adds to the workflow, but they're introduced by our choice. We know what we're doing and we know why we need them.
+
+Integrated development environment robs you of free choices. It got everything they think you need, covering them up with magic, and you just stop thinking and take them for granted along the way.
+
+That's stupid. Let's just stop.
+
+## The beauty of command-line interface
+
+Apart from the convenience of creating a new project using out-of-the-box templates and archetypes (spoiler alert: CLI can do that too!), almost every functionality of IDEA can be replaced with CLI tools. For instance, I never really used the database panel. I just enter `mysql` or `mariadb` in my terminal and type `SELECT * FROM ...`. SQL command not only works, but also is clear. You won't get lost with interface navigation when you're just typing text command.
+
+It's true that CLI are harder to learn. Beginners might take a while to understand what each command does and remember the names. But **the clarity is precious**. You don't just hit "Run" and expect magic to happen. You type `mvn spring-boot:run` and realize you're starting a Spring Boot application. The server setup and annoying configuration is already simplified by Spring Boot. A command can do the work. And if something goes wrong, you know what happened exactly. You don't have to navigate through tabs just to find where the error log is! The fact that I have to navigate multiple times to find the things I need is insane! Everything should be at most one-click away and I should be able to navigate only using my keyboard!
-I don't see C programmers losing their minds because their editors break. In fact, let's appreciate the beauty of C development. You got a simple editor, a trusty compiler, and... nothing else. Your compiler tells you what went wrong, and you fix it. That's it! Though every JavaScript developer hates JavaScript, it also requires only an editor and NPM to work, as simple as C. There might be tools like ESLint and husky that adds to the workflow, but they're introduced by our choice. We know what we're doing and we know why we need them.
-Integrated development environment is a sin