WHAT YOU NEED TO KNOW BEFORE LEARNING A PHP FRAMEWORK

WHAT YOU NEED TO KNOW BEFORE LEARNING A FRAMEWORK

One of the most interesting part in the technology development business is change, the most dominant technology today will be fast forgotten as soon there is new zing thing on the block. Technology of today has make technology of yesterday silly and technology of tomorrow will make technology today silly, the technology business and environment is evolving and its evolving fast, so those of us the development community must always race against machine which doesn't have to be. In order to beat the machine at its own game is to change the rule, “when you change the rules on what controls you, you can always change the rules on what you control”. This post is about understanding how the game is being played and how to define your own rules and eventually enforcing your own rule in the game, this is what you need to know before picking a new framework, although not compulsory but necessary, I wont teach you which framework is better or which framework to pick (Those argument of Coke is sweeter than Fanta). If you understand this concept you will find it easier to pick any PHP framework and perhaps create your own frameworks. You should be able to
  1. Basic of programming: This is a compulsory but I still include it in this write-up, at least you must have understand the basic of the programming language you want to pick its framework. The concept of writing fabulous beginners software of “Hello World” application using the language basic syntax (variables, structured programming, function, arrays/data structure, etc).
  2. Understand Object Oriented Programming (OOP): As far as I know most framework adopt OOP in their base program, because this gives the development team easy maintenance capability. Therefore it is standard procedure among professional developer, perhaps framework development team to adopt Object design in framework development, and of course which I believe you are or want to be. So to increase your success rate in learning any framework, you must learn your language of choice OOP concept i.e. Class declaration, Object instantiation, Inheritance & Multiple Inheritance, Abstract, etc.
  3. Design Pattern: Design patterns are true and adopted way of writing code, this is actually my own definition of design pattern because that's the way I sees it. These are method of writing codes over time and deemed fit for writing better code (Factory pattern, MVC, etc)
  4. Understand Data Entity Abstraction and Entity Relationship : The inspiration for this post came from this point when I tried helping a friend out on his project (Which he wants me on the development team of which I wont be available) I tried explaining what to do in order for him to use Laravel, but alas that it's just a part in the whole part. He doesn't even understand what I was saying when I told him to map out the application entities. Entity mapping is just the way an Architects come up with building design concept (Going back to my educational background). Architects understand that in order to design residential building they map out all variables (Stakeholders) contributing to their designs design, how each of the variables affect the outcome of their product. They understand to separate personal area (e.g Bedrooms) from public areas (e.g Living room) as much as possible, for beginners in Architectural school you will be taught the concept of grids where you line up facilities vertically and horizontally and map out the strengths of their relationship. This also applies in all form designs job, but in the case of Software development considering you want to build a school result solutions and you want it to be extensible over time, it is not advisable to keep student basic records (name, gender, dob, etc) with the results. You separate the basic record from the result and map a relationship to each other. A student will/can have one or many result and in reverse a result must always belong to a student. This applies to frameworks like web applications, where you are expected to concentrate on what you need to get done than how to get it done. Mapping out relationship between entities involved in your application will make job easier and will make your application scalable.
  5. Play around with free Libraries and Packages: With thousands of open source projects floating over the internet, most especially on Packagist, Github, Bitbucket, etc. you can contribute or fork it in the case of github and modify it to your taste and perhaps share it for other users too. This will give you sense of belonging and contribution to the open source community, I help contribute to open source school management system sometimes ago. This gave me an insight of what collaboration and contribution meant, the fulfillment of being part of something great and useful is more than enough. Before I get my hands dirty on any project I did first dig into some open source project online and see how to utilize them for my personal usage instead of writing everything from scratch (Swallow your ego).

  6. Write some code library that you have used over and over on Github
  7. Attempt to write your own Framework: This may sound crazy! Yeah, the crazier, the better. I'm trying to learn a how use a framework, why would I want to write my own framework? Because, if you don't understand how it's being done how will you get it done! If you can build your own framework at least if it doesn't get to production, you will have base understanding of how most public frameworks are developed. I developed my own basic PHP framework which I named “QodeLite” it follows the MVC design patterns and I used it to developed some couple of pet projects before I abandoned because of maintenance, it was meant to be simple like CodeIgniter, powerful and extensible like the C programming language where you don't have all the whistle of not necessary libraries that may not be used in all projects in fact doesn't have a database library (I guess QodeLite requires a complete libraries of its own ). Building QodeLite gave me a lot of insight in how most MVC frameworks are designed and built, therefore any MVC framework are just bunch of Model, View and Controller; your job is how to juggle them together to achieve what you want to achieve.
  8. Try contribute to open source framework you like or fancy: This the part where I lied because this will come after learning the frameworks of choice, you wont be able to contribute to a framework you don't understand (I guess you must have forgiven me because it's an honest lie, and honest lie are always forgiven before and after its being told). By contributing to the framework you love means you see yourself as part of the community that makes great things that everyone is using and possibly you might get a medal or even have your name on the wall of fame the framework contributor. There are several ways to contribute to all this projects which include but not limited to all these core of the frameworks, plugins/extensions development, documentation, language translation, bug fixing/bug reporting, financial contribution.
If you have read this post so far I am pretty sure you know how to pick a framework and which framework to use as your default framework in all your project. I have heard guys filling criticism against using framework with their baseline that framework makes a developer lazy, yeah its true, but not 100% true. Our job is to build a solution that help business and clients succeed and they want it done quickly, and luckily for us there is a solution that meet us half way to what we need to get done isn't it reasonable to adopt such solution to help make the life of our users easier, and not only that these are solutions being built by an army of developers around the world, if more than one head could be wrong then a single head is more wrong. Before we you stop reading this post, I just want you to know that this is not all the picture, but my own perspective of what you should understand, but if you think I am wrong, please kindly judge me with manner (Justice with Mercy), but if you think there is addition or subtraction to this post please comment on it below otherwise share on all social network with friends and families.
Regards' Habeeb Salami

Comments

Popular posts from this blog

Free Open Source Software That Could Make You Rich

Birth and Death of Bulk SMS Business in Nigeria