Facebook engineers are the problem with software

Before I get into the observation that Facebook engineers are hurting the software development space unintentionally let me share with you a bit about me.

This site is my 4th blog website, and I've gone beyond 50 personal websites years ago. I'm a speaker at many tech meetups around Sydney and Melbourne and have been working professionally across analyst, database and systems admin, and web development roles for the past 10 years where I am currently a lead software engineer at an innovative company called Punters managing a range of tech genius's some of which much smarter than I am in their own areas.

I'm passionate, fast learning, and driven.

I'm good at a great many things and a master of very few, my success is certainly due to the experience I've picked up from others great work and I've been lucky to work with amazing individuals throughout my career.

Facebook's contributions

HHVM

HipHop Virtual Machine

Written in Hack and PHP, HHVM uses a just-in-time (JIT) compiler to deliver faster than PHP5.x speeds for your PHP source code.

conceal

Java APIs for non-general purpose cryptography on Android.

Stetho

A debug bridge for Android applications using Chrome Developer Tools.

React.js

A Javascript library for your browser intended to abstract the user interface to better handle modern app data flow and user experience.

React Native

Not a Javascript library

React Native is used by Facebook to write source code once for their app to work on Android and iOS and much more.

These projects hurt not help software

So lets look at something almost every developer has an option on, the state of "the web" in terms of features and standardisation.
It is fairly chaotic, we've seen browser brands evolve, join together on the same engine, split and fork time and again. We've seen Microsoft fall so far behind the stigma still remains to this day and in a time they've brought us flexbox which revolutionised our web UI. In 2016 we've seen Apple Safari (based on webkit) move from being in the worst in terms of modern features to the leader quietly in a single release we never saw coming.

The web has no apparent standards, browsers are the standard in their own right

I can see how the Facebook engineers see this mess as a burden and have little faith in the W3c and ECMAScript specifications that are in place to ensure we get the same basic experience on all web browsers.

Facebook want to innovate and build new exciting things

The fact that Facebook intend to deliver a great feature is excellent, however instead of contributing for the better of the wider community they reinvent the wheel and the material the wheel is built with.
React.js is intended to abstract the user interface which is still HTML and CSS so you might try to provide a better user experience. It does this well, and if you've dedicated time in learning the principles and unique syntax the tool is very powerful.

A few negative points that are not exclusive to React.js

  • Deciding to invest time to learn it is a gamble, in another 6 months the ecosystem of the web will be entirely different again. Writing React.js code in your stack today is likely to be technical debt in a year when the next new thing arrives.

  • If you're hiring the pool of candidates with the skills required is slim at best, because the library is niche and if you've been exposed it is either as a hobbyist or the company you worked for experimented on a small scale.

  • You cannot easily find experienced developers in all cities, even in the tech capital/s of your city an expert is like a unicorn.

Instead of building a new complex layer (and fail point) into a cluttered ecosystem with an expensive development cost and high chance of redundancy or obsolete, contribute upstream to the code everyone uses, contribute to the standards.

Most bleeding edge libraries quickly become obsolete in a few years

Humble opinion on a better effort from Facebook

HHVM

Contribute to Zend Engine

Seriously guys, was it that hard to identify this? Zend Engineers already on their own are managing to provide performance on par with HHVM or beat it outright with the release of PHP7. That is PHP7 core, the code Facebook uses executing as it was meant to be, not some Hack being pre-compiled.

For a moment imagine that Facebook's brilliant engineers focussed the same effort on Zend Engine instead of HHVM, how many years ago would we have PHP7 and where would it be today?

conceal

Yet more examples of how the Facebook Engineers could have contributed to Android directly so that ALL Apps running on Android could benefit just because they are on Android.

Stetho

Any developer familiar with creating Apps for Google Play using Android Studio and Chrome Developer Tools to debug would benefit from Stetho being part of Chromium rather than a 3rd party tool you may never have heard of.

React.js

So many options here for Facebook to have made meaningful an positive effort to better the web ecosystem forever. They could have developed a webkit or blink fork with features that achieve the same performance and user experience benefits using native HTML, CSS, JavaScript and submitted their specifications for all vendors to adopt.
Logically the impact is reaching all intended audience by matter of fact, which is something a library could only dream of doing. jQuery eat your heart out (right?).

React Native

Again, so many options here. The goal of React Native is clear, write code once and it run on multiple platforms. Unity, Cordova PhoneGap, Telerek, Appcelerator, and Xmarin all come to mind instantly but there are so many platforms why would you want to create yet another obscure way to create apps?

What's worse is now Apple have unleashed Swift as open source and it is highly likely that Google will soon make it so we can develop Android apps with Swift (over Go which has now been ruled out) means that no sooner that React Native arrived it is immediately obsolete,

Swift is capable of many programming paradigms and provides some of the most modern and powerful features of any language, it would be crazy to compete a 2nd rate product next to it.

Facebook should focus their attention to Swift being the de facto cross platform language not React Native. All they would need to do is help Google and the wider open source community develop a compiler for the Android binaries and perhaps help update Android Studio - which is entirely within their ability because, well, they are pretty rad engineers.

Round up

As a responsible developer, business owner, technology manager, or software engineer, we need to waste less effort developing features that are going to be obsolete too soon for the undertaking to ever be deemed worthy - instead, direct that same energy to contributing the same desires to reach the same outcomes into the standards themselves instead of some specialty raincoat. This way everyone can benefit for years to come.

This was an attempt to raise awareness, thank you