This post points to a few outstanding tools for developers. It’s a short list of things that I’ve found really helpful as I’ve tried to teach myself to code. Obviously any resource is helpful, but right now these are some of the most popular and widely-used resources. You’ll get more deeply embedded into the culture more quickly by getting familiar with these tools early. As I’m a .NET developer above all else at the moment, these tools skew that direction.
Scope of Application
This applies to anyone looking to learn to code who has access to online resources. As of April 2014, most of this was pretty hot stuff and on the list of what the cool kids are using.
As far as I know, this is the #1 place for Q&A information for programmers online. Stackexchange is an umbrella Q&A site that includes a long list of sites divided into general categories. It’s the coolest forum-like technology that I’ve seen. Specifically, you want an account on Stackoverflow.com. But Stackexchange users are protective of the site’s format and rules. Stackoverflow isn’t the right place for all questions. You might also want to link an account to Superuser.com, for example.
Generally, the community there is incredibly helpful. It’s mostly other developers hanging out, both asking and answering questions. Like any other online forum, it has its abrasive users, so if you “break a rule,” you might get bullied around just a tad. However, as long as you ask articulate questions and show yourself making an effort, you’ll be fine. And once you get a few tricks under your belt, you’ll also be able to answer other people’s questions. It feels good both because you’re giving back and because then you know you’re smarter than you were when you were asking the same question.
To really understand GitHub, you have to learn a little bit about version control and open source. This article by James Bruce provides a pretty good overview. But to give you the elevator pitch – GitHub is a place and a way to store and share your code. Just as importantly, it’s a place to browse through tons of open source code.
(If you don’t know what open source is, I would describe it as code that anyone is allowed to download and read. Programs and services that run on open source code are not necessarily free, though the majority are. The opposite of open source is proprietary code, which is code that is only distributed in encrypted or compiled formats and isn’t intended to be read by humans. A good example is Microsoft Windows. The code used to build the Windows OS is proprietary and not freely distributed. However, many flavors of the Linux operating system are open source and can be reviewed by anyone who is interested in taking a look.)
Even if you don’t have any code to share yet or don’t feel quite ready to contribute to an open source project, this is a great place to dig into cool programs and libraries and start learning how they work.
GitHub does offer private hosting for a fee, but with a free account, you can host unlimited open source projects.
GitHub hosts a Pastebin service called Gist, as well. There’s not a huge difference between the overall concept of GitHub and Gist, but Gist has a more narrow scope. You use it to post single text files rather than entire projects or groups of files.
I haven’t included a lot of actual downloads here, but I think this one is important. I started learning to code on a Windows machine and was tasked early on with developing solutions in a Windows environment. Visual Studio isn’t the only way to do that, but it’s the most powerful and the most convenient. When I first looked at the sticker price on Visual Studio, though, (and before I realized that most companies will purchase it for you if they expect you to use it (What can I say? I’m a dummy)), I was pretty intimidated. It’s an expensive tool. But Visual Studio Express is a free version that offers more than enough functionality for beginners. There are similar tools out there for programming to other environments, but I just wanted to point out for the total noobs that you can get your hands on Visual Studio and start using it now for $0.
Nuget is a plug-in for Visual Studio that gives you quick and easy access to tons of cool code. If you decide to program for Windows, you will hear about Nuget, and you will quickly come to love it. Basically, Nuget makes it really easy to host and consume code libraries. If you don’t know what those are yet, get Nuget anyway. As soon as you find out what code libraries are, you’re going to want it.
Chocolatey is Nuget’s Windows programs counterpart. What Nuget does for code libraries, Chocolatey does for programs. Quick snapshot: You know how when you want to download a program like Skype you have to go to the website, download the file, find the file, then run the installer? Well, Chocolatey makes it so you can just type the line “cinst skype” into the command line to do all of that automatically. In a lot of cases, you don’t even have to interact with the installer. It does everything for you.
Chocolatey doesn’t host every single program for Windows, but it hosts an impressive number. I’ve only found a handful of programs that I use that I can’t get through Chocolatey.
Boxstarter is something I’m still figuring out, but I’m absolutely sure it’s awesome. Basically, Boxstarter works with Chocolatey to make setting up a Windows system a one-command process. Quick snapshot: You just got a new computer. Now you have to go find all your programs, download them, install, etc., etc. Boxstarter allows you to write a pretty simple PowerShell script (which you can host on Gist, by the way–see how things are coming together?), which will then do all of those things for you.
I haven’t traditionally been a PowerShell user, and I just got started on Cocolatey a few months ago, so I’m still trying to get a handle on Boxstarter. But again, I’m absolutely sure it’s awesome, and it’s going to change the way I spin up a new computer.
This is the first thing on the list that has no free version–but it is worth ever penny. Pluralsight is web site that hosts training videos on a huge range of topics–everything from coding to professional development. It is heavier on the .NET technologies than open source, so you’ll probably get the most value out of it if you’re going to program for Windows. The training is well-composed, and they have a couple different subscriptions. One just gives you access to watch the videos. The next tier gives you access both online and on a mobile device, includes pre- and post-assessments of the various courses, and provides exercises. They also do an excellent job of labeling the material appropriately for your skill level. Beginner? Well, then don’t take the “Advanced” course to start out.
You’ve probably already heard of this one, but I recommend getting an account. This is an awesome online learning center that is adding topics all the time. Unlike Pluralsight, which I would say is more like vocational training, Coursera is structured as an online academic institution, offering courses on everything from robotics to anti-terrorism to business management from schools such as Princeton, Stanford, and the University of Copenhagen. They just added a feature they call “Specializations,” which allows you to earn a series of certificates that demonstrate a proficiency on a certain topic. For example, they have specializations on Data Science, Challenges in Global Affairs, and Mobile Cloud Computing with Android, among several others. Whether or not future employers or academic institutions will recognize these credentials is debatable and beside the point. The courses here are challenging and offer you opportunities to grow your knowledge and skillset with a more academic mindset.
I’ve found Khan Academy to be a little hit-or-miss, but it’s a force to be reckoned with. The range of topics is huge. It has some programming and computer science modules, but I’m actually recommending it for the math. As I’ve mentioned, computers were designed to do math. I didn’t come from that background. As a matter of fact, for better or worse, I spent a lot of my time in school figuring out ways to get out of doing math. Majoring in English helped a lot. Not a lot of my programming requires much more than basic math skills, and I handle that just fine. But every now and then a topic comes up that requires me to know just a little bit more than I really do. The nice thing about Khan Academy is that I can usually go straight to the module that I need and figure out where that sits in the spectrum. For example, I didn’t have a great grasp of logarithms, so I went to Khan Academy, found a great tutorial on it, and was able to see from there that this was an Algebra II topic. (Sometimes I don’t know when a problem is algebra, trig, or calculus. I don’t get the differences.) So Khan Academy is a big help in showing me knowledge dependencies.
These are a few others that I either know by reputation only or have used only lightly.
- Udacity – like Coursera but more like Udacity
- Plunker – like Github but can actually run code live for demos and such
- Regexpal – Simple tester for regular expressions that will give you immediate feedback by highlighting matches in sample text. Especially useful for learning regular expressions.
- Safari Books Online – Unrelated to the Safari browser, Safari Books is a subscription service that gives you access to a library of books on tech. The library is exhaustive and often includes books that have yet to go to press. They’re also starting to add videos, which might make it more valuable than Pluralsight in the long run.