The standard web platform has changed a huge amount since I started writing HTML4 back around 2007.
HTML5/CSS3 rolled around and all was great in the world, until you realise that none of the new features were implemented in any browsers. The HTML5 feature rollout is still happening but support for it is much better than it was. You'll find that most HTML5 features are now supported in most major browsers unless you're using an older version of Internet Explorer.
The CSS3 landscape is much improved with a standard set of modules that is now set in stone. This means we now no longer need to use the Page Render specific CSS properties. These properties were always designed as a temporary solution (not for use in production code) and in some browsers they have been removed which means that any website built with them will have various display errors.
The CSS4 draft specification was released on the 21 April 2016 so that is fairly exciting. Except we'll have to wait again for its features to be slowly rolled out.
Unfortunately; when writing a website, you still can't build 100% in html5/CSS3 because not everyone is running the latest browser. When writing HTML5/CSS 3you have to write it so that it displays on the browser with the lowest common feature set implemented. This is frustrating because you can't use all of the wonderful features HTML5 and CSS3 have to offer. One solution is to write fall back code specifically designed for older browsers but this is not always convent.
You're already writing code for desktop, mobile and probably Internet Explorer so writing extra code for older browsers is just one more extra thing you have to do.
Making webpages display correctly on mobile can be frustrating as well because there are a major amount of CSS3 attributes and properties missing. This is particularly true with Androids default browser.
Now you can use a CSS library like Bootstrap or Materialize CSS to get around most of these problems. But what if you only want to use part of the library? Well, then you have a large amount of unnecessary CSS that the browser has to download. If there is a bug in the library then you also have to wait for the creator to fix it.
This problem is not going anywhere soon as long as Microsoft and Apple keep restricting updates to their browsers to the latest versions of their operating systems. People don't always update their operating systems so as a web developer we are often stuck supporting older browsers. In the case of windows XP and Vista most web developers finally stopped supporting Internet Explorer 8/9 when Microsoft ended support for windows XP and Vista.
My thought on this issue is that we shouldn't be catering for people who are running older browsers. If you're not running an up to date browser, then sorry you're holding back the entire web platform from moving forward.
This is of course unless we are talking designing for business applications, in which case I'm a little more sympathetic. Now while I have this opinion I can't exactly follow it because most clients require some degree of backwards compatibility. This is normally about Internet Explorer 10 level of compatibility.
- don't exist on all browsers
- have browsers specific code implementations that achieves the same thing but is different from browser to browser
Now you can write JS code for each browser but telling one browser apart from another can be difficult. For instance, Chrome identifies itself as Mozilla which is what only Firefox should identify itself as.
Flash is finally dead! Well, that is not entirely true. Flash has been dropped in many cases in favour of the HTML5 video and audio. The new EME standard provides a standardised JS API for DRM (Digital Rights Management - software that prevents copying of digital media) although I can't seem to find any documentation for it or any examples or tutorials on implementing your own solution.
Not a lot has gone on with server side that's new. Yes, we have seen updates to things like apache but it's mostly business as normal. Web frameworks like Node JS and Ruby on Rails have reduced the dominance of PHP. PHP is still around but sites that are native PHP are fairly uncommon. Frameworks like Laravel have made PHP feel more modern although I wish the documentation was better. We have moved from PHP5 to 7 which is nice. This means that PHP7:
- is no longer interpreted but uses a JIT compiler
- some things have changed but unless you were doing something fairly low level or niche you don't need to worry.
- if you have written any classes in PHP and have called the constructor the same things as the class name instead of __constructor() then PHP7 won't call the constructor member function.
What framework do I use? I've been using PHP for a long time and I enjoy writing it. Its more or less C++ minus the memory leaks, strict variable types, and arrays work under the hood as linked lists. The documentation is also fantastic, easy to read, understand and has many examples.
When working with others on a team we tend to use Laravel and I tend to stay as a front end developer because I just don't like server side coding with Laravel for a variety of reasons. When working on my own projects I use my own PHP framework called PHP Burner.
It's doesn't have all the shiny features Laravel has but it gives me a reusable tool kit and a MVC structure. Every time I add a new feature I learn how to do something new in native PHP and generate a new class. PHP Burner is not publically available yet and it's in no state to be at the moment.