Overview

This video discussed:

  1. Amateurs versus real developers
  2. Why CodeIgniter is best for beginner
  3. Caution for learning Laravel
  4. Story of an alumni who got promoted
  5. Why you need to trust the process in Village88
  6. Introducing creating your own custom framework soon
  7. Caution on being too attached to a specific framework

Analogy

Imagine you're working in a book binding stall near a university. There are an average of 500 printed pages per thesis book, and you had a contract for 50 graduating students to finish the binding on the next day.

Unfortunately, due to extreme haste, these printed pages from 50 thesis books fell on the ground and are now messed up. Awful! The pages mixed so you decided to sort them by page number, no matter the thesis title.

Then your co-worker joins, carrying the sorted 1000 pages he printed, then slipped on the floor which adds up to the problem! Ouch! Your co-worker suggests that sort them according to the size of the paper first (long, short, a4, etc.) to have elimination, and then place each category in a specific envelope. You decide to re-organize all the papers using this new directory structure.

But after straight 5 hours of sorting, one customer interrupted you to help her and you'll be paid double the amount of the contract you made to 50 graduating students, for a similar task!

You decided to get back later on your current task and prioritized the customer. You observed that customers have a completely different way of organizing these pages! For whatever reason, the first person who joined your customer started organizing the pages according to the table of contents, with a hint of a chapter printed in the footer of each page.

In this analogy, you can see how there are many different ways to organize things and different people would have different opinions about how things should be done. How you organize things also depends on your purpose.


Software

Let's now think about software. When building software, there are many features we need to build (e.g. loading a database, doing a query to the database, rendering HTML, displaying errors, writing files, doing string manipulations, doing math calculations, rendering JSON, etc). Let's say you had about 500 features that needed to be built but instead of putting all these in a single class, you decide to organize them into different classes (just like in the earlier analogy how you decided to put them into envelopes). How many ways are there to organize these 500 features into different classes? Probably unlimited ways.

In software, this poses a lot of problems if developers don't have rigid rules on how to group features. For example, imagine the following scenarios.

  1. You join a company and the way they organize their codes is very hard to follow. To debug a ...