Our school's IT department just upgraded the server we run Moodle (an open source CMS) on from Windows Server 2003 to Ubuntu Desktop. They used the desktop version of Ubuntu because no one in the 13-man IT operation knew how to use Bash.
We hackers live in a gated community. I've seen people in shock when they find out someone doesn't run Linux as their main OS. I was flabbergasted to find out none of our IT folks knew how to use the terminal.
tl;dr The double bell curve of tech talent is still in full swing.
It doesn't really matter that they used the desktop version. The packages are all identical. The kernels are compiled slightly differently (server kernels have longer time slices) but you won't really notice that.
I lived through the era of Windows trouncing Unix. A major reason why it happened is because people were familiar with Windows on their desktop and found the gui tools easier to use on their servers. The various Unix vendors did start coming out with graphical administration tools, but many of them were pretty dire.
Using Ubuntu Desktop on the server means they can use it on their desktops and become familiar. And maybe they will eventually graduate to using command lines, but they don't have to for a lot of administration.
This is one of those places when distinguishing between the kernel and userland is not only useful but necessary. I just don't believe that "Ninety-three percent of hiring managers say they will hire a Linux pro in the next six months". Ninety-three percent of companies do NOT need kernel hackers, they want UNIX pros.
EDIT: By UNIX pro, I personally mean people who are familiar with the typical nix stack, e.g. GNU/Linux, BSD, Darwin. This would encompass sysadmins, programmers, etc.
And it may be that what they want is a Ruby/Python developer where the stack happens to run on Linux. Deployments are most likely to be to Linux environments (eg AWS). Consequently "Linux" in job descriptions really means a familiarity with the command line, and a propensity to build smaller components that can be run together.
We do all our development on Linux with one or two developers using Mac. I expressly forbid doing any development on Windows even though everything could run on Windows. This is purely because it takes longer, has more hassles, the tools aren't better (eg valgrind), awful package/dependency management, and it doesn't match deployment environments.
> "Ninety-three percent of hiring managers say they will hire a Linux pro in the next six months". Ninety-three percent of companies do NOT need kernel hackers, they want UNIX pros.
When you hear about companies needing Windows Pros, do you think they really mean Windows kernel developers? Why would a Linux Pro mean kernel developer, while UNIX pro would be more generic?
They want someone who knows the Linux ecosystem. There are Linuxisms that have nothing to do with UNIX. That's what they're talking about.
So I already know system admins are in high demand. I am a computer science undergrad and hope to get a sys admin job out of college. What should I be doing on my own to get a job like this? (besides playing with different linux distros and learning commands).
I would suggest looking into the Redhat certifications. Even if you don't want to take the test, they cover a wide range of topics that will give you a good base. The list of exam objectives alone will point you in the right direction to get started. You aren't likely to brush into things like autofs just playing around at home. But something like that is much more common in larger environments.
Learn to do things that you read about in system admin blogs. Spinning up VMs, clearing log files, and setting up monitoring systems. Learn to roll your own package. Even better yet maintain one for a distro and put that on your resume.
Make a effort to become familiar with several scripting tools. You don't have to master them all, but make sure to pick up enough to be able to read code in bash, perl, python, and maybe even ruby.
The final step to being a Linux admin is learn Windows. Most real world jobs require that you have to deal with both. Even if it is not your primary responsibility, you will need to know how to inter-operate with Active Directory and the services that hang off of it.
If you want to be a linux admin you should be comfortable with the command line. You should be able to write a simple bash script without needing to look up too much. You should be able to configure a LAMP stack from scratch without much hassle (looking at documentation here totally recommended).
I personally think the best way you can get started is by using the command line for everything "work" related. When you're doing your projects for school you should be using vim (or emacs if that's your thing). When you're navigating directories or performing file operations you should just use the terminal. Using the command line effectively is such a critical component of being an admin, and it just takes practice to get good at it.
The fact your doing computer science is a huge leg up, because you'll have a good understanding of the fundamentals of computers. When you work with linux you very often need to know the underlying mechanics of whatever you're working with. This goes hand in hand with being able to troubleshoot - a huge component of being an admin. Let's say you're troubleshooting an i/o issue on a server. When certain operations are performed on a SQL database in high volumes you notice the server starts to chug and i/o is severely bottlenecked. You need to know things like whether the RAID is configured correctly, and what the most optimal settings are for your usage. You need to know to check the i/o scheduler and make sure that's appropriate for what you're doing. Some of this stuff you won't know out of college, but you'll work with all of it eventually and pick it up. What counts is that you don't need somebody to explain the super basic stuff, you will already understand most things at a fairly high level. You should be able to pick things up quicker as a result, and cover significantly more ground than somebody learning Linux whose never really worked with computers seriously.
Anyway, that's longer than I meant to type up but hopefully you get the gist of what I'm saying. I'm slightly inebriated so sorry if my wording/sentence structure is hard to follow!
As I Linux sysadmin, here (in no particular order) are things that I've found most useful. I've no idea what level you're at, so if you already know this stuff, just give yourself a pat on the back; you're ahead of the game!
Most important: Have fun! If you're not enjoying it, get out because there's no point in wasting your life on this.
Learn to touch type: it's one of the most useful skills you can pick up and not just for IT work
Join your local Linux User Group. If your area doesn't have a LUG, start one! Put this on your CV.
Speaking of which, create a CV (resume) but putting down all the experience and skills you'd like to have. Then go and make it so! Get help with this by finding out which companies near you use Linux and asking for their help; which skills they're looking for and what technologies they're using. People are generally very happy to help people achieve things for themselves (and hate when they're really being asked to do the work for someone, so avoid that!).
Learn vi or emacs. It doesn't really matter which, just spend some time using it for all your text editing. Knowing a good text editor well is hugely important.
Distros: Install Gentoo from Stage 1 and run it for a while. Try Linux from Scratch at least once. Otherwise, just install a few different distros just for fun and to get an idea of what the differences are (they're not huge). Also, try out the BSDs at some point.
Learn and use git. It's quite simple to understand exactly how it works, so do this. Use it for day-to-day stuff. Get a github account and try contributing to other projects.
CLI. Use shell scripts for all sorts of things. Use one-line "for" loops for batch resizing images, or generating thumbnails. Forget about the GUI; it'll all have changed in a few years. CLI stuff will still be the same.
Web servers: learning Apache and ngnix. Get yourself something like an Amazon account. Whatever is cheapest. Use the API to create and remove servers and configure them.
Languages: shell scripting, Python and PHP are the ones you will encounter most. I see a bit of Ruby, but not a huge amount.
MySQL is very common. Again, learn the command line stuff, not some particular GUI.
Don't waste money on stupid stuff, aim to save about 65% of your net pay and become financially independent in 10 years.
Neither a borrower nor a lender be,
For loan oft loses both itself and friend,
And borrowing dulls the edge of husbandry.
I haven't read it yet, but the linked report may have the answer:
The 2013 Linux Jobs Report, conducted by Dice, [...] includes insights into why employers are seeking Linux talent now and what the top incentives are for Linux pros, among other important findings. Download the complete report [1]today.
By looking at the infograph, it seems developers, syadmins, and devops are amongst these 'UNIX pros', so not really kernel hackers. I'd assume few companies are in need of 'kernel hacking skills'.
I think a lot of people assume Linux pro means kernel dev or someone who writes software for Linux but my take, here at least, is that Linux pro encompasses server admins and people familiar with Linux on a networking / infrastructure level.
I think the distinction he was trying to make is that UNIX skills are those that are transferable between UNIX modelled OS's e.g. shell programming, administration, application development. Whereas a Linux pro would be someone whose skills are specifically on that platform. The most obvious reason being kernel programming expertise which is almost the epitome/definition of Linux.
This is great news for Linux. There are a LOT of companies who's entire infrastructure is the MS Windows environment and hopefully they'll begin the switch!
Increase in demand for Linux talent may indicate an increased use of Linux. It also sends up a flag for existing MS shops that says "Don't bother cause you won't be able to hire easily".
A significant chunk of MS's total cost of ownership argument is the wages of Windows admins versus Linux admins. This news only gives that argument more weight at least in the short term.
[+] [-] RKoutnik|13 years ago|reply
We hackers live in a gated community. I've seen people in shock when they find out someone doesn't run Linux as their main OS. I was flabbergasted to find out none of our IT folks knew how to use the terminal.
tl;dr The double bell curve of tech talent is still in full swing.
[+] [-] rogerbinns|13 years ago|reply
I lived through the era of Windows trouncing Unix. A major reason why it happened is because people were familiar with Windows on their desktop and found the gui tools easier to use on their servers. The various Unix vendors did start coming out with graphical administration tools, but many of them were pretty dire.
Using Ubuntu Desktop on the server means they can use it on their desktops and become familiar. And maybe they will eventually graduate to using command lines, but they don't have to for a lot of administration.
[+] [-] mtowle|13 years ago|reply
[+] [-] duaneb|13 years ago|reply
EDIT: By UNIX pro, I personally mean people who are familiar with the typical nix stack, e.g. GNU/Linux, BSD, Darwin. This would encompass sysadmins, programmers, etc.
[+] [-] rogerbinns|13 years ago|reply
We do all our development on Linux with one or two developers using Mac. I expressly forbid doing any development on Windows even though everything could run on Windows. This is purely because it takes longer, has more hassles, the tools aren't better (eg valgrind), awful package/dependency management, and it doesn't match deployment environments.
[+] [-] mhurron|13 years ago|reply
When you hear about companies needing Windows Pros, do you think they really mean Windows kernel developers? Why would a Linux Pro mean kernel developer, while UNIX pro would be more generic?
They want someone who knows the Linux ecosystem. There are Linuxisms that have nothing to do with UNIX. That's what they're talking about.
[+] [-] Nux|13 years ago|reply
[+] [-] snarfy|13 years ago|reply
I occasionally have recruiters contact me believing this means I'm a perl/awk/bash wizard.
[+] [-] jazzex|13 years ago|reply
[+] [-] lmickh|13 years ago|reply
Learn to do things that you read about in system admin blogs. Spinning up VMs, clearing log files, and setting up monitoring systems. Learn to roll your own package. Even better yet maintain one for a distro and put that on your resume.
Make a effort to become familiar with several scripting tools. You don't have to master them all, but make sure to pick up enough to be able to read code in bash, perl, python, and maybe even ruby.
The final step to being a Linux admin is learn Windows. Most real world jobs require that you have to deal with both. Even if it is not your primary responsibility, you will need to know how to inter-operate with Active Directory and the services that hang off of it.
[+] [-] carlisle_|13 years ago|reply
I personally think the best way you can get started is by using the command line for everything "work" related. When you're doing your projects for school you should be using vim (or emacs if that's your thing). When you're navigating directories or performing file operations you should just use the terminal. Using the command line effectively is such a critical component of being an admin, and it just takes practice to get good at it.
The fact your doing computer science is a huge leg up, because you'll have a good understanding of the fundamentals of computers. When you work with linux you very often need to know the underlying mechanics of whatever you're working with. This goes hand in hand with being able to troubleshoot - a huge component of being an admin. Let's say you're troubleshooting an i/o issue on a server. When certain operations are performed on a SQL database in high volumes you notice the server starts to chug and i/o is severely bottlenecked. You need to know things like whether the RAID is configured correctly, and what the most optimal settings are for your usage. You need to know to check the i/o scheduler and make sure that's appropriate for what you're doing. Some of this stuff you won't know out of college, but you'll work with all of it eventually and pick it up. What counts is that you don't need somebody to explain the super basic stuff, you will already understand most things at a fairly high level. You should be able to pick things up quicker as a result, and cover significantly more ground than somebody learning Linux whose never really worked with computers seriously.
Anyway, that's longer than I meant to type up but hopefully you get the gist of what I'm saying. I'm slightly inebriated so sorry if my wording/sentence structure is hard to follow!
[+] [-] phaemon|13 years ago|reply
Most important: Have fun! If you're not enjoying it, get out because there's no point in wasting your life on this.
Learn to touch type: it's one of the most useful skills you can pick up and not just for IT work
Join your local Linux User Group. If your area doesn't have a LUG, start one! Put this on your CV.
Speaking of which, create a CV (resume) but putting down all the experience and skills you'd like to have. Then go and make it so! Get help with this by finding out which companies near you use Linux and asking for their help; which skills they're looking for and what technologies they're using. People are generally very happy to help people achieve things for themselves (and hate when they're really being asked to do the work for someone, so avoid that!).
Learn vi or emacs. It doesn't really matter which, just spend some time using it for all your text editing. Knowing a good text editor well is hugely important.
Distros: Install Gentoo from Stage 1 and run it for a while. Try Linux from Scratch at least once. Otherwise, just install a few different distros just for fun and to get an idea of what the differences are (they're not huge). Also, try out the BSDs at some point.
Learn and use git. It's quite simple to understand exactly how it works, so do this. Use it for day-to-day stuff. Get a github account and try contributing to other projects.
CLI. Use shell scripts for all sorts of things. Use one-line "for" loops for batch resizing images, or generating thumbnails. Forget about the GUI; it'll all have changed in a few years. CLI stuff will still be the same.
Web servers: learning Apache and ngnix. Get yourself something like an Amazon account. Whatever is cheapest. Use the API to create and remove servers and configure them.
Languages: shell scripting, Python and PHP are the ones you will encounter most. I see a bit of Ruby, but not a huge amount.
MySQL is very common. Again, learn the command line stuff, not some particular GUI.
Don't waste money on stupid stuff, aim to save about 65% of your net pay and become financially independent in 10 years.
Neither a borrower nor a lender be, For loan oft loses both itself and friend, And borrowing dulls the edge of husbandry.
....and that's about enough of that!
[+] [-] griffindy|13 years ago|reply
[+] [-] zdw|13 years ago|reply
A short list:
- Systems monitoring and being able to recognize and resolve performance problems
- Being able to fix/compile/modify/package software
- Being somewhat of a polyglot. Knowing shell, a few scripting languages, config languages, regular expressions, etc.
- Being able to identify and fix hardware related issues
[+] [-] felideon|13 years ago|reply
The 2013 Linux Jobs Report, conducted by Dice, [...] includes insights into why employers are seeking Linux talent now and what the top incentives are for Linux pros, among other important findings. Download the complete report [1]today.
By looking at the infograph, it seems developers, syadmins, and devops are amongst these 'UNIX pros', so not really kernel hackers. I'd assume few companies are in need of 'kernel hacking skills'.
[1]http://www.linuxfoundation.org/publications/linux-foundation...
[+] [-] mikegioia|13 years ago|reply
[+] [-] s_kilk|13 years ago|reply
[+] [-] Toenex|13 years ago|reply
[+] [-] mikegioia|13 years ago|reply
[+] [-] lmickh|13 years ago|reply
A significant chunk of MS's total cost of ownership argument is the wages of Windows admins versus Linux admins. This news only gives that argument more weight at least in the short term.
[+] [-] snake_plissken|13 years ago|reply