For the next 3 months, I will produce full-scale projects for my web portfolio. Why would I do this, you ask? Because I believe the best way to learn a new technology, or expand what you may already know, is to create something from scratch.
Usually people learn from following tutorials on educational websites, or from books on Amazon. Yet, they never truly learn how to build real-life applications. By moving away from generic tutorials, onto real-life applications, I'll hopefully expand my problem solving capabilities and grow as a developer.
What technologies will I use? Well my goal is to use a single framework, or language per project. The first project is built using PHP, explicitly the MVC framework called CakePHP.
Why 1 project a month? I believe 4 weeks is a good amount of time to expand knowledge in a particular subject. They say it takes 100 hours of practice to become an expert in a subject. If I work 3 hours a day * 5 days a week = 15 hours a week = 60 hours a month. I believe this is an adequate amount of time to truly become knowledgeable in a subject.
The purpose of this project is to learn CakePHP for 1 month and implement a job board style web application. The application will include designing the user interface, building the data structure, and implementing components that will adhere to my objectives for this project.
The objectives of this project are the following:
- Be able to search for jobs by title and location. (done)
- Be able to browse through jobs based on categories. (done)
- Post jobs as an employer. (done)
- Apply for jobs as a job seeker. (All but CV upload)
- Save jobs for later. (didn't complete)
- Create and edit companies. (done)
- Signup & Login authentication. (done)
The purpose of this project was to create a job board using the CakePHP framework. This was the first time learning the framework, so I looked through the documentation as thoroughly as possible. Here are the 3 most important points I learned:
- CakePHP is very convention orientated.
- CakePHP template files use the alternative PHP syntax for control structures and output. Template files end with the extension '.ctp'.
- I found CakePHP to be very similar to Laravel, in terms of its structure. This meant I was quickly able to learn its concepts and implement my designs.