I’ve been asked this question twice in the last 2 weeks by people wanting to write their first Web application. So I’m going to answer it here for anyone else interested:
If you want to write Web applications you need to learn the following languages: Javascript, PHP, HTML, CSS and SQL. It sounds like a lot, but it really is not. You can learn enough of each of these languages to write a basic Web application within a week. Trust me. It’s easy!
PHP is the guts of your Web application. It is the language that runs on your web server. It is also the only language where you have a choice about learning it or learning another language. You must learn HTML, CSS and Javascript and 99% of web programmers learn SQL to talk to a database. But there are many other languages to choose from that can do the same thing that PHP does.
However, if you are starting out writing web applications, PHP is the first server language you should learn and here is why:
- PHP is used by a huge number of websites, both big and small. Most of Facebook is written in PHP. Wikipedia powered by Mediawiki is written in PHP.
- WordPress, the worlds most popular open source blog platform is written in PHP. If you know PHP you can change it any way you like or even contribute to the community. WordPress is used by eBay, Yahoo, Digg, The Wall Street Journal, Techcrunch, TMZ, Mashable and of course the whole of WordPress.com is powered by WordPress written in PHP.
- Most of the worlds best content management systems are written in PHP.
- The PHP community is massive and supportive, unlike the Ruby on Rails community for example.
- 99% of web programmers can understand PHP, even though some don’t realize it. (like Perl Developers)
- PHP is a mature language which means the bugs have all been ironed out and it runs fast!
- If you Google a question you have about PHP, you have a much higher likelihood of finding an answer than any other server programming language.
- Don’t learn Perl because even though it’s a mature, fast and popular language, it’s harder to learn than PHP.
- Don’t learn Java because Java is better suited to launching spacecraft and running systems that control oil rigs or banking software than Web applications. It is strongly typed which means that you need to write more lines of code to get the same thing done. It’s also harder to learn because it’s a purer object oriented language . It also is owned by Oracle which means it’s a commercial language and that means Oracle will continually be trying to sell you stuff by making things seem harder than they are and claiming they have the answer to the problem they created in your mind.
- Don’t learn .NET because it’s also a commercial language and pretty much everything made by Microsoft either will cost you money or will break a lot.
- Don’t learn Ruby because the guys who run the community are total a-holes who will insult you for asking beginner questions. Ruby is also way less popular than PHP or Perl even though it’s used to power Twitter. It’s also the reason Twitter is down so often.
- Don’t learn Brainf*ck, Cobol, D, Erlang, Fortran, Go, Haskell, Lisp, OCaml, Python or Smalltalk because these are languages that people tell you they know to show off. Some of them have specific advantages like parallelism, being a pure object oriented language or being compact. But they are not for you if you are starting out. In fact, the combination of PHP and Javascript will give you 99.99999% of what all these languages offer.
HTML tells the browser the structure and content of a page. e.g. Put a form after a paragraph and have one field for email and one for full name.
CSS tells the browser how to make that page look e.g. Which fonts to use, what size they should be, what colors, how wide or tall things on the page should be, how thick borders should be, how much padding to use and how thick to make margins.
Then you also need to learn a data storage language called SQL which lets you talke to a database to store things like visitor names, email addresses and so on. For example, using SQL you can tell a database to store an email address and full name by saying “INSERT INTO visitors (name, email) values (‘Mark Maunder’, ‘mark@example.com’);. There are other ways to store data and a popular terrorist movement calling itself NoSQL has formed in the last 4 years and they spend their time sowing fear and doubt about SQL and confusing beginners like you. The reality is that 99% of web applications use SQL and continue to use SQL. It works, it’s fast, it’s easy to learn and everyone understands it. It’s used by WordPress, Wikipedia, Facebook and everyone else who counts, whether they like it or not. Just learn SQL!! I also recommend you use MySQL to store your web application’s data (even though it’s owned by Oracle) because it’s the most popular open source database out there. PHP applications use MySQL more than any other database engine on the web.
To summarize, so far you need to learn:
- Javascript (a programming language that runs on inside your visitor’s browser)
- PHP (a programming language that runs on the server)
- HTML (a presentation language that tells the browser the structure of a page)
- CSS (a presentation language that tells the browser how to make a page look once it’ knows the structure)
- SQL (a data access language that lets you store and retrieve data from a database)
- Javascript runs inside the browser of someone who has visited your website. What’s cool about this is that it uses your visitor’s CPU and memory instead of the resources on your server.
- PHP runs on your own web server. Most websites use a kind of “container” or application server to run PHP called Apache Web Server with something called mod_php installed. Apache handles all the web server stuff like receiving the request for the document and making sure it’s formatted correctly. It then passes the request to mod_php which is executing your PHP code. This actually runs your web application written in PHP, your program sends the response back to Apache which sends it back to your visitor.
- HTML is interpreted by a visitor’s browser and tells the browser how to structure the page as it loads.
- CSS is also interpreted by a visitor’s browser and tells the browser how to make the HTML look.
- SQL is a language that you use inside your PHP application to talk to a database like MySQL. You will actually write SQL in your PHP code but it will be sent to the database engine which is where it is interpreted and executed. The database then sends your PHP code whatever it asked for, if anything. (sometimes you’re just inserting data and not asking a question)
- Linux is the operating system you will run on your server. Everything else on your server runs on top of Linux. Linux lets your web application talk to the server’s hardware.
- Apache Web Server running mod_php. This is the application server you will use to run your PHP code. It will receive the web requests, forward them to your PHP code, and receive the response which is forwarded to your visitor.
- MySQL database engine. You will talk to mysql using SQL which is written inside your PHP code.
One last note to help you in your language decision making. It’s important that you understand there are a few phenomenon that may confuse you in your language research:
The first is that some software developers have little life beyond writing software and have large egos. One of the few things they have to impress you with is their own intelligence. They will try to make programming sound harder than it actually is. It’s not hard. It’s easy.
Secondly, an arrogant programmer may regale you with a list of programming languages to choose from and tell you that he or she knows them all. They may make the choice sound complicated. It’s not. They’re just showing off. Choose PHP and the set of tools listed above and you’ll be fine.
Third, remember that there is always something new and shiny coming out that will get a lot of attention and is advertised to “change the way we…” or will “make everything you know about programming irrelevant”. Ignore the noise and stay focused on the basics. Until a new language, operating system, application or piece of hardware has been around for a while (usually at least 5 years), it’s going to be full of bugs, run slow, break often and it will be hard to get help by Googling because few people are using it and have had the problem you’re having.
Lastly, many companies like Google and Facebook spend a lot of time and energy trying to attract the best software engineers in the world. Google associated themselves with NASA purely for this reason, even though they’re in completely different businesses. To draw attention to themselves as thought leaders in software they talk a lot about languages like Erlang, Haskell and so on. The reality is that their bread and butter languages are pretty ordinary – languages like C++ and PHP. So don’t get confused when you see Facebook talking about using Erlang for real-time chat. They’re just showing off. Their bread and butter is PHP, HTML, CSS, SQL and Javascript, like most of the rest of the Web.
Who am I and how dare I express an opinion on this? I’ve been programming web applications since 2 years after the Web was invented. I’m the CEO and CTO of a company who’s web apps are seen by over 200 million unique people every month. I also own the company. I’ve seen languages and platforms come and go including Netscape Commerce Server, Java Applets, Visual Basic, XML, NetWare, Windows NT, Microsoft IIS, thin clients, network computers, etc.
The Web is Simple. Programming is Easy. Now go have fun!!
I disagree with the bit about .NET. You can use the “break alot” for any programming language. It depends on your skills. There are also schemes like websitespark (http://www.microsoft.com/web/websitespark/) which means you can start up your website very cheaply to start with.
Commented on July 24, 2011 at 3:10 am
Solid article for a beginner; minus all the hype around languages. Later down the road people will pick up other languages as they mature when their work demands something different, or their curiosity itself.
–Correction–
To summarize, so far you need to learn:
Javascript (a programming language that runs on the server)
PHP (a programming language that runs inside your visitor’s browser)
Mixed there 😛
Commented on July 24, 2011 at 7:06 am
[quote]
Linux is the operating system you will run on your server. Everything else on your server runs on top of Linux. Linux lets your web application talk to the server’s hardware.
[/quote]
Hopefully not. Pick something with high performance, high stability, and more secure: FreeBSD (or one of the other BSDs).
The only excuse for picking Linux is Hardware support.
Commented on July 24, 2011 at 10:44 pm
Cool 🙂
Now I’m going to focus only on JS, PHP, CSS and SQL.
Thanks for the information 🙂
Commented on November 20, 2011 at 6:01 am
Would apreciate you writing another article: So you masterered Javascript, PHP, HTML, CSS and SQL – where to go from here ?
Commented on November 22, 2011 at 12:49 pm
Thanks, this makes it easy for me because for a long time I was struggling to find out where to start, this is really helpful
Commented on December 3, 2011 at 6:22 am
that is really helpfull and well organized and i see your point when we share knowledge its more more better than keeping it as a secreat “knowledge shines” ..thanks ^_^
Commented on December 3, 2011 at 4:31 pm
Don’t dismiss Python so readily – it’s an extremely useful language to learn. It has a clear and understandable syntax, and it can be intergrated with other languages. It’s basically really easy to learn, making it a great beginners’ language. You might have a lot of experience, but don’t dismiss languages other than your favourites so easily.
Commented on December 4, 2011 at 2:31 pm
So learning HTML – CSS – JS- PHP -SQL will help me do things like designing websites ?
Commented on December 13, 2011 at 5:43 am
Honestly, PHP is for sometimes developers who also work at bookstores. .NET is a professional platform (not a language) for computer scientists that make their living writing software. Don’t settle for a toy language / platform.
Commented on December 13, 2011 at 11:46 pm
True asp.net jobs pay more, but if you’re thinking going on your own and developing something it is lot easier with php. The other thing that scares me is the constant changes microsoft is making to asp.net- it is very unstable in that regard and makes you lose your peace of mind.
-Zak
Commented on August 30, 2012 at 10:42 pm
Great Article
i know now, where to start first
1000000000 thank you
Commented on February 5, 2012 at 5:25 pm
Mark.. Can you show fundamental programming language for beginners to build high end applications..
Commented on February 10, 2012 at 10:15 am
Brother Mark
You have really put my mind to rest. l am into webdesigning and have been learning php for sometimes. Your article has given me the stability to focuse on advancing on php. Infact when you learn php and javascript, your web development nightmares are over. You are right, brother, many programmers try to show off with an array of langauages they claim to have knowledge of when they can not even develop an ordinary CMS. Good work. Keep it up. Thanks very much.
Commented on February 11, 2012 at 10:44 am
Straight to the point! And the reasons you pointed out why someone shouldn’t learn Java, C# or Ruby are hilarious…
Commented on May 11, 2012 at 1:22 pm
wow reading this beautiful article made me so hopeful of life and i feel so confident to learn. thank you for your beautiful article. this is what i call cyber therapy and we need for of these articles. thank you again
Commented on June 20, 2012 at 12:13 pm
Today my confusion has gone now i am clear what i should learn ……:) Thanks a lot
Commented on June 27, 2012 at 2:27 am
I am so relieved by this article. Thanks so much mark for this, i really appreciate. Guess i’m gonna fasten my seat belts and start digging into the languages.. Cheers (y)
Commented on August 8, 2012 at 1:38 am
Great to learn PHP, but::
PHP jobs pay less than Java, Ryby, and C# jobs.
There are more PHP programmers than any other languages looking for jobs.
Many PHP projects are made wrong because most of the PHP programmers are starters or students.
Commented on August 8, 2012 at 10:13 am
This all depend in which city you live, In a metropolitan area you better go with Java, C#, or C++. Your salary will be close to double of what you will make working as a PHP developer.
Commented on August 26, 2012 at 11:49 am
please am a beginner to these languages,can i master them in 7 months.please can u tell me how to build php webpage on my computer.
Commented on August 31, 2012 at 1:47 pm
thanks sir, I need to learn even just basic programming language and I don’t have any idea where to start or what to learn that I can really use.. this is a very huge help to me., thanks..
Commented on September 7, 2012 at 9:38 am
Thank you so much…to providing this important information….
I know the HTML, CSS and javascript..
but their is a confusion in my mind about the .net and php. now i will totally consecrate on SQL and PHP..
Commented on September 21, 2012 at 2:44 am
Dear Mark:
Thanks for your post! One question about this post is:
Do you still hold this point of view that one should best to learn PHP as web dev language right now?
I still in Univ, having no idea about real Software world, I just read articles comparing between Python, Javascript(like node.js), RoR, PHP, it really confuse me a lot!
Best,
K
Commented on January 12, 2013 at 2:26 pm
Did you ever find out if Mark’s opinion about learning php still hold strong today?
Commented on February 2, 2013 at 9:37 pm
I have absolutely no argument with PHP being the first language you should learn as a web programmer. I really have to protest putting Python on the list of “showoff” languages, however (especially since it’s on the same list with Brainf***k). Learning Python won’t give you the same intimate knowledge of a program’s function that you would get from say, C, but it’s a terrific beginner’s language, and it really teaches you how to think intuitively about computerized problem-solving. To this day, I frequently use Python to test my ideas when working on a difficult problem in another language.
Commented on March 21, 2013 at 8:27 am
To the author: thank you for this! This demystified quite a bit for me and I plan to follow the advice you suggested. Given that you posted this about two years ago, I assume you’d still give the same basic advice today?
Commented on May 8, 2013 at 3:05 am
Hi Mark, Thanks for such a nice article, it’s really helpful and gives a clear path to adopt to start learning PHP and its associated tools/technologies with convinced mind.
Commented on July 4, 2013 at 7:10 am
i am a web developer should i learn .net or java
Commented on July 9, 2013 at 7:23 am
Learn Scala and Lift (web framework).. Scala is the future………..
Commented on September 3, 2013 at 7:44 am
Great Insight Mark. I am currently in the process of learning languages to create web apps. I had taught myself C++ before delving into html and css, now, I am trying to learn Javascript. I plan to learn PHP and MySql afterwards. Your thoughts have been an inspiration. From somebody who is teaching themselves by looking at forums and how to websites, I totally understand what you meant by some programmers putting other languages down. I hope you write more about programming. I would love to read more about your thoughts.
Commented on September 2, 2013 at 1:08 am
Great post, its the first post i found actually useful and speaking market reality of languages. Thanks!!:)
Commented on November 10, 2013 at 12:59 pm
This post looks good. Your experience is supporting to what you claim. What is the future of Web? If web dies in the future due to the popularity of device specific apps what is the future of PHP?
Commented on March 27, 2014 at 11:35 pm
Good Job
Commented on April 29, 2014 at 8:49 pm
Amazing article for real amateurs like me … Thanks a ton Mark !!! I’m completely new to programming..All that i know is C,C++ and SQL .. I wanted to get into web programming ..and there i found a super springboard in your article !! Thanks again man !! Keep writing 🙂
Commented on May 28, 2014 at 6:45 am
your article is so awesome, your the best guy i have ever heard on planet earth. i was scared before but now am ready for web apps. Thanks. Good job
Commented on June 17, 2014 at 2:05 am
Awesome article- thank you so much!
Commented on September 29, 2014 at 5:23 pm