How to get started as an open source programmer

Jonathan MathewsPublic

 

Looking out at the world of technology is exciting. It has a lot of moving parts, and it seems the further you dig into it, the deeper it gets, and then it’s turtles all the way down. For that very reason, technology is also overwhelming. Where do you start if you’re keen to join in and help shape the way the modern world functions? What’s the first step? What’s the twentieth step?

The first thing to understand is that open source is open. This might seem obvious, but the phrase “open source” is thrown around so often these days that sometimes people forget it’s just a description of a cultural phenomenon, not the name of a Fortune 500 company. Unlike other jobs or groups, you don’t have to interview or complete a sign-up sheet or registration form to become an open source programmer. All you do to become an open source programmer is program and then share your code, ideally with a guarantee that the code remains open regardless of how it’s used.

That’s it. You’re an open source programmer!

You now have your destination, but what about the logistics?

Skill trees

Have you ever played an RPG? In these games, there’s the concept of linear “skill trees”. When you play, you acquire basic skills that you build upon to “level up” and get new skills, which you use to acquire new ones and “level up” again. And so on.

Becoming a programmer is a little like adding to your skill tree. You get some basic skills, you practice them until they’re second nature, and then you get new skills, and so on, and then you are progressing along your chosen skill tree.

You’ll find you’ll encounter more than one skill tree. Open source has many entry points and many individuals with their own unique strengths, talents, and interests. However, certain definable skills contribute to being a great programmer, and developing them is an important part of participating successfully in open source projects.

Scripting

Scroll--How to program

One of the biggest advantages of a POSIX system like Linux or BSD is that every time you use your computer, you’ve got the opportunity to practice a little programming. If you have no idea where to start programming, then begin with how you work. Find repetitive tasks that you perform every day, and start automating them. This step can be something simple, like converting or re-sizing batches of photos, checking email, or even just getting the five applications you use each day launched with one click. Whatever the task, take the time to automate something for yourself.

If you can do something from a terminal, then it can be scripted. Learn bash or tsch and let system scripting be your introduction to writing code and to how your system works.

Sysadmin

Caesar head

From this point, you can continue on to become a programmer, or you can cross over to a different skill tree entirely: that of systems administration. The two careers have some overlap (a good sysadmin ought to have a little programming experience, and should be ready to wield Python, Perl, or a similar language to develop unique solutions), but a programmer is someone who builds with code day in and day out.

Programmer

Wizard hat--How to program

Open source is a great way to learn programming skills; you get to look at other people’s code, borrow ideas and techniques, learn from their mistakes, get a critique of your own code, and if you use Linux or BSD, the entire stack is open to you—as far as the eye can see, it’s all yours for the taking.

That’s what the travel brochure says, anyway. The reality is that you’re probably not going to start digging into the source code of a project and come out the other side with the sudden realization that you accidentally learned to code. Programming is hard work. If it wasn’t, everyone would do it.

Luckily, programming is logical and structured, so it builds upon itself. You might not fall into programming, but the more you poke at it, the more you start to understand it.

Understanding how to control and automate a computer is one thing, but knowing how to write the stuff that other people want to automate is the point that you cross over into the realm of programming.

Polyglot

Parrot--How to Program

All programming languages aim to do the same thing: make computers compute. Choosing one is a mix of what you think you want to do, what (if any) language is in common use in the industry you are targeting, and what language you happen to best understand given the materials available to you and your learning style.

With a little bit of research, you can get a good idea of a language’s complexity, and then decide what to try first based on your own level of comfort.

Another way to choose a language is to look at your goal, find out if other people are working toward the same thing, and then look at what they’re using. If your aim is to develop desktop tools, you might learn C and Vala for one, or C++ for another.

At the end of the day, though, don’t get overwhelmed with all the available choices. Languages stack well. Once you learn one programming language well enough to fall back on it when you need to get something done, you’ll find it a lot easier to pick up another one. A “language” is just a set of syntax and rules, after all; learn one, and it’s fairly trivial to superimpose new rules over the same theory.

The primary goal is to learn a language. Pick the one that makes sense to you or the one that’s most appealing to you or the one that your friends are using or the one that has the documentation you understand best, but focus on one and learn it.

Full Article