Last weekend I was part of yet another round of heated discussion on a topic that I see a lot of division on among my peers – text editors vs IDEs for beginners. I’ll get into that, but first I need to give some background. At this point, I’ve been programming for a few years in one way or another. I started out with VBA (Visual Basic for Applications) in 2012 and then I didn’t have to worry about what I was using to write and compile my code, but once I ventured into C it was a whole new terrifying world. In fact, I didn’t make it very far through CS50 because it was all terrifyingly new and doing anything in the appliance (virtual machine setup) was so foreign as was the way everything was written. I think it took me a month to do two problem sets, although I was also working through the capstone for my MBA at the time. 🙂 After that, I walked away. I couldn’t make it through the hours of lectures. Now, if I can’t sit through hours of listening to David Malan, I’m not going to be able to sit through long lectures from anyone. I needed something quicker, where I could watch or read something then immediately try it. Right after graduation, I found a C# course that looked promising. It was complicated enough to hold my interest and challenge me while also teaching me the basics of how to use Visual Studio as an IDE. After finishing I thought, hey, I have the perfect simple project to implement with this and built my first program with a GUI that I then used regularly at work. I was hooked.
Eventually I found my way to OSU’s post bacc CS program. In this, they wanted us to use vim and I did at first but was frustrated with the speed of development. As soon as I felt I’d managed enough of a handle to make edits on the server as needed, I found my way back to my trusted friend Visual Studio. It wasn’t quite as friendly for C++ as it was for C#, of course, but it was familiar and worked well and I was able to debug and understand. In the second intro course, which can only be described as a whirlwind of personal hell, I was introduced to Jetbrains’ Resharper extension for VS about halfway through. Life changing. I learned so much from its angry red text and red and yellow light bulbs hahahaha. It wasn’t even that it was always correcting bad code – IT WAS SUGGESTING HOW TO MAKE IT BETTER. Like hey, did you know, this could be declared constant? Oh, I didn’t, thank you so much!
The next quarter, since I had been using cloud 9 to pair debug some of my assignments with a friend/mentor, I started using it more during data structures when we had to do group programming. After that, it only made sense to continue using it for web development! Since then, I’ve almost entirely worked in c9.io workspaces. Parallel programming in C/C++, software engineering group project in PHP/MySQL, operating systems in C, and algorithms in Python. So, in short, I’ve reached a point where I’m just using a text editor with syntax highlighting and a terminal. It’s great, but the path I took to get here was very personal and exactly what I needed. Never did I do what I was told to do, but instead followed my instincts and I’m a better programmer for it.
So now to get to my point. I have a sort of survival guide I’d shared with students and when someone was directed to it, it spawned a discussion that left me furious and feeling attacked. I’m well aware that none of it was meant personally but I DESPISE it when people go off about how IDEs are terrible and detract from learning and tell beginners not to use them. Given what I’ve just said, it’s inadvertently shitting on my entire learning process. It’s not all or nothing. I would never be at the skill level I am now without extensive prior use of an IDE for its training wheels and visual aids but I also wouldn’t if I had used it as a crutch.
Vim is great. Text editors are great. They make mistakes painful and memorable, but only when you have the time to really devote to it and quite frankly I did not have it. I was working full time along with two classes as are many of my peers.
I DIDN’T UNDERSTAND until I entered shit in a class wizard and went, oh, so this maps to this, etc, etc and Lord knows I wasn’t about to keep working that way because it was slow. But it was what I needed to guide me down the path through the basics of syntax so I’d have more time for the actual deeper concepts.
I DIDN’T UNDERSTAND pointers until I threw them in a program and traced what was happening. Removing the small roadblocks of syntax left me more time for real problems like, what the heck is this address 0xCDCDCDCD…? (It’s a bogus address. Essentially that’s visual studio speak for “you shall not pass” and it means you did something dumb.)
I was a TA for the intro course for 3 quarters and am now a peer tutor. So when I see people struggling with the way things are presented, I always throw out IDEs as a suggestion. I may be a little harsh on Eclipse, but it eats your CPU for breakfast. 😀 They’re not meant to be eternal crutches but they sure as hell can teach you what you need to know in a much more efficient and certainly still effective manner.
The bottom line is, end goal should be proficiency in vim, perhaps even mastery if you so choose, and the ability to read a text about a language and learn everything you need to know. But your journey to that point is personal, and don’t shit on others paths. If anything, help them find their way to explore and discover it themselves. There is no universal path.