Get an IDE(a)
In the coming weeks I will being posting my first coding tutorials – guides on how to get started with code and how to better understand coding practices. As I’ve been constructing these guides and tutorials, one issue that continues to plague me with a sort of “writer’s block” is the process of instructing a newbie how to download and install an IDE and an SDK.
An IDE (integrated development environment) is a topic that I’ve discussed in my coding definitions post. For a very brief summary, an IDE is a program on your computer that allows you to write, edit, and test code. Think of it like a kitchen where you can prepare, cook, eat, and then retool your food as needed.
Without the tools necessary, you are not going to make it very far.
An SDK (software development kit) is a package of software that grants you the necessary tools to be able to develop for a certain platform or programming language. If an IDE is a kitchen, the let’s think of an SDK as a box that contains all of the ingredients and cookware necessary to make certain types of meals.
SDKs are absolutely necessary to coding. Without them, our computer has no way of trying to figure out what it is we are doing with our code.
SDKs as Ingredients
Imagine if I were to tell you to make a pizza using only the ingredients in your fridge. You look to find that the only ingredients you have are celery, eggs, and orange juice. Sounds like a recipe for success, right?
The truth is, you either aren’t going to make a pizza or you are going to make an abomination.
Your computer thinks the same way. If you were to tell the computer to help you write and run some Python programming, without giving it the tools necessary to make a Python program, you will not make it very far. Because of this relationship between being able to program and having an SDK, they are considered required to code.
Teach Me How to SDK!
You may be asking yourself, Where on earth do I get an SDK?
The answer is that it varies depending on what language you are looking to program in. A simple Google search of “(programming language) SDK” will typically route you to the website of the creator’s of the language. These sites will typically house the SDK which can usually be downloaded for free.
Be mindful of system requirements (how capable your computer needs to be) when downloading an SDK. Most languages will have multiple versions of the SDK available for download, for different computer speeds and hardware specs. Check to make sure you are using the right version before you click “Download”.
Where Do I get an IDE?
Your choices in IDE, on the otherhand, are often varied. Some programming language SDKs will even come packaged with their own IDE.
Over time, you will find that when working with big, popular languages, there are usually a handful of third-party Integrated Development Environments that each come with their own benefits and drawbacks. So our new question becomes, What is the right IDE for me?
Why Understanding Your IDE Matters
One of the things that I feel I have tried to stress in my posts is to not get discouraged when you first begin programming.
Before I became the (semi) capable coder that I am now, I tried to pick up coding once before on my own many years ago. I didn’t make it very far, mostly because of all of the jargon, concepts, and lingo that I had a hard time grasping. One of these concepts that proved difficult was teaching myself how to use an IDE.
Nowadays, it feels like second nature for me to download a new IDE, set up some basic view and editing options that I like, and get to coding. But learning how to properly use an IDE took time and persistence. Back then, the plethora of options and functions that I didn’t understand simply deterred me from wanting to code.
Looking back, it feels silly that I would quit over something so trivial. IDEs are a necessary piece to the coding puzzle, and they are some of our greatest allies in programming.
What an IDE Looks Like
I recently got a new computer, so downloading IDEs and SDKs is fresh to me once again.
As an example, let me show you a sample of one of the first screens I was greeted with when firing up my IDE.
I say that this is one of the first screens because to even reach the big coding area in the middle I had to do a few clicks. Without these clicks, I would’ve had those trays of options to the left and top of the screen and a big blank space in the middle.
Now, I will be the first to admit how daunting this may look for brand new programmers, but again, this is where IDEs matter so much.
The huge variety of IDEs out there gives us the ability to choose form over function, or function over form. An IDE like the one shown above (IntelliJ) may not be suitable for a brand new programmer because it almost offers too much freedom and too many choices. You may decide that something a little more restrictive and to the point is right for you. The choices are all yours.
As you continue to grow and develop as a coder, you can always change your integrated development environment down the line – you don’t have to stay married to one in particular.
For Java programming alone, I have used 5 different IDEs over the course of about two years!
Things to Consider When Choosing an IDE
As with all choices in life, there are pros and cons when it comes to your choice in integrated development environment.
Do you want something feature-rich under the hood but barebones on the surface? Do you need something that can easily connect to your GitHub account or do you need something that works better at storing locally or on connected drives?
Sit down and consider what your goals are with your programming, and make a list of what you want out of an IDE. Bear in mind, we can always download and run a new IDE later, so don’t feel force yourself to overthink.
A few differences and functions that I’ve found between IDEs that may be worth consideration are listed below, in no particular order.
Ease of Use
In programming, there is a sort of benchmark that determines how easy it is to understand and begin working in a new language. This benchmark is gauged by the ease (or difficulty ) in one’s ability to make the words “Hello World!” appear on the screen.
In Java, this takes a couple of lines of code. In Python, it takes one.
I view IDEs similarly, in that it’s important to know how difficult it is to “get started”. In some IDEs, you’ll need to make 5 – 6 clicks before you reach a screen that gets you remotely close to being able to write some code. In the IntelliJ screenshot I included above, it took me about 5 clicks to make it that far.
Some IDEs keep things simple and streamlined so that you can write code (and not much else) and this may be something that is appealing to you in the early programming days.
Look and Feel
I would argue that being shallow when it comes to IDEs is a wise decision. Bear in mind that your eyes will be staring into these windows for hours on end. Not only do you want something easy on the eyes but also something that makes reading your code easier.
A lot of IDEs offer to automatically format or color-code sections of your code for you, and these features are always helpful. Keep in mind, some integrated development environments will also use the ability to customize the color schemes as a selling point, but this is unnecessary.
We don’t need to be able to adjust every individual aspect of the look, but having some variety will help you read your code faster and for longer periods of time.
One of the functions that I didn’t really start capitalizing on until recently in my IDE is the built-in auto-complete functions. Much like the auto-complete on your smartphone, some IDEs come with the ability to read what you are typing and to guesstimate what you are trying to write.
Here’s how it works:
You want to type a specific function or method or class name. After a few key strokes, a list of suggestions will appear that you can choose to utilize. The IDE will find classes, methods, and functions with the combination of letters you have typed, and will let you select a suggestion from the list. One click and BOOM. The thing you were typing is now spelt out for you, which comes in handy when typing lengthy function names.
Some IDEs even offer deeper functions in this realm, such as being able to auto-import libraries. This is a great feature, and is something I will discuss in my second round of definitions.
Now here is where I confuse you.
When you first start coding, I recommend you avoid utilizing the auto-complete functions. Not using these shortcuts will help you better ingrain the syntax and functions into your brain, as opposed to stringing together lines of suggestions. We have to understand fully what we’re doing before we let the computer do it for us.
GitHub and Sharing Capabilities
If you plan on utilizing your code online, or sharing online, make sure the IDE you choose has some capabilities as far as ease of sharing. Some of the more basic IDEs don’t offer anything in the way of online sharing/ uploading, while others offer complete integration with GitHub and other online project software. In my experience, GitHub abilities have been hugely helpful, especially when coding for projects that require a lot of different people to collaborate, so this might be something to consider more heavily if you plan on coding for work or school purposes.
All of the IDEs I have used thus far have been completely free, but a few of them offer premium versions with more features and support for a monthly or annual fee. When first starting out, I would strongly recommend choosing a free IDE and then later only purchasing one after it is necessary, as I would hate for you to spend $50 on an upgraded IDE only to realize you don’t utilize any of the added benefits.
Java IDE Recommendations
I am in the process of vetting a few new IDEs for Python as I dive back into my Python roots, but given that I have been coding pretty Java heavy lately, here are my experiences with a few popular IDEs.
Best for Beginners: BlueJ
BlueJ was actually the second IDE that I used for Java, and beginner-me wishes it was the first. This IDE is incredibly barebones in comparison to the other IDEs I’ve worked with, but it is fantastic for students or coders who are just starting out.
BlueJ offers some functions in terms of auto-formatting and look and feel enhancements, but I personally like how easy it is to get it up and running. It also comes prepackaged with the Java SDK in the BlueJ download, so you have one less thing to worry about in that regard. One of the neatest features of BlueJ is that it has a pseudo-UML design to the projects, meaning that when you look at your project and it has multiple classes within it, BlueJ will use arrows and symbols to show you which classes call to other classes and how they relate to one another. If you have no experience coding so far and want to start with Java, BlueJ is the way to go.
NetBeans and Eclipse are considered two of the industry standards when it comes to Java programming. Each has a wealth of integration abilities and offers some neat features in the way of sharing and collaboration. Also worth noting is that each of these can be used to program other languages in addition to Java, such as C and C++.
Both of these IDEs are completely free and open source, meaning that you can find tons of useful plug-ins and add-ons developed by the community of programmers who use each. Some of these add-ons are hugely helpful when working with some deeper concepts such as graphic design. For folks who have a little bit of coding background and want to continue to hone their skills, either of these options is great, though I personally like the overall look and feel of Eclipse slightly better.
My Personal Favorite: IntelliJ
I started using IntelliJ based off of a recommendation from a friend and have never looked back. IntelliJ offers a ton of the functionality found in NetBeans and Eclipse and is relatively easy to use. There are enough options for customization to make sure that this IDE stays easy on the eyes, and the auto-import and auto-complete functions are well-made. IntelliJ also has the ability to program in languages other than Java, such as Scala and Android, and also has some solid collaboration and uploading features.
My favorite part of IntelliJ is the very intuitive error-catching system, which reads through your program as you type and finds errors and factors that don’t seem to add up just right. It will highlight problems that it finds, recommend solutions, and also offer to show you an explanation of why this is a problem. This has saved me countless hours that I would’ve spent compiling and running code only to receive an error message in return.
Which Do I Pick?
While I only gave some brief thoughts on 4 of the IDEs that I have used, remember that there are dozens more out there, and that one of these may meet all of your needs. Also, don’t feel like you must pick one IDE and stick with that one, download a few IDEs and play around with them until you find one that meets the groove of what you’re trying to do.
Do you have any suggestions for IDEs that you enjoy? Or are there features in an IDE that I neglected to discuss? Let me know in the comments or drop me a line at firstname.lastname@example.org!