
I Was Wrong About Offline - tiago_simoes
https://medium.com/outsystems-engineering/i-was-wrong-about-offline-fe5426894740#.fkjjlzqvp
======
firasd
Between this article, the recent front page article on contrast[1], and
something I've written recently (about missing loading indicators) [2], it
seems the common feature is that developers are losing empathy for end users.
Our devices and connections are too good to understand real world scenarios.

Facebook has (had?) a program to address this called '2G Tuesdays' [3]

[1] [https://backchannel.com/how-the-web-became-
unreadable-a781dd...](https://backchannel.com/how-the-web-became-
unreadable-a781ddc711b6)

[2] [https://uxdesign.cc/show-your-work-dont-forget-loading-
indic...](https://uxdesign.cc/show-your-work-dont-forget-loading-
indicators-9f511af1743d)

[3] [https://code.facebook.com/posts/1556407321275493/building-
fo...](https://code.facebook.com/posts/1556407321275493/building-for-emerging-
markets-the-story-behind-2g-tuesdays/)

~~~
dleslie
I insist on using the minimum spec device for every product that I work on; it
means that my job is often frustrating, but we build better products as a
result.

~~~
HerraBRE
Absolutely.

"Programmers with fast computers write slow code" has been my justification
for always buying a cheap shitty laptop, and my excuse for still not having a
SSD...

Similarly: "Programmers with reliable Internet connections write unreliable
code."

~~~
falcolas
I gave in to the SSD craze because _OSX_ became unusably laggy without one.

~~~
dleslie
Using a Mac is the first thing to stop doing, if you're at all interested in
targeting the median case.

Silicon Valley's obsession with high-powered boutique notebooks and the high-
frequency replacement cycle of Apple products is in part why so much software
that comes from the region is inaccessibly slow.

~~~
falcolas
FWIW, I write software for servers, not clients. But yeah, I understand what
you're getting at.

That said, I'm fine with folks using top of the line computers for developing,
just not for testing. Nothing will frustrate you more than attempting to use
an IDE on a memory and CPU starved system with a spinning rust drive. Nothing
prompts you to silly shortcuts more than having a minute plus code/build/test
cycle.

But once the coding is done, pull out that netbook from 2012 and make it run
fast on that platform.

------
anexprogrammer
What the heck is with the implication that offline is for Middle East, Africa
etc? I'm in the UK, have usually lived and worked in urban locations, but I am
yet to live or work somewhere that hasn't had some degree of signal issue.
Does the whole of SV and California have perfect signal?

Like phone works only in a certain part of one room, or works but sensitive to
movement, or works fine, but you'll have multiple outages between home and
work. Leads to missed calls, texts, and plays havoc with apps that mostly
assume perfect connection. My attempt to adopt Google Play music was over in a
week or two.

I wouldn't mind if I was in the wilds, I'd expect it, but that's in towns of
100k+ - 1m+. Crap signal and breaks isn't some rare edge case, it's common.

Facebook (and everyone else) need barely works and often doesn't Thursdays and
Fridays to go with 2G Tuesdays!

~~~
plorkyeran
The really bizarre thing is that during the time that the iPhone was
AT&T-only, AT&T had _terrible_ cellular coverage in SF. Somehow this did not
stop developers in SF from writing apps which did not work on an unreliable
connection.

------
woliveirajr
There's the other side, as everything in life.

Took part on a project that should be used nationwide (i.e., not costumers,
but clients would have to use it). So much care was taken in consideration
about some few users that didn't have reliable connection, could go offline
for days, etc., that the project reached a dead end after some months.

Lesson learnt (for me, at least): sometimes you have to take care of 95% of
your users first, developing as fast as possible so that they benefit, and
then take care of those last 5% afterwards, even knowing that they will cost a
lot, perhaps as much as the 95% users costed. Trying to solve slightly
different problems with just one solution might escalate until becomes
unpractical.

~~~
bachmeier
Perhaps a reasonable thing if your 95%/5% split is correct. It is possible
that you are extrapolating from the group you hang out with to the population
at large. It certainly doesn't apply to my group.

------
Already__Taken
If you look at anything in the technology stack it's all about redundancy, why
would you not be leaping at the chance for your web page have a redundancy for
its very connection?

Power (backup batteries, generators) Servers (multiple power supplies,
storage, memory, NICs) Datacenters (multiple servers, internet connections,
power suppliers)

All this to serve an app site, why stop at the first connection hiccup.

~~~
firasd
The thing is that batteries are usually stateless (is there power or not?)
whereas if you're handling offline vs online mode you are going to have to
sync changes and that's a mind#!%$. You know the line about the two hard
problems in CS being cache invalidation and naming things, well now you're
dealing with cache invalidation squared.

(I did make a demo of how using React & Redux can help sync UI state from
offline to online but it's not a comprehensive solution
[https://medium.com/@firasd/interface-from-data-using-
react-t...](https://medium.com/@firasd/interface-from-data-using-react-to-
sync-updates-and-offline-activity-across-devices-f672b213701c))

------
dfc

      > Developer Experience Is More Important Than UX — Wrong
    

When would "developer experience" ever be more important than "customer
experience"?

~~~
napoleond
I assume the author is referring to the developer experience of their
customers (it looks like they sell a developer tool of sorts) rather than
their employees. i.e. developer experience _is_ customer experience in this
case, and "UX" is referring to the customer's end-users.

~~~
dfc
But "I wanted to spare developers from suffering...if we don’t allow
developers to provide the experience _users need_ , we’re not doing anyone any
favors"

------
ComteDeLaFere
And for you game devs (since we're on the subject), not providing an offline
experience shuts down 5 mil+ NYC subway riders from your game every day. Not
sure about other cities, but it's a significant use case.

------
pinaceae
"It was a considerable R&D investment, one that no company had ever tried, "

Nope. That's just more ignorance of what is out there piled on (plus peddling
your own stuff aka content marketing).

~~~
treve
Yea it's a pretty poor excuse of an article. Sure the author was wrong, but
it's really just a sales pitch wrapped in some false humility. This guy is
still not a visionary, and still living in his own bubble of arrogance,
demonstrated by that sentence.

------
inthewoods
Vaguely related: curious what people here think of OutSystems as a developer
platform. More generally, what do people think of ever using a system like
this - I would be petrified of the company going out of business and being
trapped. OutSystems looks very cool.

~~~
icebraining
The company I work for provides services (development, hosting, training, etc)
for a (mostly) open source alternative to OutSystems, called Odoo:
[https://www.odoo.com/](https://www.odoo.com/)

I'm probably biased, but I'd say it's nice for these kinds of enterprise apps.
You get a bunch of core modules for free, which you can then adjust to your
needs - saving you the time of building yet another stock management app or
whatever - and even for new modules, the framework provides most mechanisms
for regular CRUD, so you can literally define a class with just the data
fields you need and a menu, and all the UI will be generated on-the-fly to let
users create/edit/delete records. Then you can extend and override at will.

It's not without its flaws, but for building the typical backoffice app, it's
a pretty sweet spot between a regular framework that just provides the basic
tools and a closed application which you're forced to "configure" with hacks
and still only does half of what you need.

EDIT: By the way, I don't know about OutSystems, but Odoo is all made and
extended in Python (and JS for frontend, but I rarely need to use it).

~~~
zmoreira
Outsystems is more a direct replacement for a traditional IDE and application
server. It generates and deploys either .Net or Java code.

