Jumping around in my list of SW related foundational beliefs I picked up today: Embrace the Platform
As I said yesterday in my WDIBI II: Choose Speed // Timo Koola post, I firmly believe in speed over developer experience. One other area where I think developer should prioritise user experience over developer experience is when selecting tools to address users in different platforms. I firmly believe that developer that actually thinks users first (as everyone claims to do) never picks a cross-platform framework to develop their application.
I consider there to be three major platforms:
I think if you are going support users on one or more of these platforms one should do a native solution for each. For web, if possible, stick to easy and simple yet immensely powerful tools that plain old HTML and CSS give you. I could go on and on about web but expletive deleted Website explains it very thoroughly. Sometimes one needs to do something more complicated and resorting to something like React is perfectly fine. I just think one needs to be very careful about performance and accessibility.
As for Android and iOS, if you are serious about your users go with native solutions for respective platform - build with native idioms and frameworks and you’ll save a lot of cross-platform headaches that are not going to give anything to your users anyway.
Specifically I don’t recommend (if asked) using React Native, building up a PWA (I might write about their specific problems some day), or Flutter. Stick to platform tools, your user likes their iPhone way more than they do care about your brand (unless you happen to be WeChat) Apple’s China Problem – Stratechery by Ben Thompson
How about legacy platforms like Mac or Windows? I’d say it depends - are you really going to address the people on this platform? Go native. Do you just want to cover as much area as possible? Consider using web to address these platforms.
Just one quick parting note - this of course applies only to software directly accessing consumer needs. Calculation for Enterprise software might be different and for some enterprise internal tooling very, very different. I’d still say even within “enterprise” go native, if your use case depends on user experience. In other areas: do the best thing for the team.
This is part I of my series of What do you Believe in as a SW Developer? // Timo Koola