DEV Community

Cover image for The IDE - The beginner's trap !

The IDE - The beginner's trap !

Younes on January 10, 2019

Hello everyone, today we talk about IDE's ! But first.. What's an IDE ? For me, an IDE is a software that allows us to write code with...
Collapse
 
peterwitham profile image
Peter Witham

Hi Yafkari,

Thanks for this. I think a great point you raise in particular is learning a new skill like a language can often be overshadowed by the tool. A great example of this is Git, I encounter a lot of people who only know Git via a UI tool.

This is fine at first, but as soon as they hit a problem the most common response they get is to switch to the terminal to figure out what is going on. This often leaves them in a place where they hit a wall and now have to learn Git from the terminal before they can start working on the actual problem they are trying to understand.

IDEs are great for getting things done and improving productivity, but I feel that is only beneficial once you have a grasp of the power you are taming with the tool.

Collapse
 
yoadev profile image
Younes

I totally agree !

Collapse
 
mgh87 profile image
Martin Huter

Well I think for most CLI tools it is often mire productive, if you use them once you're used to them.

One of the main reasons: You only can handle a tool, if you use it often.

Collapse
 
steelwolf180 profile image
Max Ong Zong Bao

For me, The reason I use IDE is due to it's debugger as I learnt to depend on it due to visual studio's awesome debugger.

Thus despite I use pycharm on a daily basis I always uses the debugger extensively when I encounter a problem in my code.

Collapse
 
yoadev profile image
Younes

We should consider using the debugger more, you're right.

Collapse
 
richistron profile image
Ricardo Rivas

I friend of mine works at google and he doesn't know how to use git via terminal. As a VIM user I can tell this is true, IDE such as rubymine might help you do things faster but you won't learn how things really work

Collapse
 
worc profile image
worc

a point in IDEs' favor is the actual tokenization and static analysis they do. no matter how fancy the plugins for your text editor get, an IDE is built around the idea that the machine should know how to link your code together. it's not just making a best guess that if two tokens look similar in the source code they must be related, an IDE knows that given the rules of the language that you're writing in, that those tokens are actually equivalent.

you can move through source code (and library/vendor code) much more quickly and accurately when you're not just doing a glorified find-all.

Collapse
 
shalvah profile image
Shalvah • Edited

I don't agree. I learnt programming with an IDE (Visual Studio - C++). Despite its awesome IntelliSense, it didn't make me "stupid". I was actually able to form a program on paper as well. I only learned the intricate details about compilers and linkers later. And until I moved on from C++ three years later, I was never able to get a GCC installation working.🤣👏

I learnt Java working with an IDE too, and I knew my stuff. The only stack I learnt outside an IDE was PHP. I used Notepad++ and it frustrated me, till I discovered PhpStorm.

I personally feel the opposite: beginners should learn with IDEs because it hides complexity, allowing them to focus on learning the language and building stuff. With time, they can dive deeper.

(Another parallel: when I was new to PHP/web dev, I always used LAMP/XAMPP. As I got to understand more about the language and operating systems, I started to install and configure each component separately. But I'm glad I started out with XAMPP.)

Collapse
 
simonhaisz profile image
simonhaisz

I agree (with you).

The analogy used in this post is that you should learn to walk before you can run. I don't think that fits with "don't start with an IDE". The analogy that I would use is that this is suggesting you should start to learn to climb by free-climbing actual mountains instead of going to a climbing gym and learning on a wall with ropes.

Collapse
 
davea0511 profile image
davea0511 • Edited

Agreed! After programmers become experts they forget what it's like to learn when they were newbies. Milk first. Using and editor without good autocompletion and code hints when you're a beginner prevents newbies from learning to think like a programmer to use code to solve problems. With practice, those code-hints and autocompletion reinforce and become automatic, and soon every programmer discovers the power of knowing those commands by heart. So they do. Those who don't probably just don't use that language enough.

I think the real downside of intuitive coding helps is that it allows newbies to do things they probably shouldn't, resulting in bad code and tech debt, but that's another issue that should be resolved by better systems like unit test, to evaluate and qualify code and coders.

And the complaint that people don't know their way around git because of IDE's is a completely different issue. Git is not programming. It's housekeeping ... important, essential, but don't blame the IDE.

Collapse
 
matthewbdaly profile image
Matthew Daly

Personally I have never, ever used an IDE without sooner or later wanting to kill it with fire.

I've used Vim for most of my career, but recently switched to Neovim and took the opportunity to audit my plugins, remove a lot I no longer used, and adopt some new ones. In particular, thanks to Phpactor, I now have excellent autocompletion and the same sort of refactoring tools PHPStorm provides with a fraction of the footprint.

Collapse
 
jacksonelfers profile image
Jackson Elfers

You can do so much with Vim. It's definitely worth the learning curve I still have much to learn. I've never enjoyed the memory footprint of most IDEs and usually they're abstracting away important information that becomes fickle later.

Collapse
 
codemouse92 profile image
Jason C. McDonald

I'm definitely an advocate for learning to program without an IDE. Learning to write, compile/run, commit, and debug without an IDE provides a solid foundation for continued mastery.

That said, once you know what you're doing, the safeguards a decent IDE offers help considerably reduce coding errors and style inconsistencies, while increasing efficiency.

Related, The Curse of the IDE

Collapse
 
tailcall profile image
Maria Zaitseva

IDEs can also be painful when things go badly wrong, especially when the toolchain is complicated.

It's immediately apparent when you try doing low-level development for, say, MCU-based systems, some library could suddenly stop linking correctly and you have no idea how to fix that. If you've spent some time linking libraries manually, then you could make educated guesses to eventually fix the problem, otherwise your project is broken and you waste a couple of days trying solutions from first two pages of Google search.

Collapse
 
tuljmdev profile image
tuljmdev

For a CS degree, I completely agree this is the best course of action. I still carry a number of bad IDE habits from my early study years.

But I personally don't think VS Code meets the IDE qualification. It sits in the middle ground as a very code-friendly text editor.

Collapse
 
saichai profile image
Sai Chimata • Edited

Frankly, git - being an implementation of an acyclic directed graph - is made for GUIs The git CLI is useful for shell scripting, but for everyday use by humans, GUIs are far better. The reason why they get a bad rep I think is that features of the CLI are often left out of GUI implementations, the scripting they perform underneath is sometimes buggy, and the UX design of GUIs is lacking. SourceTree has an especially bad GUI for cherry-picking and at one point had a bug where the merge flag wouldn't be removed when aborting a merge. I often feel like a lot of these problems could be solved if someone created a GUI on top of the actual git source code rather than just having the GUI manipulate the CLI behind the scenes.

Collapse
 
simbo1905 profile image
Simon Massey

personally I think people just using an editor not an ide need to level-up and try an ide. in particular being able to set a breakpoint and step through code is a massive advantage to learn new code. if folks want to do things the hard way without an ide then I think that's simply misguided. sorry.

Collapse
 
frothandjava profile image
Scot McSweeney-Roberts

I think the first trap is more "use an IDE before learning the basic of software development (ie, what compilers, linkers, debuggers, etc are)" than a new language. For example, I don't really see why a competent Java dev shouldn't use an IDE when learning Scala/Kotlin/C#/whatever.

Collapse
 
tobiassn profile image
Tobias SN

Not just that, but for some reason there needs to be an IDE for almost every language or framework. .NET? Visual Studio. Java? IntelliJ IIDEA. C? Qt Creator. I’ll admit that I have fallen into IDE hell. In fact, four of the IDEs I have installed are just different versions of the same one (IntelliJ, WebStorm, PyCharm and Android Studio). Good thing I never bothered to learn any GUI Git tools, and just use the terminal instead.

Collapse
 
arximughal profile image
Muhammad Arslan Aslam

I work on a couple of different javascript frameworks throughout a typical day at work (it's a services-based company, so different stuff comes up every day). So, WebStorm has always been the first choice and I love it. The code hints, code references, and other stuff are really well supported.

Last week, I told an internee not to use an IDE but use plain editor e.g., Notepad++ and the way he looked at me had me terrified for a moment. Then I explained him the whole IDE vs plain editors thing and how it will help him in the learning.

Collapse
 
jacksonelfers profile image
Jackson Elfers

We should encourage people to use the terminal from the start. Just a shell a compiler and a text editor. IDEs should be an extension of your work not a dependency. Just some thoughts, good article. 😁

Collapse
 
yoadev profile image
Younes

Thanks !

Collapse
 
yoadev profile image
Younes

I think they are totally right, I keep saying it in my school 😂

Collapse
 
caseycole589 profile image
Casey Cole

The only time I use ide is to compile or debug otherwise it's just slower than the editor.Also I can't stand error correction before I have gotten my thoughts into the code.

Collapse
 
yoadev profile image
Younes

Personally, when I have to write something quickly I use sublime text, the loading time is equivalent to the microsoft notepad.

Collapse
 
zarszz profile image
Ganjar Gingin Tahyudin

vim ftw maybe