Hacker News new | past | comments | ask | show | jobs | submit login
I Was Wrong About Offline (medium.com/outsystems-engineering)
78 points by tiago_simoes on Oct 21, 2016 | hide | past | favorite | 37 comments



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...

[2] https://uxdesign.cc/show-your-work-dont-forget-loading-indic...

[3] https://code.facebook.com/posts/1556407321275493/building-fo...


This reminds me of a conversation I had with a Google SWE friend last year about the new gmail interface. I complained that the default settings looked terrible, and that there was barely any space for actual content. He said he disagreed and that everyone he worked with thought it looked great. He eventually realized I was using a 13" macbook air, and said "oh, we all use 27" monitors and macbook retinas". Yeah, not so helpful for me :(


GMail is obnoxiously slow on most of the computers in my house; none of which are more than five years old. Several laptops, a few media players, et al. It's even slow on my new tablet when I use the desktop interface (because the mobile interface lacks necessary features). Chrome and Firefox both soar to max a core and cause the fans to scream for a good half minute while loading the page, then navigation and manipulation is excruciatingly unresponsive.

It's the same for most of Google's web services. They built them for themselves, and neglected to assure that they would work on the majority of the install base of PCs. It reflects poorly on Google's software development process and the quality of its management.


The same thing can be said about Chrome. I was previously on 3gb ram. It ran so fucking slow. Firefox was much better. Now I added on 8gb and chrome runs very fast is more responsive than Firefox. The first thing that came to my mind was that developers have optimized for their own environment rather than what most users have.


For some African developers like me, it's like 2G on some days and 0.1G on other days.

I built a product that embraces offline completely. It permits companies and individuals share files in their LAN over Wi-Fi. File sharing shouldn't be limited to the 'cloud'.


nice! just out of curiosity, what city are you in?


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.


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."


I gave in to the SSD craze because OSX became unusably laggy without one.


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.


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.


I've found using the most un-optimized code i can on a lower spec device for the entirity of development really helps with writing faster code.

When I run it through a minifier, optimize a few things, remove the debugging code, and run it on a "recommended" spec device, things run so much faster, and it's nice. It gives a nice feeling of accomplishment in addition to the other benefits.

It also lets us say no to UI features that would run too slowly early on instead of wasting time on trying to get them running on the lower spec hardware.


This. Get an iPhone 5c with slow cellular data plan and make your app fast there. People will love it!


Same reason I give my devs a really slow database server to develop on :)


Developers have never had empathy for end users, in part because they always have had better hardware than the end users did. (Because developers love computers and splurge on the good stuff, where most users don't care and just buy the cheapest they can get away with.)

It's a problem that's been around forever. I dunno how we solve it, but I applaud Facebook for at least trying.


I think the internet really exacerbates the problem though. It's one thing if PowerPoint animations don't work well on an old computer, but with network requests it's like people don't even realize that something that happens quickly on localhost will hit a lot more latency in the real world.

I like this explanation (somewhat down the page) of why Twitter changed in 2012 from a single-page app to more server-side rendering. http://tomdale.net/2015/02/youre-missing-the-point-of-server...


It can also be a problem in business apps where developers don't consider the restrictions on a network.

I have regularly seen apps link to third party social network libraries synchronously. The problem is that corporations will routinely block things like Twitter. You have to wait for the connection to timeout because the domain is blocked.

Also http connections are often closed prematurely by proxies and firewalls and can take seconds to restablish. Apps will often lack sufficiently robust keep-alive so the user will suddenly have an unreposive site.


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!


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.


I think we all gravitate to the places with decent cell coverage and/or WiFi, whether in our own houses or out and about.


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.


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.


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.


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...)


  > Developer Experience Is More Important Than UX — Wrong
When would "developer experience" ever be more important than "customer experience"?


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.


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"


Reading that made me not want to read the rest of the article. I'm glad that they realized it was wrong and admitted that, but still, how much stock can we really put in their judgement if that's a realization they had to make?


Seriously. And it goes for pretty much all of these. Has this guy never taken a subway? Flown on an airplane? Left the city?


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.


"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).


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.


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.


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/

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).


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


Not sure why you are comparing Odoo to Outsystems; I worked with both and I am not really seeing where you get this comparison from?


I have been a Outsystems developer for the last 10 years. I feel quite comfortable about my future prospects, but I live in Portugal where Outsystems has 100% penetration in large companies. I think there is no chance of the company going out of business since so many big customers depend on it.

The platform is expanding fast and lately it's getting harder to find developers for my teams. Many of the most experienced developers are working on project abroad where rates are much higher (Benelux, the Gulf, United States).

As a developer platform it really makes you more productive. I was working with .NET before and I think I became 10 times more productive (of course this could mean that I sucked as a .NET developer).

However licensing is expensive, so it's not for every customer and also not for every project. For enterprise business apps that need to change often I know nothing better.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: