INSUBCONTINENT EXCLUSIVE:
Building web services and smartphone apps, which is most of what I&ve been doing professionally at HappyFunCorp1 for the last decade or so,
used to be pretty straightforward
Not easy, but straightforward, especially when the client was a consumer startup, which so many of them were.
The more we did the better we
Design and write two native apps, usually iOS first and Android second
Don&t skimp on the design
Connect them to a JSON API, usually written in Ruby on Rails, which also powered the web site
There always a web site; consumers might only see the side which is a minimal billboard for the app, but there essentially always also an
admin site, to control features and aspects of the app.
Design isn&t as important for the admin site, so you can build that in something
crude but effective like ActiveAdmin; why roll your own Similarly, authentication is tricky and easy to get wrong, so use something like
Devise, which comes with built-in hooks to Facebook and Twitter login
Design your database carefully
Use jQuery for dynamic in-browser manipulation since raw Javascript is such a nightmare
Argue about whether to use Rspec or Minitest for your server tests.
All there OK, roll it out to your Heroku scaling environment, so you can
simply &git push& to push to staging and production, with various levels of Postgres support, autoscaling, pipelines, Redis caching, Resque
worker jobs, and so forth
If it a startup, keep them on Heroku to see if they catch on, if they find the fabled product-market fit, not least because it helps you
If so, at some point you have to graduate them to AWS, because Heroku only scales so far and it does so very expensively
If not, well, &fail fast,& right
Those were the days, my friends, those halcyon, long-gone days of (checks notes) five years ago
The days of a lot of grief, sure, but very little decision complexity
The smartphone boom was on, and the web boom was settling down, and everyone was still surfing those two tidal waves.
Today Well, today we
still are, neither of those waves have broken, per se, software is still eating the world, but things are … different
More of the world is being eaten, but it also happening more slowly, like growing 50% a year from a $1 billion base rather than 500% from $1
There are fewer starry-eyed founders with an app idea that they&re sure will change the world and funding enough to give it a shot
Those are still out there, sure, and more power to them, but the landscape is more complex, now.
Instead we see more big businesses, media
and industrial and retail alike, realizing they must adapt and be devoured, experimenting with new tech projects with a combination of
excitement and trepidation
Or requisitioning custom apps for very specific — but very useful — purposes, and requiring them to interface with their awkward
pre-existing custom middleware just so
Or tech companies, even big household-name ones, outsourcing ancillary tools and projects in order to focus their in-house teams purely on
their core competencies and business models
Our mix of clients has definitely shifted more towards enterprise in the last few years.
Which is not to say that startups don&t still come
through our doors with bright ideas and inspiring PowerPoints on a fairly regular basis
As do super starry-eyed blockchain founders (granted, I&m sometimes a bit starry-eyed about blockchains myself) replacing the consumer-app
I doubt we&re alone in having had a spate of blockchain startup projects late last year and early this, which has diminished to only a
couple active at the moment
(Not least because the tooling is still so crude it reminds me of 90s command-line hacking.) But I strongly doubt that sphere is going
away.
We haven&t dealt with as many AI projects as I would have expected by now, probably partly because AI talent is still so scarce and
highly valued, and partly because it turns out a lot of seeming &AI& work can be done with simple linear regressions rather than by building
and training and tuning deep-learning neural networks… although if you do those linear regressions with TensorFlow, it still &AI&
buzzword-compliant, right Right
Most of all, though, the tools we use have changed
Nowadays when you want to build an app, you have to ask yourself: really native (Java or Kotlin Objective-C or Swift) Or React Native Or
Xamarin Or Google new Flutter thing When you want to build a web site, you have to think: traditional Or single-page, with React or Angular
or Vue As for the server — Go is a lot faster than Rails, you know, and oh, that elegant concurrency handling, but, oh, where is my
map/filter/reduce Javascript is still a clumsy language, but there are certain advantages to having one language across the stack, and Node
is powerful and package-rich these days
And of course you&ll want it all containerized, because while Docker definitely adds another layer or two of configuration complexity, it
usually worth it.
Unless you want to go fully &serverless,& at least for aspects, with Amazon Lambda or Google Firebase Even if you don&t
use Firebase for a datastore, how about for authentication, huh And if you&re all containerized, and Kubernetized if/as appropriate, though
maybe let not go the many-microservices route until you&re sure your product-market fit justifies it, then where do you want to roll it out,
AWS or Azure or Google Cloud or Digital Ocean Or do you want to use one of their PaaS services, like App Engine or Beanstalk, which, like
Heroku, sorta kinda live between &serverless& and &bare metal virtual machines&
I oversimplify, but you get my point
We&ve never had more options, as developers, more tools available to us … and we&ve never had to struggle more with analysis paralysis,
because it awfully hard to determine which of the possible toolsets is the best one for any particular situation
Sometimes — often — we have to be happy with just selecting a good one
And that selection problem doesn&t look like it going to get easier anytime soon, I&m afraid
It a strange time to be a coder
We live and work all tangled up in an embarrassment of riches.
1Yes, that really our name
No, this TC column isn&t a full-time gig
(Which is something people frequently assume, because it so much more visible and to some people writing a column every week sounds like a
lot of work, but no, I&m really a CTO.)