Why I continue to develop with PHP

I have no doubt that if you work in any realm of software engineering, or have at the very least spent enough time on Twitter, you’ll have encountered the seemingly endless cycles of arguments about what programming language, framework, or paradigm is best, and why everyone else is wrong.

PHP is no stranger to being a point of contention among different factions of web developers and is sometimes depicted as ancient, labouring technology. In reality, this is so far from the truth that it’s astonishing.

Why do people dislike it?

Some people can’t even give you an answer! It’s just fun to make fun of it. Though many do have genuine and understandable answers. A great deal of PHP code is written terribly, without conforming to the accepted standards that make working with the language, especially in corporate environments, significantly easier. Even common frameworks like CodeIgniter and the ubiquitous WordPress are guilty of this, hence the derision. Other codebases don’t make use of modern PHP functionality and suffer as a result.

A lot of other ridicule comes from lack of consistency in older function naming conventions and quirks of the language itself, but I really feel that this is grasping at straws at most, and such criticisms could be directed at other languages like JavaScript too, that aren’t flawless.

Node.js isn’t king, yet

Node.js, the JavaScript runtime powering many web applications is an insanely powerful tool with great frameworks to boot. It’s incredibly popular and is sometimes credited with being the future of all web development – JavaScript across the entire stack.

This, of course, doesn’t mean that PHP (and indeed other languages) are being forced out. Languages like PHP (and Python, Ruby, etc.) have diverse and mature ecosystems that power everything from simple blogs to large eCommerce monoliths. Let’s look at the statistics:

The PYPL index indicates that JavaScript sits at #3, and PHP shortly trails at #4, from this time of writing.

According to the TIOBE index, PHP continues to rise, sitting at around tenth place at the time of this writing.

Bare in mind, this includes usage of JavaScript across the entire stack, including front-end, where it remains an integral building block of the web.

The rise of Laravel… and WordPress

Backend Frameworks with the most stars on GitHub:

1. Laravel – 61.6K⭐️
2. Django – 52.1K⭐️
3. Flask – 52.1K⭐️
4. Spring Boot – 50.8K⭐️
5. Express – 50.2K⭐️
6. Ruby on Rails – 46.5K⭐️
7. Meteor – 42K⭐️
8. Nest – 30.5K⭐️
9. Koa – 30K⭐️

Which one is your favorite?— Marko ⚡ Denic (@denicmarko) September 26, 2020

The Laravel web framework, despite being relatively new, has skyrocketed its way to stardom on GitHub. This naturally isn’t representative of its usage, but its MVC, Rails-like architecture, command-line interface Artisan, database interactivity via object-relational mapping, templating engine, and testing suite for robust Test-Driven Development all out of the box, it’s a Swiss army knife that makes development not just easy, but immensely fast. I routinely make use of this framework, so I’m biased, but I highly recommend it.

For better, or for worse, WordPress continues to climb in usage. It’s easy to set up, its assortment of plugins and themes are unparalleled across all content management systems (CMS), and to its credit, has been working hard to rectify many of its historical security problems. The rise of JAMstack and static site generators have arguably made WordPress even more popular – by utilising it as an easy-to-use headless CMS that exposes its API to hydrate rapidly loading front-ends. Of course, if you’re looking to make money, then coding your own plugins and themes will remain profitable.

Okay I’m convinced! What now?

PHP is a fun and useful programming language to have in your arsenal, but don’t take my advice for it, go and explore the elephant ecosystem for yourself! I strongly recommend the following learning resources for getting on your way:

  • Codecademy is ideal for absolute beginners who want to learn language syntax without needing to install the language.
  • PHP The Right Way is something you should keep on hand at all stages of your career – it will remind you of the best ways to do things and common pitfalls to avoid. It will also guide you on how to install the language and package manager, Composer, on your operating system.
  • Laracasts is an incredible learning resource for both PHP and Laravel, with plenty of free learning paths for you to sample. I highly recommend a paid subscription if you’re serious about PHP. Great for Vue.js too.
  • Codecourse is another strong contender with plenty of free resources on PHP, Laravel, and other popular microframeworks.
  • PHP.net and of course, the language’s actual documentation.

Final thoughts

Ultimately, my tl;dr answer for why I develop using PHP in 2020 is because I like it. I grew up with it – and it remains and continues to mature as a respected and powerful tool on the Internet. This article’s purpose isn’t to discredit other languages, like JavaScript, but to reaffirm PHP’s place among them, and to serve as a reminder that it isn’t going anywhere anytime soon, regardless of how many paamayim nekudotayim jokes you make!

Securing subject-specific knowledge in an unending battle but a vital one

Teachers of computer science face a challenge not commonly found in other taught disciplines – the need to continuously ensure that one’s subject-specific knowledge is continuously up-to-date and in line with both current trends in technology and substantial advancements in the field.

Whilst many aspects of taught computing remain the same and are likely to remain the same for generations to come, particularly those heavily rooted in mathematics such as binary arithmetic; a concept dating back even as early as the 1600s, (Lodder, 2009) the dynamic and ever-evolving curriculum poses unique challenges for computing educators as they fight to balance their intense workload characteristic of working in education along with finding time to improve their skills as a practitioner.

The far-reaching need for continuous professional development

Before exploring this topic in more detail it is important to preface with an acknowledgement of the importance of continuous learning and self-improvement and that they are cornerstones of the educator’s profession, with the most talented and dedicated teachers looking to simultaneously improve their subject knowledge and pedagogical toolset linked to the latest research.

Goodall et al (2005) found that 90% of teachers participating in their study found continuous professional development (henceforth CPD) to be felt at least somewhat useful, in particular for those where improvements in knowledge and skills were most impacted. Furthermore, those within the post-compulsory sector for example can look to professional standards 7, 8 and 9 for further reassurance of its importance regardless of what one teaches. (Education & Training Foundation, 2014)

My own experiences

For the teaching of Computer Science at both the GCSE and A Level specifications, much of the curriculum remains the same over the years due to the theoretical nature of the course, where choices of programming language are broad and allow for more traditional choices when teachers might be lacking in more contemporary resources and skill sets (i.e. many examining bodies allow for choosing Visual Basic over more increasingly popular languages such as C# and JavaScript) and that many areas linked into computational theory have little tendency to change.

Nevertheless, large components of these courses consist of coursework projects whereby students are at liberty to design and create complex software projects using the software development lifecycle (SDLC). Students are often free to create whatever they want, provided that they meet the complexity requirements set by the examining body.

I came into my current teaching role with a wealth of prior programming experience developed in academia and in industry, though I naturally have my preferences in languages and frameworks that I am more familiar with. Some of my Year 12 students were developing using the C# language – one that I was mostly unacquainted with aside from basic tutorials and open source projects I worked on in my free time. This meant that not only did I need to rapidly learn a new language, but since students were often including third-party libraries, I had to learn aspects of its ecosystem too. This is a completely ordinary experience for software engineers and computer scientists to do when they take on new projects or move into new areas, but I do not think that it would be an experience most other fields would be well equipped to deal with. Fascinatingly, the only close comparison I can immediately think of are those teaching music and perhaps also dance, which are continuously flooded with new concepts and contemporary ideas, often also caused by technology. (BBC, 2019)

Furthermore, some students expressed interest in using development engines and environments, namely Unity, to develop video games; a prospect both allowed and encouraged by examining bodies due to their inherent complexity. (OCR, 2015) This naturally calls for additional learning, and if you do not have a powerful enough computer at home to run these environments then this can create additional issues at keeping up with your own students just so that you can be in a position to support them wherever necessary.

The additional challenges of vocational courses

Many colleges and post-compulsory centres and schools will offer vocational courses in IT (information technology), such as ‘vendor certifications’ or coursework-oriented Level 2 and Level 3 BTEC certificates and the like. These courses sometimes change frequently, even annually, in order to keep up with ever-changing computer software packages, trends, and even legislation. For example, qualifications issued by Microsoft will eventually retire and are replaced by newer programmes in order to keep the certifications current. (2020)

What the research indicates

According to a study conducted by Sentance & Csizmadia (2016), where British teachers of computing across a range of key stages were questioned on the greatest difficulties that they face, the most common challenge reported was in their own subject knowledge. One such teacher reported: ‘I do self CPD daily and have given easily 100+ hrs of my own time to building my own skill set up’.

For many teachers, teaching computer science is a new prospect in a United Kingdom that has spent 20+ years previously teaching only information technology, and as a result the need to upskill and learn entirely new curricula is a daunting prospect. Sentance et al (2013) found that in a small group of surveyed teachers, 71% of them needed guidance on how to teach the subject.

A study from Brown et al on the resurgence of computer science in British schools concludes that though the steps to reintroduce the subject in the country has been positive, many changes remain in order to further equip teachers – mainly the need for future training, better resources, and for many, formal training to transition to the more theoretical subject in the first place.

Final reflections

It comes as no surprise that numerous teachers throughout the country struggle and must dedicate large quantities of their own time to keeping their own subject knowledge strong. It is disappointing however, that many former teachers of IT / ICT migrate into teaching computing with little to no support or CPD to enable them to teach what is practically a widely different subject altogether.

Having previously worked in software engineering I am aware of the challenges we face as professionals and the constant need to evolve in the face of change. For many teachers without this experience, it might come as a surprise that teaching computing is more in alignment with industry than one might initially expect, and that they too will be expected to make continuous adaptations as the curriculum does, especially for those teaching vocational subjects and vendor qualifications.

The need to enjoy what you do is paramount for success in teaching computing. I am thankful that I am still passionate for programming and still share the same curiosity for computers and technology that I did as a teenager. As a result of these revelations I have taken steps to conduct my own CPD, including sitting Microsoft examinations to fill gaps in my subject knowledge and to provide proof of my ongoing learning. I will continue to learn and play in my own time to provide my students with a suitable model for emulation, a significant part of my teaching and learning philosophy, so that they too can follow a similar approach in whatever career path they choose.

Bibliography

  • British Broadcasting Corporation (BBC). (2019, March 4). Music education ‘risks being outdated by technology’. Retrieved April 29, 2020, from https://www.bbc.co.uk/news/education-47414952
  • Brown, N. C. C., Sentance, S., Crick, T., & Humphreys, S. (2014). Restart: The Resurgence of Computer Science in UK Schools. ACM Transactions on Computing Education, 14(2), 1–22. doi: 10.1145/2602484
  • Education & Training Foundation (ETF). (2014). Professional Standards for FE Teachers. Retrieved April 27, 2020, from https://www.et-foundation.co.uk/supporting/support-practitioners/professional-standards/
  • Goodall, J., Day, C., Lindsay, G., Muijs, D., & Harris, A. (2005). Evaluating the impact of continuing professional development. Nottingham: Dept. for Education and Skills.
  • Lodder, J. M. (2009). Binary Arithmetic: From Leibniz to von Neumann. Resources for Teaching Discrete Mathematics, 169–178. doi: 10.5948/upo9780883859742.023
  • Microsoft Corporation. (2020). Legacy Certifications. Retrieved April 29, 2020, from https://www.microsoft.com/en-us/learning/retired-certifications.aspx
  • Oxford, Cambridge and RSA Examinations (OCR). (2015, May 10). OCR A Level Computer Science Project Setting Guidance. Retrieved April 29, 2020, from https://www.ocr.org.uk/Images/324587-project-setting-guidance.pdf
  • Sentance, S., Dorling, M., & Mcnicol, A. (2013). Computer Science in Secondary Schools in the UK: Ways to Empower Teachers. Informatics in Schools. Sustainable Informatics Education for Pupils of All Ages Lecture Notes in Computer Science, 15–30. doi: 10.1007/978-3-642-36617-8_2
  • Sentance, S., & Csizmadia, A. (2016). Computing in the curriculum: Challenges and strategies from a teacher’s perspective. Education and Information Technologies, 22(2), 469–495. doi: 10.1007/s10639-016-9482-0