Being a designer / developer means always keeping your knowledge updated and challenging yourself to the next level. It takes more than just mere knowledge of HTML and CSS to be sought after. You are expected to move your magic mouse and create amazing websites and applications (at least that is what the clients expect).

Although I have considered my knowledge of PHP/MySQL/ WordPress sufficient to get me through most situations, I knew it wasn’t enough. I have always known this, which is why I always kept Design Playground around for practice. While browsing tutorials, I stumbled upon Sitepoint‘s e-books for web development. I always have been a fan of Sitepoint’s tutorials. They explain each step with a good reason. So I decided to go ahead and buy their PHP E-Book: Jump Start PHP Environment

While reading their book I came upon a paragraph from their book. Here’s the link to that statement . What it mean was that using Windows based environment software (such as XAMPP, WAMP etc.) was actually bad developer practice. It was nearly like you have the whole kitchen with you to bake that cake. Quick, easy, good for practice and testing – yes ; production – not really. Here are some arguments for why using XAMPP is a bad practice : –

  • You share environment between all of your projects which leave a lot of potential bugs.
  • You save time of setting up environment only to avoid the world of Linux
  • You do not practice Linux Commands frequently, even you will never do it when you deploy your website via FTP on a shared host with support control panel
  • Your test server is not same as the production server.
  • You will use PHPMyAdmin quite frequently for database administration practices.
  • You will depend on it for updating any new libraries, updates from the dynamic LAMP communities such as testing performance of WordPress or Magento on PHP7

So in a nutshell, if you continue to use XAMPP or any similar software, you will get by for a while, but this dependency is going to bite you in the butt in the long run. Let me share a personal experience with you.

We had a crucial client that we were dealing with. My mentor had been shifted to marketing and my other senior project managers were just project managers of name i.e. no help at all. So now I had been tasked with getting this clients web application deployed on a vanilla Red Hat Linux web server. I had always used XAMPP and knew not a thing about Linux, nor did anyone else in the workplace. With a lot of requests and great difficulty , we got the server changed from Red Hat to Windows Server, only to install XAMPP on it. We did get it running, but somehow I felt it wasn’t the right way. That was one of my last projects before leaving the company in 2015. Surprisingly despite the goof up, the head chief of the client said it was great working with me (whether this was heartfelt or just a polite business way of saying “Fuck You”, I wasn’t sure).

Fast forward to July 2017

I am doing a course in Big Data ( I talked about it in my previous post). Turns out setting up the software environment (Hadoop) recommends Linux. It can be done on Windows but it wouldn’t be that efficient and effective and most certainly not production grade. We had been introduced to Virtual Box and had implemented the quick start virtual machines which were available for download from Cloudera. One of the tasks we were told to perform was installing a database on a new virtual machine in Virtual Box. To be honest, it seemed daunting at first but then it seemed similar to loading Windows on a new laptop. Even though I had installed Ubuntu Desktop version of Linux and it did have Graphical User Interface, the thing about Linux was that it is command line driven. So I needed to as someone would say “get my hands dirty”.

When you are stepping out of your comfort zone and you are trying something new, it is difficult at first but then when you don’t quit you get better. I started to get a hang of what command did what or how to run a particular command for installing certain software into it. Not many of them had installers but some of them didn’t even need them as it was downloaded to your system in a location and all it took was just one command to extract the files and install it on the system. Comparatively it was way faster than windows installer and lesser chances of crappy malicious software being installed.

As I started to practice more on it bit by bit, I started to quite appreciate it. After a few interactions, it wasn’t that bad as I had initially assumed. Once upon a time it struck me about the PHP book I had been reading. While the book guys said to use Vagrant for the projects, the idea was to use the command line interface instead of the popular Windows GUI. For me, setting up a Linux virtual machine and using the command line felt easier than using Vagrant, but that’s just me.

Another thing that I realized at that time was that PHP frameworks were trending. Maybe I had been living under a rock but knowledge of frameworks was preferred over just some core code snippets. I had worked mostly on WordPress CMS projects while there were many developers out there using these frameworks to create amazing web applications from scratch. I was fearful that if I did not at least acquaint myself with one or two these frameworks, I was going to be rendered obsolete ( the fear is what made me take the Big Data course in the first place).

Noting this, I looked into the current PHP frameworks. I decided to learn at least one of the 3 PHP frameworks: – Code Ignitor, Laravel or Symfony. I had started to learn about Code Ignitor in my previous job but I had not set up a virtual machine for that. While Laravel is said to be an easy framework to work with, It was nothing close to easy when installing it. I spent almost 3 days to get Laravel up and running on my Ubuntu 14.04 virtual machine. This got me frustrated to a boiling point.

Symfony, however, was not that difficult to deal with. I was able to install it in about 15-20 minutes which was OK. I may not know a whole lot about frameworks, but if they trouble you even before you begin working on it, no amount of conviction is going to make you think about giving it another shot. Laravel did work, but only once and only after I had successfully installed Symfony previously without much trouble. Laravel is a fork ( new age term for clone or derivative) of Symfony. WooCommerce was a fork of JigoShop and it was quite independent of its father, not to mention it became hugely more popular to the point that creators of WordPress, Automattic, assimilated the plugin company into itself.

So Code Ignitor didn’t feel powerful and Laravel was a pain in the butt, leaving me Symfony to practice with. I have just started so I cannot say much, but I hope my post is somewhat a guiding light in choosing the right tool for the job. We need a tool that can get the job done within the time frame allotted. If we keep fiddling and fudging up the installations of our tool, when are we going to work on the real deal. Just something my 5 year work experience has taught me.

While using Ubuntu, it also made me wonder. Had I known a bit about Linux back then when I got the project, I would have been able to deploy their project without ever needing to change the server. While that client still complied, had they been adamant or if they did not have the resources to get a new one, what then? I would have been totally fudged. In a way, this Big Data course really did help out.

My pearls of wisdom entering the world of web development: do not shy away from trying something new. Merely doing a course isn’t going to get you anywhere. If you do need to practice coding and setting a web application for your next client, do what I did; Get a virtual machine software, install a Linux desktop or web server and practice on that. You will get a real feel on how to ACTUALLY work on a production server and deploy your client’s application. You can thank me by thinking about my advice carefully and then taking a decision for or against it, as neither I nor anyone else has the power to force you into anything. It is you who calls the final shots. Good luck.