views:

707

answers:

16

I am currently pretty experienced at PHP, and have wrote multiple applications in it. I know HTML, CSS, MySQL, and Javascript along with PHP. What is the next step in programming?

(I know that there are languages like Perl, C, Python, but don't know exactly if they are Web Based, Desktop based, etc)

Updated

My Goals are to learn enough programming that I am able to do program professionally. Let me clear up that I am 15, and have programmed a few complex applications. I have dealt with Object Oriented programming, but have barely touched working with frameworks. Is that something I should go for next?

+2  A: 

That really depends on what you what to accomplish, for example, could you make a complex e-commerce solution from scratch?

So you know how to you php classes and objects?

Perhaps you could learn to use a javascript framework which allows for fancy animations.

My advice is to choose a project that you would be interested in creating, and ideally interested in using too, and see where it takes you.

Nico Burns
+17  A: 

There is no "next step" in programming; PHP, like the other technologies you mention, are tools we use to solve problems.

One useful thing you could do is have a look at how similar problems are solved using other technologies: you seem to be interested in web application development, so similar tools exist like Java/JSP, Ruby/Rails, C#/ASP.NET, and so on. After your edit, this seems to be the most sensible route to take, as platforms like Java and .NET seem to be the way organisations are going, and where skills are used in a lot of jobs in programming.

Having spent some time going down those routes, you might be interested in larger systems that make use of enterprise features. Things like JSF, Struts, or futher - J2EE with EJBs make use of web technologies, but in a more enterprise fashion.

I'd also suggest you have a look at some open-source web applications to see how tools such as those you mention are used in larger applications with more users. Who knows, perhaps you can join in and help out on a widely-used project!

Jeremy Smyth
I agree. If you haven't already, take a look at the PHP-based MVC frameworks like CakePHP or CodeIgniter
bobobobo
+1 for the first sentence.
Thomas Owens
+2  A: 

A hint to "the next step in programming" in my opinion could be found by looking at some CS program curricula in some major schools. If I were you, I'd pick something completely different from web programming, just to expand my view.

If you are 15, I'd suggest learning C# and try to write a simple game like Tetris.

eed3si9n
Sorry, I've just noticed that my first answer looks very suspiciously like yours! Absolutely coincidental though; great minds!
Skilldrick
+5  A: 

If you want to keep doing websites, I'd suggest that you stay with the same technologies, but learn more about them.

You've not really specified what kind of work you've been doing in PHP / HTML / CSS / JavaScript / MySQL, so it's kind of difficult to give pointers.

On the PHP side, there are a number of decent frameworks you could have a look into, such as [Zend Framework], or [CakePHP].

You might also want to learn about some pre-existing CMS systems, like [Joomla] or [Drupal]. There's a lot to go through - the system itself, the add-ons available, and developing your own addons. Unless I'm building something that has no CMS-like features whatsoever (which is rare), I tend to build almost everything on top of Joomla.

There's also improving your PHP skills. It's pretty easy to fall into the trap of writing quick, simple, and unmaintainable spaghetti code with PHP. There are all kinds of useful patterns and design techniques you can pick up (the above-mentioned frameworks or CMSes can provide some hints about how to do it, and how not to do it). You could look into stuff like classes / objects, proper database abstraction layers (PDO, or even ADO), applying design patterns to PHP projects. The standard libraries contain lots of cool functionality you probably haven't used, and the PEAR libraries contain even more.

On the JavaScript side, you might want to look into frameworks like [JQuery] to start with, and then some of the [plugins] that have been built on top of it, like [JQuery UI]. Add some AJAX to your repertoire.

BlackAura
+3  A: 

I learned and developed a lot with Java after PHP and a little Perl, and am quite happy I did that. I realized that in Java circles, there's much more thought and emphasis on building proper software architectures. Here, I learned a lot on software quality, (agile) development processes, architecture.

It's not like dynamic language communities aren't capable of delivering robust applications or lack the knowledge in general - I come from this world myself, and I alos saw a lot of bullshit code in Java. Still, I learned a lot there.

I also did some small projects with ruby/rails and groovy/grails in the meantime and played a bit with python/django - but goin' back to Java-based approaches at the moment - but you're mileage may vary.

In the end it's good to know multiple languages and frameworks, to be able to chose the best option wherever you are depending on requirements and staff, and I'd recommend not only learn dynamic, web-centered languages and frameworks but also more general ones. With things like Perl(although it's really losing ground due to the power and OO features of the thers), Python and Ruby you have generic languages that are easily available on most systems, can be used for shell scripting, Web, and standalone GUI developments alike - also very good direction!

I still have plain C, scheme/lisp and scala - and many interesting frameworks - on my "to-learn" list.

Henning
+3  A: 

As a suggestion, before you jump into learning another language some time spent looking at design patterns will bear a substantial amount of (language neutral) fruit.

http://en.wikipedia.org/wiki/Design_pattern_(computer_science)

middaparka
+6  A: 

All I can tell you is my own experience. I learnt PHP/HTML/MySQL/Oracle on UNIX around 12 years ago, and liked it's ease of use and the way you could throw together sites very easily (compared to CGI and C). However, around 6 years ago I reluctantly moved to the "dark side" and had to learn Windows programming for my job. After a horrible period of learning 'Classic ASP' and VB I got into the new, emerging .NET technology, in particular ASP.NET and C#. And I'm really glad I did.

Learning a "proper" strongly-typed OOP language like C# (or Java) will help improve your programming skill and make you a more disciplined programmer. If you can learn the .NET framework you'll expand your horizons as well as your employability. You will also learn many programming skills that can move you beyond the Web - into application development etc. You'll broaden your outlook and be enriched and rewarded in the process.

Dan Diplo
A: 

Only thing I suggest is start learning about software architecture, OOP and design patterns, progamming paradigms.

You can even stick with the tools you already know, just upgrade how you program, learn new and better ways of solving things, see what others and other major frameworks are doing.

Mario
+3  A: 

Develop something that can bring limelight to the programming language. A library or class file which can help the community.

You can also think of something where you can make things much simpler compared to current process which if you feel is hard slog.

+2  A: 

Why not continue with PHP?

Become an expert and then a guru in it. PHP is a pretty large subject and in several years of development I didn't get to use and know all it's aspects, no matter how many bigger or smaller projects I did. There are also different approaches in PHP coding, nowadays the frameworks emerged and they are a topic by themselves.

And not the last thing, probably because of its popularity, PHP is a living language and continue to evolves. New stuff appears on daily bases, modules, new versions, new applications, new frameworks, new problems to solve with it.

Elzo Valugi
+1  A: 

Your train of thought is correct: it is important for a programmer to learn different languages. I would suggest Ruby, and Ruby on Rails.

Rails' great advantage is it makes it easy to do things the right way -- being able to pass your code to another developer without him spending weeks just to understand your code is pretty big deal.

The current tendency in a lot of languages is to put them 'on Rails', i.e. implement the MVC environment. This was done for Javascript, .NET and many others.

avguchenko
A: 

Since you've been using the object oriented functionality of PHP, I would suggest Java next. PHP's OO functionality was largely inspired by Java, for instance they have both formalized "interface oriented" programming through an actual construct/keyword: "interface".

In any event, having Java as the other server side language in which I am most fluent works for me. Your mileage may vary.

George Jempty
A: 

I think you should try for a big change, to expand your horizons. Learn Python, get pygame and program a game, for example tetris, but could be anything. I would definitely recommend doing something non-web-based though, because it'll help you see things from another angle.

Skilldrick
+1  A: 

Alternatively, if you want to learn some programming fundamentals, get Structure and Interpretation of Computer Programs and really blow your mind!

Skilldrick
A: 

First know that you do not have any limitations than your own exitus ;)

If you have fun writing programs, browse the internet and look for applications which you think of 'man I could improve this' or 'nice tool, but I have some other ideas'.

Then just look after the languages in which these applications are written and do some quick research about the difficulty of creating such an application by yourself (e.g. on stackoverflow.com).

When you have found some project which you really want to set up and you have chosen the language which makes the most sense for writing this application: Start learning this language.

It is not always important to look for a specific language, just look for a project and set it up.

daemonfire300
A: 

This is very subjective, but here goes.

  • It wouldn't hurt to know a very corporate language, like Java, for web development.
  • Learning a framework for it, like Spring MVC, would be very handy. Spring also has concepts like AOP and IOC, worth knowing.
  • Adding in Hibernate for DAO/ORM would be useful.
  • Ruby on Rails (Ruby is the language, Rails is the framework) is another web development track.
  • Sometime during a programming career, you'll need to know one scripting language; Python or Perl.
  • Learn tools like Maven or Ant, Subversion or CVS, and make sure you know how to use an IDE, like Eclipse.
  • If you don't know Linux, that can be fun to play with and useful professionally. Try Ubuntu.
  • From a theory level, learn about Data Structures and Design Patterns.

Data Structures is usually the second university course in computer science, and will almost certainly help your coding. If you build examples to teach yourself this, use a language you don't know yet, so that you gain both knowledge of a new language and knowledge of new theory simultaneously.

There are online references for learning the material. You should be learning about linked lists, trees, and graphs; sorting, searching, and O(n) analysis.

From a hiring manager's point of view, I wouldn't interview anyone without demonstrated knowledge of data structures.

In any case, Project Euler might also help you; it's a group of programming tasks designed to help you learn new languages and have tasks to help you solve new problems.

Dean J