[Series] IT Jobs - Part 2: The Language of Creativity

E

Eric Hansen

Guest
In the first article, I wrote about learning a programming language. But, there’s a lot more to the topic than was stated; this is mainly due to the fact that there are so many languages out there and no de-facto one to learn. There’s some companies that will want you to know J2EE (enterprise-level Java), some Ruby or Python, then there’s also Perl...and between those there’s also R, PHP, SQL, NoSQL syntax (varies on server platform), etc… I think you get the point. ;)

While this won’t cover all, or even most or half, I want to focus on the ones I’ve primarily seen, and some pointers on where to start.

Python

I made this first because its my favorite language. Its also one that will greatly spoil you if you switch to something more definition-based such as Java or C/C++, where you have to declare what type a variable is.

First thing you’ll want to do is learn about virtualenv for Python 2 (Python 3 has its own system), as it will save you a lot of headaches. I covered this in another post as well, but essentially you’ll be making mini-virtual machines of sorts for your Python projects, so dependencies don’t mangle with each other.

This one is tough because Python has a lot of uses both as web and regular application development. These days a lot of the grunt work seems to be web, but there’s still a lot of people who use it for system as well (i.e.: Supervisor). The great thing is that overall the techniques will translate well between the two, so you’ll be spending more time working with frameworks rather than trying to decide if a staticmethod or classmethod should be called.

PHP

I’ve used this for a very, very long time. Right now I mostly stick with it for clients who want work done for Blesta, it was my go to before I discovered Python.

PHP never really took off from my experience as a system language, unlike Python and Perl. PHP has basically been solely focused on web applications, and it does excel at that.

Getting started with this language is tough, because it imposes some standards that mix Python and C++, like not having to define variable types but being able to have code formatted almost any way you like it.

You’ll most likely be better off learning how to work PEAR (PHP’s package/module system) to make your tasks easier, but there’s also a lot of people who provide code that does the same without the hassle of PEAR’s sometimes-flakiness. Starting in this language would be viable if you’re looking for a strictly web application position, as its not majorly popular on the sysadmin side of things due to its intended web nature.

Shell

Ah, shell. How you have grown yet stayed the same for oh so many years.

My gripe with this is that there are so many subsets of the ‘shell’ language (Bash, Ksh, Zsh, Csh, Dash, etc…) that while learning some translates well, its like trying to learn Latin when all you know is English (you’re going to have a bad time).

This is a major skill set to have though for the sysadmins out there. Shell and Perl are the de-facto languages to at least understand if you want to be efficient at your job. This is mostly due to the nature sysadmins tend to have, which is being lazy. If you can script something out to do a task in 1 minute that usually takes 15, why not? Most of those are done in shell and Perl (though, Python and Ruby are growing there too).

With that said, Bash is the technical de-facto subset to learn. While I feel Zsh is more powerful, Bash is more universally used, and gives you the best fundamentals to translate between others.

Ruby

Now we’re getting to the languages I’m not too familiar with...with this being the least familiar...but I do know enough to give some pointers.

This one is basically the step-child of scripting languages. While it can be used as a sysadmin tool, its true pride and power comes in the form of web applications, quite like PHP. As such, if you want to migrate from PHP to a more strict syntax, the move from PHP to Ruby would probably be the most beneficial.route if you want to learn this language.

Perl

The granddaddy of all languages, Perl. Once a herald of the ages, now a fading memory in a lot of peoples’ toolkits.

This language originally started out as an efficient language to parse text files (logs mostly), and has grown since. Before, it used to be if you didn’t know Perl, you were going to be hard-pressed to find a job. This is also the language that really put regex on the map, as it made parsing thousands of lines of files very effortless.

While I don’t see a lot of reason to learn the in’s and out’s of this language, I can see the benefit of knowing regex from its maker, since it is rather likely you’ll be using it a lot in the other languages (all of which I’ve mentioned support this).

JavaScript

Normally, I wouldn’t even mention this language, as I used to loathe it. However, if you want to venture into web application development this is one of those “need to know” languages. Luckily, with the invention of Node.js things can be extended to sysadmin tools as well (though, not sure how much if any exist currently).

In learning JavaScript itself the big player in terms of wrappers is jQuery, so there’s the ever growing need for that experience. Luckily, there’s a lot of documentation, and the official documentation is extremely helpful as well.

If you’re wanting to learn Node.js, there’s no dire need to learn Node.js before or jQuery or vice-versa, since they both offer strengths and weaknesses. Node.js also isn’t as popular around where I live, so I can’t speak on what a lot of people are looking for.

Conclusion

Your mileage very well could vary, as I tend to pick up on new things pretty fast while others it might take longer. But, the more time you devote to programming, the better off you’ll be when it comes to interviews that involve it.

The biggest piece of advice that I can give for learning any language, not just the ones given above, is to think of something you want to make and then do it. Whether its already been done before, that doesn’t matter. I.e.: I learned Python by making a backup service because I was wanting to offer it. I learned PHP by building a website to store/display poems I’ve written. I picked up Java to write an Android app that serviced notifications.

Do I think you should do the standard game programmer trap and aim for the next AAA title? No, but in developing something you would enjoy using, you learn quicker the techniques and hurdles that the language has.
 

Attachments

  • slide.jpg
    slide.jpg
    58 KB · Views: 203,441


Perl is useless as far as I am aware. In Python, I can use the "re" library instead of using Perl. Many Perl scripts I have viewed contain many lines with the "sed" command. Python's re library can easily replace sed.

Javascript is very helpful especially for web-designers.

In my personal opinion, C/C++, Python, Javascript, Java, SQLite3 (database language), HTML5 (markup language), and Bash (or Powershell for Microsoft fans) are the most important languages to learn. True, I do not like Java (at least in this point of time), but I know it is useful and widely used.
 
Perl is useless as far as I am aware. In Python, I can use the "re" library instead of using Perl. Many Perl scripts I have viewed contain many lines with the "sed" command. Python's re library can easily replace sed.
It depends. I've seen a few jobs (mostly @ Ford Motor Company) that calls for it (and heavy). Its still a nice language to learn the delicates of regex, as every language's interpretation of that sublanguage is different.

Javascript is very helpful especially for web-designers.

Yes and no. There's very few jobs I've seen that call for pure JS. Its usually better to learn a library of it (Node.js, jQuery, etc...).

In my personal opinion, C/C++, Python, Javascript, Java, SQLite3 (database language), HTML5 (markup language), and Bash (or Powershell for Microsoft fans) are the most important languages to learn. True, I do not like Java (at least in this point of time), but I know it is useful and widely used.
SQL itself is important to learn, not just bound to SQLite3 (as its mostly just popular for mobile apps or small sites). PowerShell is more similar to Python I think.

Again, it all depends on what you're looking to get into and what your area's market calls for, as this list was mostly a "how to get started".
 
Again, it all depends on what you're looking to get into and what your area's market calls for, as this list was mostly a "how to get started".

True, but it helps a lot to know many languages so the individual is qualified for more work. Imagine needing a job and the description says "... must know <some-language>...". If I know that language, then I can get the job. It seems like many people tend to learn one language and then stop. True, learning programming can be hard at first, but it gets easier with each language learned.
 
True, but it helps a lot to know many languages so the individual is qualified for more work. Imagine needing a job and the description says "... must know <some-language>...". If I know that language, then I can get the job. It seems like many people tend to learn one language and then stop. True, learning programming can be hard at first, but it gets easier with each language learned.
I agree and disagree. While one shouldn't stop at just one language, you have to also figure out what your strengths are, where you want to be, and what it takes to get there.

I.e.: I'm more of a backend dev, so I focus more on Python, PHP, etc... that has their groundings in creating the services, then I slap Bootstrap or whatever for a pretty little UI. Now, if I have to write custom CSS and such I'm fine with it, but I find myself Googling how to do this or that more when it comes to UI/frontend.
 

Members online


Top