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:
- Decide which language (singular) to learn
- Choose an IDE
- Work through a couple of tutorials
- Build my prototype
- Develop a deeper understanding of programming over time, if necessary
What actually happened was:
- Decide which primary language to learn
- Realize that secondary languages/frameworks would also be necessary
- Invest weeks of valuable time trying every IDE in existence
- 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
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.
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.
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.
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.
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.
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.
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.
Customization with a Hidden Benefit
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.