| So I set up a VPS for the first time this week, here's how it went: 1. Shell? SSH? Wtf is this? Console? Huh? Why am I using something that looks like DOS, it's 2013! Where is the GUI and menus?! So I learned about Shell/SSH, connected to my server, root and all that stuff. 2. Navigating folders and directories - dear god, this was a nightmare. I never used 'cd \' since '98 and that's only cause I wanted to run DOS games. 3. Kept seeing all these commands with '-' that makes installing extensions seem oh so easy! I wanted APC for PHP, stared at this page (http://pecl.php.net/package/APC) for an hour, trying to figure out what to do. Googled like mad. Searching for anything. Learned about "pecl install APC", nope no luck. Then I was told to compile it from source. Yeah, I know exactly what that means! Spent the next 4 hours trying to understand why phpize wouldn't work! Oh, I wasn't doing it from the right directory. -_- I mean, I'm slowly beginning to see how it all fits together but none of the education sites teaches you this stuff! It's like learning cooking recipes when you don't know how to turn the stove on, or what a stove even looks like. Or what's the difference between gas and electricity stove, how to turn on the tap to get water, etc. You learn a great recipe, know all the ingredients and the cooking time down to the second, but when it comes to use the tools and actually cook? Nope - cause I don't know how to turn on the stove or know what a stove looks like! (I know this is an extreme analogy) I wish tutorials would start with projects and setting it up from scratch. If you're going to show me how to do something localhost, you have to show me how to do it on a server (and set up) as well or else I'll never be able to make that connection. (Well not never, but makes it harder) Oh, editing files in the terminal is a blast too :P http://amath.colorado.edu/computing/unix/vi/ This saved my life that day. So…I definitely vote for teaching the environment before programming. PS: I did eventually install APC…after an entire day :P Now I'm trying to find and learn about setting up master/staging/production (and what it all means). Edit: Just to give some context of why I needed VPS - I wanted root access so I can make a wiki have clean URL (rewrite) and figured why not, learn about VPS. Then that's where I realized I need to learn 10 other things to do this one single thing. The APC was a suggested caching option to improve the site, and trying to do that also needed me to learn more stuff. So it's all kind of ties together when you're trying to accomplish a (seemingly) tiny thing. |
I've had many conversations with other programmers about solving this problem. We always fantasize about building an installer that just sets up everything you need for, e.g. Ruby on Rails. And people have tried! Every so often, you see an announcement about an open source project that promises to do just that. Even though this has been going on for years, I don't know anyone who actually uses these projects.
I think part of the problem is that the technology moves too fast for these one-click installers. They can't seem to stay current. Every time you get an update to the operating system, the database, the webserver, the web framework, the language runtime, etc etc, there's a potential for the one-click installer to break.
Another issue is interference from other stuff installed on the computer. I can't tell you how many times a piece of Unix software has failed to install because of something else I'd put on my computer and long since forgotten.
So one-click installers haven't been a panacea thus far. But I will say that the situation has improved dramatically in the last five years or so. Package managers--programs that automate installation of individual components--have gotten way, way better. It used to be that every other package I installed would fail the first time, and I'd have to do some kind of troubleshooting. That hardly ever happens anymore.
Now, this doesn't exactly make everything easy for new programmers. You still have to learn a lot of system administration to get anything done. Which brings me to my last point, which is a bit of advice for people just starting out:
You'll want to read some tutorials on various aspects of the Unix operating system. These will be very relevant to the problems mentioned in the parent comment: SSH, shell, installing packages, compiling from source, etc.. Generally, programming tutorials won't get into this stuff. You need Unix tutorials. This stuff will probably seem pretty boring in comparison to actual programming. It sure is for me. But it's a bit of unavoidable drudgery if you want your code to actually run.