Technical Decisions - Saborknight/portfolio GitHub Wiki

Why not use an existing Content Management System?

I could have easily chosen to use WordPress or another Content Management System (CMS) of choice for this project. Choosing an actively developed CMS like this would have definitely been the optimal solution to display my projects and skills in a professional manner whilst also being incredibly quick and easy to set up and work with. It would have meant using an existing theme and created my own child theme based off this chosen theme. It would have been efficient and effective.

So why didn't I just use an existing CMS?

To demonstrate my skills more effectively, it made more sense that the visitor were already experiencing something I made myself rather than using an existing CMS application. Anyone can host/signup for a WordPress site and then fill it with their portfolio projects, customise the design a little and be done with it. However, this approach of using a CMS application just to deliver the content quickly without actually designing and developing the experience seems contradictory to me when one of my main career paths, Web Development, requires exactly that. To design and develop systems which offer an experience for the target audience to quickly understand, make use of, and therefore enjoy data.

What I chose to use

Out of the methods of developing the portfolio site detailed in Other Potentials I chose to use the Laravel due to its large popularity at the moment and due to how this popularity is on the rise.

So what is Laravel?

Laravel is an extremely powerful and surprisingly efficient PHP framework. The whole ethos of Laravel surrounds developing highly complex systems/sites with minimal and clean code. It provides a massive feature-set to make developing much faster and more efficient.

Why choose Laravel?

Laravel is growing in popularity, even in 2015, only 4 years after it's first release, Sitepoint's survey labelled it as the most popular PHP framework of the year. If these publications in any way reflect the use of Laravel in the professional industry, then it stands to reason that using Laravel in the development of this project would be the most strategic move in leaving a competent impression on any potential employer.

How Laravel will be used

Other potentials

Other frameworks and methods of developing the portfolio site which I considered using were Modx, PHP sans-framework, or NodeJS. VueJS was also considered but its standalone nature means that it could be used in parallel with any of the other frameworks.

Lowest to highest considered methods of development I considered...

Modx

Modx is a CMS much like WordPress. However, it has more of a reputation of being secure (when used by a knowledgeable developer) than WordPress does. It is also an extremely customisable CMS, much more so than WordPress, which made it more of an attractive prospect to me as it meant I would be able to do whatever I want without restrictions.

However, as a natural side-effect, this customisability meant that using Modx would mean a large production time as it takes longer to develop with. Furthermore, Modx is not as well known in the Web Developer world as some of the other frameworks. This means that the knowledge of using Modx would not benefit me when the majority of employers would not be likely to know what Modx is or why my skills in developing with it would be valuable to them.

PHP

Just using PHP without any framework whatsoever, although attractive to employers as it shows extensive knowledge of the underlying language to most widely used frameworks, means that development of the portfolio site would take longer than if I were to use a framework. It would, however, mean that the final website would be extremely rapid (if developed correctly) compared to most frameworks as it wouldn't have such an extensive codebase to parse through and render when a request to the server has been made.

Using vanilla PHP also means that anything I want to do can be done as long as I know how to develop it, making the resultant site customised to how I want it and optimised for minimal latency on requests.

NodeJS

NodeJS, much like Laravel, is relatively new. Its first version was released in 2009, although it has still not reached a major release. However, NodeJS is not just a framework on top of an existing language; NodeJS is a cross-platform server side platform. It is built on the V8 JavaScript engine, the same engine as used by Google Chrome and others. This basically means I could write both the server side and client side parts of the portfolio using JavaScript. This also means that NodeJS applications have a significant performance increase compared to PHP counterparts.

NodeJS is popular in the hardcore development industry, mostly because of the topics mentioned above. This means that showing a proficiency in using NodeJS would be attractive to potential employers.

VueJS

VueJS isn't effective as a self powered framework. Displaying a consideration for effectiveness in the website I produce as my portfolio would show potential employers a competency when selecting technologies sparingly. To use VueJS most effectively I would require an API to handle the backend requests. This would mean that I would have to use one of the aforementioned methods anyway. Due to this, and the limited time I have to make sure the portfolio is completed to the best of my ability, I have decided to put off implementing VueJS until a later date, if at all.

Implementing it would evidence my competency in not just using VueJS itself, but also in handling client to server requests and in implementing REST APIs, which are another modern technology use.