Web Development, Potential and You (P2): The Value of adopting the bleeding edge
Whilst writing the previous article about going beyond the “status quo” and actually focusing on improving the quality and worth we have as developers, I had actually planned to discuss a great deal on the hidden potential of the web and go quite deep on the topic. Turns out, I really like seeing words on my screen and it became way longer that I would have liked and had to cut to the article into 2 parts to make up for it. Even if you aren’t a web developer and your interests lie elsewhere, I’m pretty sure that some of the parts in this second section will give you a new perspective and fresh ideas you can use. (Also the too lazy to read version is in the conclusion, in case you were wondering)
I’m now interested! Where to from now?
I believe that for someone out there, the epiphany I had of web development was actually good enough to inspire action and be a better developer. By having developers on a wider spectrum of skill levels and abilities evenly distributed, things become easier and more profitable for all of us, even the developers without a lot of skill starting out in the game. I know that sounds counterintuitive, but think about it.
The really experienced/talented developers who’ve pushed further can take on the much more difficult (higher paying) projects whilst the developers with slightly less skill are still free in the more casual market. The obvious benefit of this is simple. If there’s developers of different skill levels each undertaking jobs equivalent to their skill level, it means that there’s actually less competition for everyone since all the developers are spread over different playing fields. Less competition means more people can have more work to do, more fulfilment and satisfaction and also more money to take back home at the end of the day. Isn’t that a beautiful picture?
Problem is, in Zimbabwe it’s not quite that easy. Like one commenter on my previous article quoted, it’s the economy, stupid! Don’t get me wrong, our new President sure knows how to sell dreams, and also I was kinda getting annoyed at all the Asante-sanaring (yup, that’s a new word I made up) of the old administration, but our economy still has a ways to go before we’re all swimming in cool websites and web apps projects that we’d like to undertake. So that means most of the projects in Zimbabwe are still going to be the cheap websites that need to be developed on a shoestring budget and even if you’re the most amazing web dev in Zim, you’re probably going to be stuck with a lot of those. And that’s when you’ll probably decide to move out of the country and our vicious cycle continues.
Another issue that adds fuel to the fire is that a lot of people originally weren’t web developers but because of the situation, have to pick up those skills to survive in this economy. Honestly speaking I’m pretty sure they’re some C and Assembly gurus who had to jump ship to web development which wasn’t really (and still isn’t) their cup of tea but what can they do, very few industries here are automated enough to a point where their skills are needed. I’m also sure there’s someone with an affinity for bare metal graphics libraries like OpenGL reading this, which is quite cruel and ironic at the same time because quite a few Zimbabwean Universities teach it but there really isn’t any place where it’s used widely here.
It’s not a mystical revelation i’m speaking about, nor is it something really shocking, it’s just reality at this point. I’m sure if we tighten our belt, really start learning and pushing our skills to be far better, we’ll eventually hit the point where we can stand amongst international competition without being embarrassed. But personally, I’m a little bit of an overachiever. If we really want to avoid the first scenario I mentioned of all the good developers being hungry and ending up leaving for greener pastures, we need other countries looking at us instead of our developers looking at them. How many times have you heard the phrase “so and so country is XX amount of years ahead of us technology wise”. Really? Are you saying all the fancy 4th and 5th gen core i5/i7 laptops I see being sold in town were made 20+ years ago? And all the people I see rocking apples and galaxies for phones are actually holding slabs from the stone ages? Let’s face it, the technology is here. And if, it isn’t, we can just fly a plane and with a few thousand bucks we can come back with the latest and greatest. What’s actually lacking is the skills to use the latest and greatest technology. Which we can acquire. In fact, not many countries (yes, even those “cool” ones) actually have people with the passion or time to learn to use the latest and greatest technologies. They’re happy with their current 9–5s that pay 40–60k.
That’s where our opportunity to be an outsourcing powerhouse can come from. From the potential of the latest and greatest web technologies. Also for those guys sitting at home with their really impressive Assembly, OpenGL and C/C++ skills: come aboard with us on the journey of mastering the true web, we’ve got amazing technology being developed that only you guys have a shot at using. And if you think I’m kidding, look at this, browsers are shifting to assembly languages and low level to handle the stuff that the developers who are pushing the limits of the web are throwing at it. I’m going to try to keep the next section short because each of these hidden gems in the web is worthy of a topic describing its potential in and of itself (hmm, that could actually be a cool web series) but I’ll try to leave plenty of resources to learn from. Okay, let’s jump in:
Offline first web apps
If you haven’t seen or heard a lot about this one, it’s quite possible although I have seen attention in 3rd world countries and interest sparking up. For those who don’t know, offline-first web apps are basically websites, with the interesting ‘cache’ (pun of catch, offline first joke couldn’t resist) of storing critical components of or even the entire website, making it work even when completely offline the next time it loads. This has a lot of interesting implications, especially in our bandwidth starved country. Pages load way faster, bandwidth used to load a site become a ton less if the site was visited even once before on your device and when done right, you can even access the website when you completely don’t have access to an internet connection (hence offline first).
There’s a lot more I could say about this one and its potential but that would probably make this article longer and it’s nuanced enough to be a topic on its own.
If Offline first web apps was a person, AMP would be a person who shares the same totem. Not exactly closely related, but both dealing with making the web quicker and easier to load for mobile phones. AMP actually stands for Accelerated Mobile Pages. It’s actually a standard of guidelines that Google designed itself to increase the loading speed of mobile pages with quite the benefits for its trouble. For one, Google actually catches the AMP version of the website on their server so it loads near instantly when a person clicks the link on Google search. The second and most important point is that on mobile, AMP pages are given a much higher rank in terms of SEO meaning your obscure page will be more visible and the public. Also, because of the fast load times, the public will love your page too
Good for: SEO gurus and people who want an edge over their competitors
Good for: those C/Assembly old timers who want to jump in on the web hype train
Good for: the C++ programmers and developers who played around with OpenGL but maybe want to look for opportunities in web
Last year, I had the chance to play with an Oculus Rift and I left that experience pretty impressed and excited for the future of VR. I initially had hype for it when I heard about it and got a bit sceptical overtime but after I saw it first hand, I became a believer. I think WebVR has a lot of the stuff going for it that the more expensive rigs like the Rift and HTC Vive do but with the added advantage of being accessible to anyone with a nice phone or can afford a cheap VR set which I’m sure quite a few people will qualify under. The biggest weakness and reason why VR isn’t taking up faster is because of apps and software that are engaging enough to justify it but if you were to make a African President simulator 2018 in VR I’m sure people would throw money to see that insanity
Good for: Web Developers who’d want to try their hands in VR but can’t afford the crazy hardware and computational strain
Browser Extensions and Webstore Apps
I know, browser extensions and webstore apps (basically a fancy hybrid between app and extension) doesn’t seem as glamorous as those other super cool cutting edge stuff but in my opinion, I think there’s a good market if this one is played right so let me explain. All these other things are okay and cool in that they take their data online but all of them have one limitation. They can’t access stuff in the computer directly. This is where I think Extensions and Web Apps can shine.
Web Apps as native like application feel with the UI, Creativity and Extensibility of the web. You don’t even need to spend a lot of money to design a companion app because it can do all that for you, especially if the app has offline first principles baked in where it can run like a truly native experience. Plus it can run in the background making it able to load extremely fast and it has access to Device specific features such as battery life, Storage etc. giving it far more capability and usefulness than the web. The best of both worlds wouldn’t you say?
Extensions are actually a little more interesting for me because while Web Apps are like Websites on Steroids, Extensions are like pared back unobtrusive (if done right) applications that handle one thing and do it well. The hidden power in this is that you could actually distil all the values and features of a large complex site into an extremely lite on the go version which can then expand into a full blown website when you want to actually use all the power features. One of my favourite extensions right now and a near perfect example has to be the sidebar extension of WhatsApp that comes backed into the Opera Browser for 3 reasons:
- Most of the time my phone will be on the charger whilst i’m using my laptop and it’s frustrating to leave my laptop when i’m busy to check on a WhatsApp message.
- I know WhatsApp Web and Desktop exist but there are just some times when I can’t focus my full attention on just chatting but I’m willing to compromise by replying here and there whilst still looking and mostly focusing on what I’m doing online (e.g during a live stream of a lecture)
- I want to share something I’m already viewing in my browser or PC real quick so I screenshot the page but transferring to my phone or Desktop/Web would just take too long and make me lose track of thought (see 2.)
This is where sidebar WhatsApp really shines. It gives you all the critical capabilities of WhatsApp such as chatting, sending files but in a way where it just occupies a tiny portion of your screen when you’re chatting (leaving lots of room to continue with whatever you were doing) and when you don’t really need it, quietly slides back to the sidebar drawer, gently notifying you of new messages with a red dot and a simple beep sound in case you missed the visual cue. I find that personally, the extension does such a great job of what it does, I’ve hardly if ever used the (still great) WhatsApp web and Desktop alternatives.
The second and even more powerful feature of extensions, is that they have the ability (with your permission of course) to utilise Browser APIs which if you actually dig down into the documentation (going beyond again) can do some stuff that native apps can do and a few more where they wish they could.
One example which would be a super cool idea combines both the FileSystem/CacheAPI and the Tabs API. Now the Tabs API can actually read all the links that are open in a specific window (actually it can go further than this) and can save them. Another one of my favourite extensions called TabHamster does this where it saves all the tabs in my window as a dropdown of links with a custom name I can refer to later. The FileSystem API, you guessed it, can read and write stuff off the computer. Now combine the 2 and that’s where my idea comes in. Imagine an extension where instead of just saving the links of the webpages you were researching like TabHamster, you can also Cache all the webpages themselves at once! This would be really useful when you have internet at certain places and times and want access to your research, without having the hassle of saving/printing webpages one by one. Just one click, choose a suitable name and voila, all the pages are saved and all you need to do is click on the link in the extension and a cached page instantly appears. I know I can’t be the only one imagining how useful and convenient that would be, in fact, if someone actually manages to make it please send the extensions store link and I’ll be sure to give you a digital donation as a token of my appreciation.
I’m sure this is a lot to take in, plus hopefully you’re looking deeper into some of the more interesting fields that caught your eye and are thinking up crazy cool ideas. Most of the technologies outlined here are maybe 2–4 years old at best with stuff like WebGL and WASM still being built up day by day. Plus these are only the things I’m aware of, imagine what other hidden gems that are maybe still sitting in the various documentations that someone will unearth a pretty interesting use for; like AJAX which went about 4 years unnoticed before developers actually realised it’s potential and now it’s one of the essentials. The point isn’t to make you a crazy mole that digs deep into manual after manual, finding the most obscure little things and trying them. Those people are called Scientists and that’s their job description. Instead, especially for someone above intermediate, is to look for just one bleeding edge technology like the ones described to master. To learn and practice it until you can use it easily and more importantly, practically. We have a lot of catching up to do with the international market and I feel the best way we can not only catch up, but be desirable is if we dip really down and not only up our quality, but also if we have something that a rare few offer even globally. The great news about this approach is that not only do you master a skill that very few people have which makes you appealing to even places like Silicon Valley, but also it promotes collaboration and cooperation with other developers. Jack might be a C++/OpenGL fan who became an incredible WebGL dev, whilst Jill can turn even the most complex and bloated web app to be a sleek offline first machine that’s bandwidth friendly. Even if both can be considered front-end developers, they each offer something so unique that a company would outsource a project to both of them even if they were only considering one front-end developer because they can justify their cost and worth. With 6 technologies outlined here to master, that means a 6th of the competition, even internationally. And is how you build a strong developer economy