One time I stumbled across a colleague of mine who was working on a project, and I always like to ask this traditional question, “What IDE are you using?” or “Which IDE is your favorite?”. To those who don’t know what is an IDE, it is an abbreviation for (Integrated Development Environment). In simple terms, its a software application that makes it easier for developers to code, build, debug, and many more. So IDE is basically a part of one’s life whenever someone starts to work in software development. Anyhow, so my colleague replied to us and said, “I am not using an IDE for this project”.

Our jaws dropped when we heard this, “What?! Why?! Isn’t it easier to just use a sophisticated IDE that will make your code easily written?”. He replied, “Exactly”. We got confused of this response, “… but you should enjoy the perks of writing your code without the hassle of remembering certain libraries or methods, it will auto-complete it for you!”. Still the same response, but with more energy, “Exactly!”. We sarcastically replied, “Okay, apparently you hate yourself since you code on a blank text editor. Its like taking notes with paper and pen while there is an open Word document on your laptop to use…” before I finished that sentence he replied to me and said, “But you do know how to take notes with paper and pen, right?” I said, “uhhh, of course…?” Then he said something that got me thinking for a while, “Well, you have the choice of taking notes in the old fashioned way or in the more sophisticated way since you are well experienced with both and you alternate between them all the time. When was the last time you wrote a piece of code on a basic non-helping text editor?”. I spent a couple of minutes trying to remember how long has it been, and ironically I can’t remember, “ummm weeks? couple of months maybe?” then I remembered, the last time I did that was more than a year ago. I joked about it and said, “Even if it was last year, I can still do it whenever I want. You just want to make things difficult. I rest my case.”

Few days later, I still remembered our discussion and how “powerful” my argument was. But for the sake of self-assurance, I challenged myself that I would work on this next programming assignment with a text editor since its not really that complex so I’ll just do it with the sweet old terminal and editor. Half-way through it, my “powerful” argument immediately collapsed in the most cartoonish way possible. The moment I stared at my computer trying to remember the full name of the library methods and the exact arguments needed for each method, a “10-min” work transformed into a “1-hour” work because I couldn’t finish it as smoothly as with an auto-completion service.

Later I thought about it and remembered a terminology that have been said many many times, “DIY”. This phrase (Do It Yourself), is frequently used to push people into doing the actual work with their hands first, get the exposure and the experience from it, and then they can do it with a facilitating tool to make things quicker and more efficient. The problem is, the easier the tool we use, the more constrained we become. And I realized how much constrained I was when I stopped doing it myself as I should have. Even when one is preparing for a programming interview, there is always this advice of “you should practice writing code on whiteboard”. An example of a paragraph I’ve read by firecode.io was,

Practice writing code on a whiteboard because IDEs are bad - they write code for you. But who’s going to check your code if you write it on a whiteboard? They key is to write flawless code AND remember key APIs on your interview day. But hey, I’m not writing this article to bum you out, IDE enthusiasts, I’m just like you! I love all the features provided by IDEs and how colorful and easy it is to write code, debug it, and just press on “R” button to compile it and execute it, and share it on git. But I’m writing this article to remind you to always “DIY” first! Every once in a while, write code on a piece of paper or a blank editor. Don’t train your brain to always wait for that “auto-complete” help while doing your work. That still applies to you, non-technical reader, I believe it is extremely important to get your hands dirty before you start using a black box. Knowing what’s inside the box gives you the edge as an experienced person. Because think about it, if you have two software developers, first one writes flawless code and automatically build it on an IDE in X minutes, while the second one writes flawless code on a basic editor and manually build it on a terminal in X minutes. If you give both of them a computer without an IDE installed, which one will be more capable and independent to do the task?

Exactly!