PHP was well-known for its speed of development (no compilation or formal build process); even for developers from alien worlds like Java esp. when developing prototypes; because it was easy to learn, develop and deploy on almost any platform.
I have been coding for almost 18 years now. I picked up PHP as a natural programming “instinct” when I had to do something for the web (that must be in 2000 or 2001).
One of the applications I developed for a recruitment company – (entire business relies on it) – is still alive after over 10 years with little or no maintenance (not my decision). I received a phone call yesterday about an urgent matter that the main panel is not loading properly. I logged on and checked on IE11(!) and checked and it seems to be working fine – it must be related to browser cache/history – simple.
I developed another application using Access over 13 years ago and it is mainly in use.
So, unless there really drastic changes in the business if a system developed for the needs of the business and it just carries on working. Simple.
In the systems I develop, I can usually create new entities and relevant pages very quickly: how about an hour for a challenge! I can create a new report within minutes which can gather data and print it in HTML, CSV and PDF. No, I don’t usually create a separate class called ReportPluginFactorySingletonPresenterServiceProvider for it. You get the idea.
During the weekend I have been “trying” to help a friend. They are using Vagrant, VirtualBox, Ubuntu, Nginx, PHP, MySQL, Node.js, Composer, Bower, Gulp, Laravel 5, Angular.js, …
I downloaded and installed VirtualBox and Vagrant within 2 hours in the night before I went to see them.
1. We have spent over 10 hours to prepare the development environment. We couldn’t connect to the box over SSH. Eventually, we found a clue online and decided that box we downloaded for Laravel 5 was faulty. Another one was OK. There were many broken database migration scripts because they didn’t follow its principles.
2. The next day, it took over 10 hours to create a new entity in the application, together with a few relationships to other entities. A very simple and broken landing page for it. We only created database migrations, models, repositories, repository managers, service providers. Yet, there are not controllers, commands, command handlers, REST API end-points, etc. We copied one of the landing pages, where it refers to a Blade template layout, it refers to partials and includes other pieces of effectively PHP files!! And also Angular.js is hard-wired in the process. And the least to say, this “modern” application architecture has no separate front-end and back-end.
What a brain***k!?
..to be continued.