If you are new to IntelliJ, you might be overwhelmed by the number of features, confused by the user interface, and tempted to try to “secretly” use your favorite editor for this course.
While any editor is fine if you are simply manipulating text, there are many who feel that IntelliJ provides the best support for Javascript development, which is one reason why I chose it for this class. I also believe that becoming facile with multiple IDEs helps you become a more sophisticated and adaptable developer. So please suspend your disbelief and go “all in” on IntelliJ, at least for this one semester. (Note that I am a die-hard Emacs user from the 1980’s, so switching to IntelliJ for this class was not without some pain to me as well.)
Despite its advantages, I recognize that IntelliJ presents a very real barrier to adoption:
Until you have internalized at least a few of the “power user” features of IntelliJ, you will not be convinced the effort to learn it is worthwhile.
The power user features of IntelliJ, the ones that make you more productive and able to code more quickly, are generally accessed by key bindings.
My solution to this problem? Flash Cards! While you might not have used flash cards since you were in middle school, there is evidence that flash cards are a very effective learning technology.
Download the following files providing key bindings and descriptions for several useful features of IntelliJ. Print them out two-sided and use scissors to create individual flash cards.
Generic Navigation: (pdf, excel source)
Code Navigation: (pdf, excel source)
Create a “Web” project called FlashCard containing a file called flashcard.js. Copy one of your JSFiddles into that file so you have some Javascript code to play with.
Now use your FlashCard project to test all the flash card key bindings. If you are using Windows or Unix, you might find that some key bindings are different. (Hint: control-shift-A lets you look up commands and find their key bindings, or check IntelliJ Keybinding Documentation). Use a pen to correct the key bindings on your flash cards if yours are different. If some key bindings do not appear to work, check to see that you have correctly configured IntelliJ following the installation instructions NOTE: Do not use an “alternative” keymap such as Emacs or Vim in IntelliJ! If you do, then you will lose access to many useful key bindings, reducing your productivity.
Once you have verified your flash card key bindings by testing them out on your Hello World project, and understand what they do, you’re ready to play the game.
Here’s how to play the game:
Set up your IntelliJ Flash Card deck so that the front side of all cards are key bindings.
Start your timer.
Move through your flash card deck from start to end. For each displayed key binding, state its description, then check your answer by looking at the back of the flash card. If you correctly remembered the description, then put that flash card aside. If you did not, put the card at the end of your pile.
Continue recalling the description associated with each flash card’s key binding until all have been placed aside (i.e. you have recalled all of the descriptions successfully.)
Now turn over the flash card deck so that you are looking at descriptions. Repeat the process, this time recalling the key binding associated with the description. If you recall the key binding correctly, put the card aside. If not, put it back in the pile.
Continue recalling the key bindings until all have been placed aside (i.e. you have recalled all the key bindings successfully).
Stop your timer and record your time.
Your goal is to be able to recall all mappings (i.e. from description to key binding and vice versa) in less than 1 minute. You do not need perfect accuracy, although making errors will increase your time.
Check out the IntelliJ Default Keymap Bindings or MacOS Keymap Bindings for a bunch more bindings and add the most interesting ones to your flash cards.
Blake Wallick, a former ICS 314 student, set up an online version of these flashcards at Brainscape. Check them out!
You should have practiced this game prior to class on Tuesday. We will have a contest in class with prizes for the fastest players!