Anton Arhipov is a Software Developer and Product Lead for JRebel, the productivity tool for Java developers. Anton’s professional interests include Java and related, programming languages and middleware. You can follow Anton on Twitter (@antonarhipov) and find him on LinkedIn (linkd.in/aarhipov). Anton has posted 18 posts at DZone. You can read more from them at their website. View Full User Profile

How Well Do You Know Your IDE?

11.10.2012
| 15207 views |
  • submit to reddit

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!

Published at DZone with permission of its author, Anton Arhipov. (source)

(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

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
Same here. It's a pity that most creators of new languages don't realize how important tooling is. Even more, they create super-dynamic languages which makes it impossible to create good tooling. For me, not being able to use even a basic rename refactoring it's a no-go. I think it's mainly this that makes it extremely difficult to maintain a big JavaScript project (I would include Groovy and Ruby here also, but I don't simply because I don't have enough experience to tell). I mean, when I'm afraid to refactor code because it takes too much time to manually fix it, the code will just decay into a mess.

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'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.
These do not exclude each other. If you want to be a good developer, you definitely need to know both. After all, development concepts, languages and libraries are also tools, just like the IDE - tools in the way that it helps you accomplish a purpose.


I also have a fear of memorizing (as if there was no more room and I'd be sacrificing something else)
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.

fear of vendor lockin
This is true with everything. Should I stop learning my car's special features because I fear I might be locked into its vendor?

I'd like to think I could switch to netbeans or some other tool with little loss of knowledge if needed.
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.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.