Community

How RubyMine Helped Me Learn to Code Faster

This is a guest post by Adrian DeGus. Adrian is the founder of Nuvro, an online project management tool for teams of all sizes. He also runs SEMCentric, a digital marketing agency based out of Phoenix, AZ.

Last year I made the decision, like countless others before me, to learn to code as a means to launch a startup. I had been managing web development projects for years which gave me a bit of an advantage, but the road was still far more grueling than I had expected.
Within a couple of months, I realized that all the people online claiming to have learned programming in 1-3 months were either way smarter than me or had very loose definitions of “learned”. So, I set a more realistic goal of learning and launching in one year.
I was able to meet my goal and launched my startup in exactly 363 days. I had planned to celebrate reaching this goal (with two days to spare) by taking a much-needed break. However, I had already caught the programming bug and decided to spend that time refactoring instead.
The path to launching within one year, however, was not as I expected. In my mind, the process was supposed to go something like this:

  1. Decide which language (singular) to learn
  2. Choose an IDE
  3. Work through a couple of tutorials
  4. Build my prototype
  5. Develop a deeper understanding of programming over time, if necessary

What actually happened was:

  1. Decide which primary language to learn
  2. Realize that secondary languages/frameworks would also be necessary
  3. Invest weeks of valuable time trying every IDE in existence
  4. Come to terms with all other aspects of reality.

Deciding on a Language

Rails. Everyone says I can have an MVP live in one month, easy, moving on…

Deciding on Secondary Languages

JavaScript and jQuery, no brainer, time to code…

Choosing an IDE

This is where I hit a brick wall. Everyone seemed to either use Sublime Text, Cloud9 or VIM. I tried all, I hated all. Sublime was surprisingly restrictive and offered little in the way of syntactic guidance. I didn’t care for the cloud environment of Cloud9, even if it removed the need to setup my dev environment locally on my Windows machine. VIM was good on paper, but I didn’t want to add to my already mounting learning curve. I also tried NetBeans, which I had played with years ago in a short-lived attempt to learn PHP, but found it slow and clunky. After wasting valuable time learning each of these I decided to go simple with Notepad++. But as expected, it was way too simple.
All I was looking for was something I could customize to fit my style and something that could offer enough syntactic guidance to help me avoid simple mistakes and maybe help reduce a few keystrokes along the way.
Then I found RubyMine. Some people said it was great, but only for experienced Ruby programmers. Others said it was great, but too expensive. But all I noticed was people saying it was great. I tried it, immediately loved it and will never use anything else.

RubyMine is great, but only for experienced programmers

I honestly cannot see the logic behind this statement. As an inexperienced programmer just starting out, I found it to be invaluable. The guidance it provides in the form of syntax highlighting, code completion, refactoring and debugging is incredibly useful for people just learning.

RubyMine is great, but too expensive

I couldn’t disagree more. I’m personally happy to pay a little for something that’s lightyears better than anything else out there. Why wouldn’t I? If a tool helps you work better, faster and more efficiently than it’s an easy decision. And RubyMine does exactly that, it makes me a better programmer.

So How Did RubyMine Help Me Learn to Code Faster?

I attribute my accelerated learning and productivity curve to several features that I relied on daily.

Searching Everywhere

Every tutorial and screencast I worked through had at least one thing in common, constant clicking around to find files to work in. I did the same before finding RubyMine and found it tedious and inefficient. With RubyMine, however, I just double tap SHIFT and a lightweight window pops up with all my recently edited files. And if the file I’m looking for isn’t immediately visible I simply type the first couple of letters and it shows up on top. I can literally jump to any recently edited file within two seconds. It has been a tremendous time saver.

1_search_everywhere

Somewhat related, RubyMine has a small feature that can automatically close all project folders. Simply double click on your app directory. No more clicking to collapse each individual folder to keep your work space clean.

Code Completion

Every IDE I’ve tried offered this to some degree, but none come close to RubyMine. What takes several keystrokes in other IDE’s takes a couple in RubyMine. It may seem insignificant but it adds up, both in the overall time spent typing out unnecessary code and in the additional focus you can maintain. This may not be something an experienced programmer would benefit from, but as a beginner everything takes mental focus. And something as simple as methods being completed and indented properly, every single time, really helps.

2_code_completion

Syntax Highlighting and Guidance

Every IDE I’ve tried offers this, but yet again, none as intelligently as RubyMine. As I’m typing I can immediately see what belongs to what and if any syntax errors were detected. The highlighting extends to a broad range of colors depending on how complex or long your code spans. I found this especially useful when working in ERB files. In an ERB I could have a long complex table filled with both HTML and Ruby, requiring multiple scrolls to work within, and immediately know where I’m at. RubyMine will dynamically show code guides, floating at the top of the work space, to help understand where the code you’re working on begins. No confusion, no scrolling, no wasted time.

3_hints

Automatic Refactoring

The time saving benefits of this are obvious. What is less obvious, at least for new developers, is the insight it provides. Working through any tutorial or screencast will often only show the easiest refactorings, while RubyMine tends to show you the best for the given situation.

4_refactoring

Built-in Documentation

I relied on this heavily, must faster to hit a keyboard shortcut and be studying documentation within seconds than having to Google, sort, read, back up, start over. Countless times I was able to get my answer and get back to coding.

5_documentation

Customization with a Hidden Benefit

The first thing I really liked about RubyMine was that I had full control to customize it to my heart’s content. I could literally change anything I wanted which was a relief after realizing how restrictive other popular IDE’s were (not to mention the learning curve built into every setting). As I worked to make everything just the way I liked, I noticed that RubyMine labeled everything in an easily referenceable manner, meaning it displayed the name for every type of code I could format (for example constants, instance methods, functions and keywords). This was true for everything from Ruby to JavaScript to CSS. The hidden benefit was the indirect knowledge of the proper name for everything. This helped me to find solutions to my problems faster by forming the best searches and questions.

TL;DR
RubyMine helped me learn to code faster by removing all unnecessary tedium, by helping to prevent countless common errors and by providing valuable documentation and guidance along the way.
This in turn helped me to go from learning to code to launching my startup, Nuvro Project Management, in just under one year. I can honestly say that RubyMine played a big part in my ability to learn and launch within one year and that I will be using RubyMine to grow Nuvro for years to come.

image description