views:

2294

answers:

24

I have a background in visual design. I also have a good knowledge of (X)HTML and CSS and several CMS's. However, I am beginning to hit a wall with respect to what I can accomplish without learning a web-focussed scripting/programming language. I am a solo web designer and really want to be able to broaden my horizons with respect to what I can offer and what I can develop for myself.


So my question is twofold:

1) What language should I start with?

2) What is/are the best resource(s) to get me from a beginner (knowing absolutely nothing) to proficient?


The current options in my considerations set are PHP, Ruby/Rails, and Python/Django but I am willing to consider other options. I know that this may turn into a flame war so please stick to the objective advantages of your supported choice and disadvantages of others. And remember that my primary concern is the ease of learning a language/platform. I will compile the pros/cons as well as the resources provided for easy learning below. Thanks in advance for your help.

A: 

Did you try searching here? There are several questions on what language someone should start with with pages of supporting opinions. I would think a little reading would help you answer this for yourself better than anyone else could.

EBGreen
I will also add that I think the first thing that I think the first question you should be asking yourself is whether the platform is more important to you or the language.
EBGreen
Your right...I guess I would land on the side of language, since that will require the most learning.
theandym
In that case for wat it is worth I would say Python, but that is vastly personal preference and we are back to you really should just read up and decide for yourself.
EBGreen
+1  A: 

if you're learning scripting anyway, then you might want to look at Catalyst, it's a MVC framework in Perl, so you can kill two birds with one stone, as perl is a fun to learn and you can do a lot of scripting work rather quickly using perl alone.

and you can easily find plenty of tutorials online regarding Catalyst, as it's rather popular right now. plus there's a book if you want to do it old school catalyst-perl-web-application/book

and once you have the hang of that, you can fancy it up using jquery

but might also be useful:

web-development-first-timer-where-to-start

best-way-to-begin-learning-web-application-design

what-is-the-best-programming-language-for-web-development-and-why

melaos
huh? how is a javascript library going to help for serverside apps?
Jacco
my bad, i thought he already knows basic web development skills and want to take it to the next level, hence the wall hitting statement.. but i stand corrected...
melaos
Perl for a beginner? Mind you when I started webdev in '96 I used Perl (I did code before that) and I would NOT recommend it, your advice is garbage.
TravisO
well, that's back in 96, these days perl is better developed with frameworks such as catalyst dude. but hey, to each his own then.
melaos
hitting two birds with one stone is not for begginers.
Elzo Valugi
A: 

To systematically learn, I think you have two choices

  • read a book, and/or
  • take a course

Of course, for programming, practice matters, so you should simultaneously work on mini-projects.

With that in mind, choice of toolset should depend on the availability of books, and, if you are willing to take a class, availability of classes.

I'll refrain of suggesting books, since I don't know what your native language is.

Martin v. Löwis
If you mean native language in the non-programing sense it is English.
theandym
+2  A: 

Like Ruby and Python, PHP has a few frameworks. Of note there is Zend Framework, CakePHP, CodeIgniter and Symfony. Of these, CakePHP is supposed to be very similar to Rails and Django.

I found an online book here, called Practical PHP Programming.

OIS
+4  A: 

Although I'm a Ruby & Python guy, I have to admit PHP will be easier to learn for a beginner.

There are thousands on books on PHP, just grab one and start coding.

When you learn the essentials on programming, you can move on to learn Ruby on Rails and/or Django.

Or, you can skip PHP entirely, and start with this book.

EDIT: Just to clarify, I've done PHP development for 5 years, but I stopped using PHP for new projects 3 years ago. Now I use Ruby on Rails for almost all my web development (I use Django on a couple of projects).

For me, Rails and Django are a huge step forward from PHP, but that's just me.

Can Berk Güder
Its not like Rails/Python is the next step. :P Subjective question. :)
OIS
=) Of course it's a subjective question. Having done PHP development for 5 years, now I feel like PHP is a step backward from Ruby or Python, but that's just me.
Can Berk Güder
I'd agree that it's easier for a beginner to learn to write *bad, but still functional* PHP, which is the major problem with PHP, IMO. I'm not sure that learning to write *good* PHP would be any easier than Ruby/Python for a beginner.
Dave Sherohman
But it'd be a hell of a lot easier to find good hosts for PHP apps, cheaper too.
kRON
@Dave: Exactly. Everyone starts by writing bad (but functional) code, right? Since this seems to be adnymarc's first real attempt at programming, I think it's much easier to start with a procedural programming language rather than an OO one.
Can Berk Güder
MVC can be pretty hard to understand for beginners, too.
Can Berk Güder
Writing some bad PHP can help one to learn how to write good code, it can help you to learn the basic concepts of while for foreach ect in a very short time, and it can also instill that passion that is mandatory to become a great programmer.
Unkwntech
@Unkwtech: Yes! exactly!
Pim Jager
#1, why the comparisons between PHP (language), and Rails/Django (Framework), not really a good comparison. #2, that being said, I think it's important to start off without a framework, so that you get an appreciation and understanding for what's going on under the hood.
Kibbee
A: 

Though I have a strong hatred for php it is a easier language to learn on. Just avoid some silly pitfalls with security. Php has come a long way but still has some places where you can run into problems, which is usually due to programmer error not so much a weakness in the language.

I guess what I am saying is there is a good chance you will be making some mistakes as you learn (as we all have) just pay attention to what mistakes you make and how you make them.

Wix
+18  A: 

PHP is easy for beginners, widely supported by hosting companies (= cheap hosting), and has superb documentation.

nickf
I agree, PHP is as easy choice for a web dev beginner.
TravisO
Yup. This is the route I took. It's really easy to mix a tiny bit of PHP into an HTML page (e.g., common headers and footers), and you can slowly build yourself up to a full CMS by patching more and more PHP in. A great language to learn-as-you-go.
zenazn
Definitely go with PHP. It might not be the "prettiest" programming language or the most syntactically correct, but there is lots of info about PHP out there. I also suspect you want to master theming apps like Wordpress and Drupal. PHP is the best choice you can make.
Luke
"the most syntactically correct"... haha what does that even mean?
nickf
I guess "syntactically correct" must be what is subjective to prior knowledge and personal preference? For instance; if you don't know any other programming languages, you won't have anything to compare to when you're learning your first language. Then, when (if) you master the syntax of your first language, it will likely feel "syntactically correct" to you, until you find something that changes your opinion?
Leif
Was the question: "why are there so many crap PHP *coderz* in the world?" ?
Bruno Reis
+6  A: 

I personally started with PHP, it has some great advantages:

  • Easy to learn
  • Free
  • Supported on pretty much every web host
  • easy to develop on home pc/mac/linux (just install Wamp, Mamp or Lamp)
  • Very well documented
  • Very clear errors (error says: "I found this but expected that on line #")

However when used wrong PHP can be dangerous (I had a lot of experience with this):

  • loosly typed
  • very easy to make your script un-maintainable
  • cluttered namespace (There are loads of functions)
  • security issues (BE very carefull in PHP with user input)

I prefer PHP over RoR because when using RoR half the stuff happens automatic (which seems nice) but means that you won't have a clue on how to do half the things.

I know a great PHP tutorial but it's in Dutch: http://phphulp.jorendewit.nl/home/

Also there is no need to read any books if you wan't to learn PHP there is enough about it on the internet.

Pim Jager
Since its the first programming language it would be safer with a book, so he's sure to get a broader introduction to both programming and PHP then most online tutorials.
OIS
Yeah ok, PHP was my first lanuage too, I learned it completely of the internet but was tutered quite well and made some very nasty mistakes. (also it indeed took me quite some time to fully understand how programming in general works)
Pim Jager
@Pim I made the same mistakes I'm sure (and probly more) but would you agree that PHP tought you how to not make the stupid mistakes and the basic constructs of programming?
Unkwntech
@Unkwtech, I think developping in PHP did. Although OOP is something that you could better learn with another language.
Pim Jager
I switched from PHP to Rails a few years ago. Rails' error messages are MUCH better than PHP's. Installation is easier than PHP. Maybe it's harder to learn, but PHP's inconsistencies don't make learning easier either.
Jules
A: 

If you're just looking to learn a language then there's no other choice but PHP. It's what most hosts are suited for and it's what many websites out there today are running on. Not only that but you'll find endless resources out there for PHP.

Now, if you were to say that you were looking to learn Server-Side Scripting I would argue that you'd really want to tackle all three at once. From what you've written you claim to have little experience with programming, so I'd argue that to learn how to program you should tackle programming, not a selected language. PHP is the choice for many of us, but who is to say that PHP is right for you? I started with PHP and struggled, then picked up ASP and C and it all made sense.

If you just want to learn a language then go for the favourite, PHP. If you have the time to learn Web Development then learn them all.

EnderMB
Are there really that many crappy ISPs that only support PHP. Seriously if that's the case, just go with Dreamhost. They Support RoR no problem, and for no extra cost.
Kibbee
There are millions of crappy hosts out there that offer services they cannot keep up for so little that they end up out of business in a year. The jury is still out on whether RoR is a viable alternative to PHP, so some hosts still haven't adopted it.
EnderMB
+14  A: 

Ease of Learning is a subjective thing.

I found Python very easy to learn. You might not.

I found Ruby almost impossible to learn; the syntax is too obscure for me. Some people like it. Interestingly, some Rails users are happy with Rails, but not Ruby because of the syntax obscurity issue.

I found PHP limiting because it's got a focus on web page development. Yes, it can be used for other things, but this is rare.

Find a book, do some work in each language. Actually learn all three and make an informed decision. Learning and discarding Ruby, for example, helps you articulate why you chose Python. You can provide specifics on what you did and didn't like about the language.

Django is not your only Python choice. Once you learn some Python (only takes a week or so), you then have to pick a framework. While Django is good, some folks perfer CherryPy or TurboGears. You're back into subjective.

To choose among web frameworks, you have to actually download each of them and actually use each one for a small project. Then you can make an informed decision. Learning and discarding TurboGears, for example, helps you articulate why you chose Django.

S.Lott
A: 

Depends how committed you are, RoR is a lot harder to learn than PHP, but you'll gain more knowledge out of learning it and much better coding practices (OO and MVC). With PHP you'll probably just learn to hack around to do what you need, but like Matt Briggs says in a comment

You have to work against PHP to write good code. You have to work against Rails to end up with a ball of mud.

weiran
OO and MVC are not language specific, and both are possible to do with PHP
jskulski
You are comparing a framework (Rails) against a language (PHP).
OIS
You both have very good points, but the majority of the time someone using PHP won't use MVC (I'm not sure about OO uptake for PHP devs tho?).
weiran
+6  A: 

ASP.NET (C#). Here is my reasoning besides it being a great language. If you decide to later do some desktop development you will be able to use some of that knowledge. It is the same C# you have grown to love. :)

Bobby Cannon
Be sure to review the literature on ASP.NET WebForms vs. ASP.NET MVC. There was a nice podcast on that recently: http://deepfriedbytes.com/podcast/episode-48-web-development-with-asp-net-mvc-in-action-authors/
TrueWill
A: 

Do you want to learn how to program or do you just want to learn how to do a few specific tasks with a specific programming language ? If you want the former then I would recommend you learn the basics or algorithms and data structures, object oriented design and database design and go forward from there (reading coding blogs and practicing as much as you can), as for the language you should use I would recommend the .net framework because then you get a choice of languages, VB or c# and it’s a huge framework but is also well documented and has lots of help for beginners (Its also what i use so i am biased). If you want the latter then I can't advise you because I wouldn't want you to write anything that anyone else would possibly have to maintain :)

A: 

I'd recommend JavaScript in your case. It's not very popular on the server side yet (there have been some early attempts (e.g. helma.org), but it's very useful to a web designer already and it's probably going to gain a lot of popularity as a general programming language since more and more applications are moving into the browser.

If you need to supplement it with an established/flexible server-side language, I'd recommend Java or even Scala these days, since all the popular scripting languages (PHP/Python/Ruby/Perl) have issues with multithreading/concurrency that might hurt their popularity in the long run.

mjy
+3  A: 

I think its strange that no one has mentioned javascript yet. I don't know what your javascript skill set includes, but it is definitely the language of the web. You can even use it for back end development with one of the following frameworks. This means that with one language, you've learned the whole web stack, which is extremely useful.

AppJet
Aptana
Wiki Article for Server-side javscript

Javascript is getting faster, gaining adoption, and is in my opinion one of the most fun languages available. Go with javascript. You won't be disappointed.

brad
A: 

PHP is an excellent learning language; set yourself up on PHP/MySQL, and you can do all sorts of stuff, and fast. Their standard library functions are very comprehensive.

The catch is, it's incredibly easy to write hideous code in PHP, especially when you're learning. Trust me: it can be really embarrassing to look back on.

Check out Django. They have a great tutorial for getting started, and it encourages nice, clean code.

ojrac
Again comparing a framework (Django) to a language (PHP).
OIS
+1  A: 

I don't have experience with Ruby or Python, but I do with PHP and ASP.NET w/ C# and I can tell you that ASP.NET/C# blows PHP sky high.

PhoenixRedeemer
+3  A: 

I'd suggest Python and Django and maybe Google AppEngine.

AppEngine is a good place to start learning Python and Django for the web since Google folks based their apps mostly on that 2 technology. Except that they handle most of the configurations for you and provide you with a free cloud hosting service as well.

chakrit
A: 

No thought to ColdFusion? Its syntax is tag-based and fits in well with HTML.

Al Everett
A: 

PHP is easier to learn but you might regret the fast start later. ASP.NET's event driven model will drive you up the wall once you try and do something nominally difficult. Can't comment on JSP or Python with Django. I also noticed someone recommended cold fusion up there, please don't waste your time on a dead/dying technology (don't mean to offend the CF lovers, just my opinion).

Take the time to learn Rails and you'll be a happy camper.

Cheers!

A: 

You're going to get people here touting their favorite programming language as the choice to make. I don't think that's going to help you at all. If anything, it will increase the number of choices you'll have to choose from. You need something to narrow down your choices.

Instead, I advise you to find programmers at your place of work, in your local area, or in your social network, find out what they use, and go with that. I can't emphasize what a tremendous leg-up it is to choose a language that's used by someone "down the hall" to answer quick questions.

Once you're comfortable in a programming language, you can worry about finding the one that's right for you. In the beginning, what's most important is to get started programming. Having ready access to mentors around will help minimize the frustration and confusion inherent in learning to program and keep you encouraged.

gotgenes
A: 

i agree with gotgenes that this can quickly become (if it hasn't already) a soapbox for fanboys of different languages.

Coming from someone who was in your shoes about 10 years ago, before ajax, rails, django, etc, i first started learning client side javascript, which eased my introduction into classic ASP using javascript on the server side, which eventually lead into ASP.NET.

Obviously this isn't the best route to go nowadays, but my point is, you have to pick the best path based on what you already know, what can be applicable in multiple ways, and what you see yourself using it for in the future.

I agree that eventually it would be beneficial to learn as many languages/frameworks as possible, so down the road when the solo web designer gig isn't working out so well anymore, you will have a solid set of skills from which to offer potential employers.

Jason Miesionczek
+2  A: 

Sounds like I come from the same background. Went to college for illustration/animation/film. I started coding in ActionScript (Flash's language) and I've since fallen in love with programming. I'd recommend it because it gives instant visual feedback. The "MovieClip" idiom (borrowed from Morphic I believe) lets you see what your code is doing, which is important for visually-oriented learners.

ActionScript tracked JavaScript for some time (AS3 was supposed to mirror JavaScript 2.0 before the proposal went back to the drawing board), so your skills in ActionScript are fairly portable to JavaScript. Its API also borrows heavily from the Java API, so you'll have some familiarity with Java as well.

Some pros: Visual feedback. Cool language features like closures, first-class functions, and lambdas. An interesting hybrid of dynamic/static typing. Ubiquitous.

Some cons: Closed-source/fairly expensive development platform. More elite programming sites like this and Reddit are filled with people who are rabidly anti-Flash. Some of their reasons are good, and some are uninformed or no longer valid. That said, Java, Ruby, and JavaScript have all, at one time, been the red-headed step children of the programming community, so maybe things will turn around.

+1  A: 

Sorry to go grave diggin on this post...But what about HTML? For an ABSOLUTE beginner...I recommend it.

ihaveitnow
I appreciate the comment. I already know HTML/CSS and some JS ... at the time I was trying to decide where to go next. Ended up learning some Rails and also (by necessity) some PHP.
theandym