![shutterstock_407664745](/binaries/content/gallery/dice/insights/2016/07/shutterstock_407664745.jpg)
Back in the pre-Internet days, being a programmer was a lot simpler: you had the programming language (of course) and a manual. You edited the source code file with an editor, then ran the compiler and linker. In the mid-1980s,
Borland made life a little more interesting by providing an IDE with a built-in compiler and linker for Pascal and
C++: when you got an error, the editor showed you the faulty line. Plus, compiles were fast. Since those ancient days, programmers have come to rely on an ever-broader set of technologies. If you program games for a living, for example, you may need to edit graphics, just in case an artist supplies the files in the wrong size or format; if you work in databases, you need to know your way around
SQL clients. While the Web has expanded the complexity of working in tech, it also offers easy access to all manner of tools and tips. With that in mind, you might think that any list of “Five Technologies to Master” would only include new and up-and-coming languages and tools. And while you could certainly compose such a list, we’ve decided to focus on tried-and-true tech—the stuff you may very well need next year to build platforms that people will actually use, not to mention land a job. No matter how the market twists and turns, demand for those skilled in, say, HTML is unlikely to go away anytime soon. (Speaking of HTML, it may seem odd to some readers that we’ve included it here, but not JavaScript. If you include JavaScript, however, then you probably need React, jQuery and several other packages or frameworks—whichever is current and most popular now, and in two years’ time sure to change again. HTML is more of a fundamental technology, and we only have so much space.) Here are five technologies that could come in very useful, depending on your interests and focus:
Go/Rust
Although Go started life at Google as an experiment, Docker and other firms have embraced the language as a means for powering their infrastructure, and it’s easy to see why: with fast compile times and execution speeds, not to mention support for concurrency using a simple method (Goroutines), it offers programmers a plethora of options for building and maintaining new and existing technologies. Go is also object-oriented, but there’s no type hierarchy. Here's ‘Hello World’ in Go:
package main
import "fmt"
func main() {
fmt.Println("Hello, World")
}
Rust, from the makers of Firefox, is a systems programming language that runs fast, prevents segfaults, and guarantees thread safety. Unlike Go, Rust does not have a garbage collector (Go's is very fast) so Rust programs can be used in embedded systems. Like Go, Rust relies on braces for code structure—but Rust is more complicated. Both languages are completely free and have an ecosystem of support tools. The Rust
blog entry "Stability as a Deliverable" sums up Rust's philosophy;
it has made notable appearances on RedMonk and other programming-language lists as a platform to watch in coming years. Here's a good example of Rust:
let number = 13;
println!("Tell me about {}", number);
match number {
// Match a single value
1 => println!("One!"),
// Match several values
2 | 3 | 5 | 7 | 11 => println!("This is a prime"),
// Match an inclusive range
13...19 => println!("A teen"),
// Handle the rest of cases
_ => println!("Ain't special"),
}
let boolean = true;
// Match is an expression too
let binary = match boolean {
// The arms of a match must cover all the possible values
false => 0,
true => 1,
};
println!("{} -> {}", boolean, binary);
}
Git
Nowadays, everyone should use a Version Control System (VCS). A VCS is a repository that holds your code and data. It tracks changes, which you can view using diff utilities such as the open-source
meld. All VCS work roughly the same way. You set up a project with source-code files. Anytime you wish to work on files, you check them out, edit, and then check them back in (commit).
Git, written by Linus Torvalds of Linux fame, is a distributed VCS, so it can be used by remote team members who work on files independently, then merge changes with other team members. If there are conflicts because two people made different edits to the same file before merging, then Git will highlight the conflict(s) in the file when merged; you must manually edit and fix them. There are other VCS options, but Git is by far now the most popular. Of the four VCS we examined,
Perforce is the only commercial product (but is also available free for up to five developers).
HTML
Of the five technologies discussed here, HTML is by far the simplest. All HTML documents start and end with HTML tags. The '/' means it's a closing tag, and many HTML tags use this open tag/close tag way of doing things. (For those just starting out with HTML, head is the optional non-visible part of the document, and body contains the visible part.) Most other HTML tags are used for layout and text format; they’re likewise easy to use. The point here is that, although HTML is very old by technology standards, it’s still widely used—if you don’t know it, make a point of changing that this year.
Python
If there is one programming language that you should know, it's Python. Back in the pre-Internet days, Basic was the one that technologists of all stripes needed to be familiar with; now Python is the new Basic. It's a general-purpose programming language, though probably not one you would use to write “heavy” applications such as games or operating systems (those still belong to C++). Python is very easy to learn and stands out from the pack by using indentation instead of braces to structure it. This is taken from the
Python Wiki:
parents, babies = (1, 1)
while babies < 100:
print 'This generation has {0} babies'.format(babies)
parents, babies = (babies, parents + babies)
It's interpreted, so you can play in the Python shell and try commands and expressions out. It's quite fast—but not as fast as an optimized, compiled language. It has a massive library, and there are ways of gaining extra speed. You can use an alternate implementation such as
pypy, or compile it to C with
Cython; if you know C, you can write your own C,
Go, or
Rust extensions. Python is also popular with scientists. With the availability of
Intel Python (free), it has become a
viable language for machine learning, including Big Data, neural networks and other technologies. The Intel distribution includes over 100 packages (NumPy, SciPy etc.) optimized to use Intel MKL and Intel TBB libraries, which are included and also free. Most of the heavy lifting is done by the optimized Intel libraries. Indeed, a developer survey by
JetBrains (which also introduced Kotlin, the up-and-coming language for Android development) has 49 percent saying they use Python for data analytics, ahead of web development (46 percent),
machine learning (42 percent), and system administration (37 percent). Python continues to swallow the world.
Linux
This is another one that should top everybody’s list. Even if you’re a dedicated Windows user and programmer, knowing Linux gives you a nice base that allows you to learn and use many technologies faster. For instance, Python, Go, and Rust are a more natural fit on Linux. (To compile Rust programs on Windows if you don't have Microsoft VC++, you will need MinGW, a set of GNU compilers and utilities for developing and running on Windows). For those Windows users, you won't need to buy another PC or try configure your system to dual-boot Windows or Linux. Instead, download the free
VirtualBox and install a
Linux distribution (I suggest Ubuntu 14.04 LTS or 16.04 LTS). This lets you learn Linux, install many programming languages, run a local LAMP (Linux Apache MySQL PHP) web server, and even try a little development work.
Conclusion: Technologies That Count
While new and emerging technologies get a lot of hype—some of it justified—it always pays to know some of the fundamentals of the programming world. If you lack working knowledge of something like Linux, make it a point to get more familiar with it. After all, the
more specialized skills you possess, the more money employers are often willing to offer you.