tags:

views:

377

answers:

7

I am 22 years old and I currently work for a small startup that does web design/development for a variety of clients. I do not have a post-secondary education. I started building websites for fun when I was about 13 years old, doing HTML markup and some graphic design. I know enough about things like CSS, JavaScript and XML to use them decently. I learned what I consider to be "programming skills" beginning in a computer science class in high school where we basically created a few projects in C, C++, Java and Python. When I started doing stuff "professionally", I learned how to use PHP, which I found easy to use as I found it to be very similar to the C projects I did in high school. I still use PHP for pretty much everything. I develop a lot of interesting PHP-based online applications and web tools for clients and it all works very well and everyone is very happy with the work I do in terms of quality and turnaround. I use a lot of procedural and some object-oriented programming, and I never find myself in a situation where I'm thinking "Damn! This PHP sucks! If only I knew how to write this application in Ruby!".

With that in mind, it seems like the professional programming community in general dislikes PHP a lot and I feel like I'm really not cluing in on what programming is all about. I would like to expand my horizons a little bit and have the ability to approach problems differently than just building something PHP-based. But, I'm not sure what route to go, particularly since I do not have a post-secondary computer science background. A lot of people seem to be focused a lot on desktop applications, but I'm not sure that's where I'd like to focus my career. I like building web-based stuff.

Can anyone recommend what else I could learn that would be best for teaching me things that as a PHP programmer, I've either intentionally or unintentionally been lazy in? Is there a language that really shines in the areas that something like PHP lacks?

Thanks!

+1  A: 

Once you have your web concepts down, which you do - the next step is to get deeper in Object-Oriented.

If you are currently comfortable with script languages then I would recommend learning .NET or Java to get the hang of compiled languages. That will give you a really solid Object Oriented background - if the goal is to broaden your horizons, then I'd give .NET a shot and do some desktop / WinForms apps too.

Edit: Oh, and PHP doesn't suck if you can build great stuff with it. If you can build awesome applications with PHP, you're a lot better off than someone who can't create anything good in Java. Yes, some of it is the language you use, but most of the 'professional' comes from you as the coder.

routeNpingme
A: 

For something new, try a web framework like Django or Rails. Lots of opportunity out there for people with experience in both.

Learn and use a version control system like Git, Mercurial or Subversion.

Learn how to test your code.

Network with as many other coders as you can. You'll learn more interacting with other developers than you will in a vacuum.

Harold
+1  A: 

I think you've got the first step right - trying to learn about what there is to learn.

First off, it's not going to be too much of a "is there a better language" issue than a "is there a better approach to problem solving and looking at programming?" type of issue.

As much as I dislike PHP (mainly due to its very inconsistent API), I'm sure there are ways to write code in PHP in ways that are very readable, maintainable, and elegant. Therefore, I don't think recommending another language to look at is the thing I will do.

If what you're looking for is a good eye opener, then I would suggest start reading a few books on a programming.

What is the single most influential book every programmer should read? is a question with a bunch of recommended books. The Pragmatic Programmer and Code Complete should be a good eye opener if these are going to be the first, general programming best practices book. Although they are not strictly for PHP, the ideas presented in the book should be relevant to any language.

Aside from that, read blogs and such to learn more and more about the subject. Ask questions on Stack Overflow if there are concepts that you're finding difficulty grasping.

After reading many sources and actually trying things out, if you realize that PHP may be lacking in certain features, then start learning another language. At that point, you'll be able to compare and contrast languages and see the benefits and short-falls, so you can choose the right tools for the task.

Good luck!

coobird
+2  A: 

Being a professional programmer is not just about learning any particular language. It's about understanding concepts that are language independent. Programming languages are media for implementing those concepts. My recommendation would be to go to your local bookstore or library (preferably one with a good technical section, such as at a college or university) and browse the introductory computer science books. Look at books about algorithms and data structures or object-oriented probramming. If those look interesting you may want to enroll in an intro CS class at your local college or university.

To build things that you would learn from a CS book or class you would probably find Java or C++ good languages to learn.

mxg
+1  A: 

The problem with PHP and clasic ASP is that it usually becames a mess when your application grows, unless you know how to separate concerns as a lot of patterns try to do. PHP does not really sucks, facebook is built in PHP and I think it works pretty well, the problem is that it doesn't help you to learn more.

Try reading this book and learning more about object-oriented languages, such as Java or C#. You could also learn smalltalk as well, but if you want to work too it's better to learn some a modern fancy language.

Diego Jancic
+1  A: 

Programming is about solving real world problems. If you are doing that, and continuously trying to learn better and simpler ways of solving those problems - then you are on the right path.

Every single problem you encounter, is solveable in every single language you have ever heard of - and then some. Some solve it easier than others - that's about it.

Ron

Ron Savage
+1  A: 

If you like doing web stuff, and are already proficient in PHP, then you could expand into some of the cool stuff you can do with PHP and Ajax development. You could even go further to GUI level by learning some stuff like Flash and image creation (I've used Gimp).

If you really want to get into heavy duty programming, by all means learn Java.

If your company pays for courses, there are some really excellent programs out there where you could learn a lot of IT stuff and get some course credits. It's a long haul, but since you're into learning, it might be worth it.

Jack BeNimble
What kind of really excellent programs would you recommend? :)
Toilet Overflow
Try Harvard Extension. The IT courses are mostly online. The courses are extremely challenging, though :/
Jack BeNimble