How Well Do You Know Your IDE?
This is bit like a philosophical post. Just some thoughts regarding our perception of developer tooling.
First - a question. Which IDE do you use? Eclipse? NetBeans? IntelliJ
IDEA? Visual Studio? Vim? Emacs? Yeah, really - Vim counts as an IDE as
long as you can configure it to behave like one. Or maybe Sublime Text, a
really awesome text editor?
Second question. Do you leverage the full power of your favourite IDE/editor?
Mostly, people will say that they just use the IDE and I haven't
really seen many people leveraging the power of refactorings, shortcuts,
or other awesome IDE features that are out there. Why? Laziness? Carelessness?
Neglect?
I was reading a nice theory article, The IDE Divide, which is already 8 years old. The point of the article is that it points out two extremes among the developers: language mavens and tooling mavens.
Language mavens are those who case about the deepest nuances in the
programming languages and don't really want to rely on tools (or just
don't have time to explore the features of the tools). Tooling mavens
are the ones who are obsessed with learning (and creating?) the tools
and not spending as much time discovering the mysteries of language
features. The article also mentioned that it is enormously hard to be
both, the language maven and the tools maven at the same time, since the
time for learning all this stuff is limited.
But generally, I think, knowing the properties language and runtime is
more important as it is the produced code that will eventually run on
the system. The tools are just used to create the programs. However, I
rather consider myself a "tooling maven" type of developer. Not that I
don't care about the languages, no. It is just the interest shift
towards tools for me.
Despite the above, I noticed something (or it is just my perception).
When a the new-born programmer starts, you will first try to reach the
comfortable level of using the language. Once you're successful, there
comes time for you to write the programs more effectively - faster,
using shortcuts… click, click, click. This is where the tooling kicks
in. Eventually, you start appreciate those nice features of your IDE
that help you to write the code more effectively. The next stage is when
you realize that actually you do not write code as much as you read it,
and then you will start to appreciate the features that help you to
navigate the code, analyze it, maybe refactor it. Language becomes a bit
unimportant.
I was chatting with Jacek Laskowski one day and he asked an interesting question: "If
you're given awesome tools/components/frameworks to work with, would
you really care about which programming language to use?". Really
good question. I wouldn't care, I guess. You will learn the language
anyway. Or you will learn the tooling anyway once you're comfortable
with the language of your choice, because normally you would like to be
more effective (this is my perception of curious programmers, I hope you
are a curious programmer).
What do you feel when a colleague next to you just moves around the
project like a pro and finds everything he needs just in fractions of a
second, and types with shortcuts creating new statements with just a few
strokes? And then you try to type: 'p' 'u' 'b' 'l' 'i' 'c' '_' 's' 't' 'a' 't' 'i' 'c' '_' 'v' 'o' 'i' 'd' '_' 'm' 'a' 'i' 'l' [oooops! a typo!]. Frustrating…
It is every so often I was keeping myself back from screaming at my
colleague "just Ctrl+Shift+E !!!!" while the team mate was looking for
the class in the project tree the name of which he did not remember.
Modern IDEs have revolutionized the way in which we are able to work
with the code. Sadly, most programmers are held back by some mysterious
myth that if you learn the tools too much you're doomed as a programmer
as you start depending on those tools. Don't be held back by such fears!
Go learn some tooling instead - it will save you some time later!
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)





Comments
Cristian Vasile... replied on Sun, 2012/11/11 - 3:57am
P.S.: Did I mentioned that I also am an IntelliJ fan :) ?
Arun Govindan replied on Sun, 2012/11/11 - 5:43am
Understanding all the shortcuts or features of your IDE is the best way to increase your productivity. I would not want to manually change the name of the class and go to every other class that uses it and change there as well. It will definitely be a big mess. Don't ever think that I would be writing get/set methods manually for all the myriad of class variables. That's where IDEs and other tools come to your rescue. It saves you a lot of time!
But some people become so crazy about tools and IDEs that they start looking for some alternative way of avoiding to code on their own, even for very simple things! They forget the programming language they have been using!
In my opinion we should understand the usefulness of the tool and then use it, or else create one (In that way you would still be coding :))!
Anton Arhipov replied on Sun, 2012/11/11 - 6:37pm
in response to:
Cristian Vasile Mocanu
Actually, I rather see that the creators of Ceylon and Kotlin are rather concerned with the tooling and as I can see they work hard to make the brand new languages equipped with the tools from the beginning.
Erich Styger replied on Mon, 2012/11/12 - 4:34am
Very good thoughts and points, thank you!
Interestingly, similar to the language creators, the creators of silicon and microprocessors seem not to care about tooling neither: they crank out awesome new functionality (multicore, advanced sensors, etc) but somehow forget about making it easy accessible by tools (and programming languages). Wondering if this is just ignorance, or inability to see as hardware creators the needs of the software world?
Cristian Vasile... replied on Mon, 2012/11/12 - 4:43am
in response to:
Anton Arhipov
You're right, and this is commendable. But I think they are in minority. It looks to me like many language designers nowadays think a language is productive if is concise ("look! I wrote an entire program on one line!") regardless if it's more readable or not.
Marc Stock replied on Mon, 2012/11/12 - 12:37pm
I know my IDE very well (IntelliJ). I learn the hotkeys and the vast majority of its features. This takes several months of effort to get down but it's worth it. I don't understand people who work with a tool for 8 hours a day and still don't know the hotkeys. I can't make Java less painful to code but I can at least make my time with it more efficient by learning how to use my IDE to its fullest potential.
I also believe that programmers will largely only do what's easy. If refactoring is hard to do (ala VIM), it just won't get done or it will get done significantly less often than someone using an IDE that does it for them. I don't think text editors are on option for pro developers anymore. Not if you care about code quality anyway.
Cristian Vasile... replied on Mon, 2012/11/12 - 1:10pm
in response to:
Marc Stock
My thoughts exactly.
Lund Wolfe replied on Sun, 2012/11/18 - 2:25am
I know I would be faster if I knew my tool (IDEA) better, but I just feel other things are more important. I'd rather learn development concepts and libraries which make me feel more empowered than being a better tool user able to do faster data entry. I need to be able to do basic debugging and simple refactorings like rename and occasionally extract method.
I feel that my ability to do my job well is tied much more to my skill than to unleashing the power of my IDE. I also have a fear of memorizing (as if there was no more room and I'd be sacrificing something else) and a fear of vendor lockin. I'd like to think I could switch to netbeans or some other tool with little loss of knowledge if needed.
Cristian Vasile... replied on Sun, 2012/11/18 - 3:11am
in response to:
Lund Wolfe
I actually used to believe this as well, but the reverse is true. As you memorize more, the mind expands (new synapses are formed between brain cells that stood there almost unused) and it becomes even easier to recall things you learned and to assimilate new material.
This is true with everything. Should I stop learning my car's special features because I fear I might be locked into its vendor?
This would make you use the IDE simply as a colored Notepad, which is way under the tool's abilities.
I would urge you to reconsider your opinion about IDEs. Besides the increased speed, what you are missing is the joy of developing. Believe me, it's a pleasure when your thoughts gets translated faster into code. I can concentrate more on the problem that I need to solve, instead of concentrating on typing-in code that the IDE could write for me.
Lund Wolfe replied on Fri, 2012/11/23 - 1:46am
in response to:
Cristian Vasile Mocanu
It's just a matter of priorities, time management, and individual interest.
Some people (and not just younger ones) definitely have a much better memory, and some people have a better head for abstractions and problem solving. I'm definitely weak in the memory department, but there are memory tricks and practice, practice, practice until it becomes second nature works, too.
Elhanan Maayan replied on Mon, 2012/12/10 - 5:38am
i believe that knowing the tools you use up to a point where you can develop basic plugin for it, is crucial as it alows you solve problems you encounter in your ide thus making you more self suficent.
however i do not agree with the notion of ANY language as long it has great tooling because eventually youll need a rich eco system for it. and most languages dont have it.
while some prgorammers dont bother learning tooling others actually dont give a crap if you show them show them going "meh, so what" thats frustrating to say the least , and belittling at worse.