I've been programming since I was a kid. I've experienced saving my code in numerous ways: using the blue IDEs (Turbo C), "copy con <filename>", visual studio (Visual Basic and C++), emacs, vi, and notepad2.
For the last 7+ years, I've been using notepad2 almost exclusively for Python programming. There is a method to my madness.
Before I started teaching programming to college students, I was an emacs user. The idea of having an IDE that you can program appeals to me. I like the idea of an IDE that is custom made to my own intuition; minimizing the delay between the code in my head and the code in my computer. I spent a lot of time playing with elisp to get what I want.
Teaching programming changes people
When I started planning my lesson plan, I know for certain that showing Emacs will only confuse the students. My target audience came from poor communities and will not appreciate having another layer of complexity to programming. I know that there are some colleges that teaches Emacs, and I wish my students grew up with technology so I won't have to change.
But I should be the one to adjust.
At first, I used the notepad app that came with Windows. I immediately dropped it when I saw that there is no way to convert tabs to space. The second factor was how horrible the undo command was.
I forgot how I found Notepad2, but it has what I need. So I started using a text editor in my programming classes.
A simple tool in the hands of an expert
After a few weeks of using Notepad2, I've noticed something: the simplicity of the tool is a strength - it minimized the delay between the code in my head and the code in my computer.
The funny thing about using a tool for work: you get used to it. And over time, you become as quick with a simple tool as with a complex tool.
A weak craftsman would blame their tool. A strong craftsman can make beautiful art with any tool.
Once I realized this, I started exploring the idea of dropping emacs completely. What changes from using an IDE over a text editor? Surprisingly, nothing much.
- When running my programs, I can just open a terminal shell and do my compilation there.
- My debugging is done over pdb and print statements, so I don't really need an IDE debugger.
- Notepad2 also have a transparent mode that is useful when learning a new technology.
- Auto-completion is the biggest feature I missed from Emacs. But after years of using a text editor, I find that typing extra code is actually a minor issue.
Text editor agnostic
One advantage of using a simple text editor when teaching programming languages is that I'm not telling the students what to use. One of the last lessons in my workshops is on IDEs. I go over the various IDEs available.
Because I didn't use IDEs when teaching, the students have the agency to choose whatever they want.
Programming is not about your IDE
There is a misconception that your choice of IDE makes you a better programmer. Or that there is a One True IDE tm. Or that you cannot program without an IDE (to an extent. Some programming languages like Java and Visual Basic were built with the idea that an IDE will do most of the boilerplate).
By being text editor agnostic, we can separate the idea of programming from the IDE. I believe that once you internalize this, you can mentally become a better programmer.