Can someone suggest a web application project for beginners? What would be a good project? Should I follow a how to make a tutorial or figure it out on my own?
This is a frequent question from new programmers. I wrote a post in 2020 about this. Below is a reproduction of my post. It was in response to a question specifically about learning PHP, but similar advice would be true for other programming languages.
The best way to learn PHP, or really any other language, is by practicing writing code. This is probably echoed by many of the other answers.
- Pick a simple practice project, and implement it. Then pick another one. You don’t have to create a beautiful website to practice. Create an ugly website that serves as your sandbox for trying out code.
- Learn from mistakes. Try something different.
- Go outside your comfort zone. Find a new group of functions in the manual and try out each one. For example: Arrays or Strings or SPL.
- Learn about PHP: The Right Way.
- Learn about Laravel, the The PHP Framework For Web Artisans. Really. The days of arguing over the best PHP framework are over.
- Learn about security (see OWASP).
- Learn about testing code (PHPUnit, the PHP Testing Framework).
- Subscribe to PHP blogs like Planet PHP. Attend PHP community users’ groups or PHP Conferences around the world.
- Read other PHP code. Download WordPress or MediaWiki, both widely used and mature PHP projects, and study the code. What’s good about it? What’s lousy about it? There are bits of code in any project that are gems, and some that are garbage.
Finally, there’s a secret way to learn any skill better than you can learn it on your own: teach it to someone else.
As for a suggestion for a project to practice, I would recommend you develop a blog application similar to WordPress.
- It’s very simple at first: just a database table that stores blog posts by date, one PHP script to view them, and one PHP script to author them.
- Add authentication, so only the blog owner can write posts. Be sure to read You’re Probably Storing Passwords Incorrectly.
- Add tags, so the blog owner can categorize posts and users can view posts in that category. You’ll learn what a many-to-many relationship is.
- Add comments so readers can post too.
- Add captcha support or logins for users. Integrate with OpenID, Facebook, Google authentication APIs. Learn OAuth2.
- Add a text search function. Learn about a fulltext search engine like Sphinx Search.
- Add some kind of email notification or RSS feed, so users can be notified when a new post appears.
- Refactor your comments system to use Disqus, as a way to embed a web service into your application.
- Refactor the whole app to an MVC framework, to learn what it takes to do a major overhaul of your code without breaking things.
- Write unit tests for your classes that you wrote for the MVC implementation.
I would recommend that you do not follow a tutorial, and instead try to design the application on your own. It will take longer, but I guarantee you’ll learn more about coding. Anyone can follow a tutorial and type in the steps, without knowing what’s happening. If you do not use a tutorial, you’ll have to think harder about how to solve the problems that come up. This is a necessary skill if you want to be a programmer.
But of course you need to read documentation or how-to articles on some of the individual pieces I included in the list above.