Live data from Hacker News

Ask HN: What do you regret you didn't know when programming for iOS or Android?

news.ycombinator.com

81–90 of 166 posts

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#81

Earlier quoted context omitted.

Personally I think that Flutter is the future for cross-platform UI toolkits. As a React dev (in my spare time, I’m still a student), using RN was a pain due to the need to install native extensions for almost everything. The batteries-included approach of Flutter and just the polish around the dev workflow made it more attractive to a beginner mobile dev.

I would be hesitant to recommend seriously pursuing cross-platform. Most serious applications generally run into scaling issues as they get more complicated and demands require more than the abstractions the cross-platform tool can provide.

There are plenty of "serious" applications written with cross platform tools. Flutter, React Native even ionic/cordova - it depends entirely on what your application does.

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#82
If you built it, they wont come. Without marketing, the odds of your customers discovering the app (amongst a sea of garbage) are insanely low. I tried a Tennis app in 2009 and even back then it was competing with hundreds of other apps, now its mist likely 10’s of thousands. Heart breaking.

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#83
I started with iOS in 2009. I wish I hadn't used Core Data, and made the decision to store lots of large binary blobs in it. Changing the schema became impossible, because the migration process often crashed or ran out of disk space in production. That, coupled with lots of Core Data crashes that persist (pun intended) to this day. It may have been easier to just use SQLite directly.

My decision to use NSThread for worker threads wasn't optimal either, but there weren't many async options in 2009 (Remember ASIHTTPRequest?)

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#84
post #24

I'm a self taught programmer and started developing for Android in 2012. It took me a while before I realised that you needed third party libraries to do absolutely anything useful as the platform APIs were so poor and undocumented. There were gaps everywhere and you needed to write tons of boilerplate code to do things properly. Image loading was often a huge source of crashes due to out-of-memory errors and doing i…

Personally I think that Flutter is the future for cross-platform UI toolkits. As a React dev (in my spare time, I’m still a student), using RN was a pain due to the need to install native extensions for almost everything. The batteries-included approach of Flutter and just the polish around the dev workflow made it more attractive to a beginner mobile dev.

I bet that Chrome and Android team would have more political muscle than the Flutter team.

PWAs will keep being pushed by Chrome team, alongside Microsoft, and I wouldn't be surprised to see a Kotlin/Native variant of Jetpack Composer by Google IO 2020.

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#85
post #2

I should’ve known that it’s turtles all the way down. Considering how many years I’ve sunk into programming for other platforms, this shouldn’t have come as a surprise, but I got suckered into believing that mobile computing platforms represented a significant enough paradigm shift to allow for starting with a cleaner slate. Not true! Having gotten into iOS development over the past couple of years, I’ve come to real…

> Don’t get me wrong, iOS is great, and I love it to death. However, the baggage signals to me that a massive opportunity to start anew has been missed.

Starting anew is over rated. It’s sometimes the right answer, sure, but it’s just one possible answer. iOS benefited enormously from being immediately familiar and approachable to existing OSX devs, and would have taken another 5+ years to develop from scratch without leveraging its OSX heritage.

Meanwhile Android was in a crash emergency race to relevance for the first 5 years of its existence. If they’d taken the time to do everything right the first time, they could have ceded Microsoft enough time to get their Windows Mobile act in gear.

So legacy is a thing for a reason, taking one opportunity very often means giving up another.

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#86

I regret not knowing that Android API is awful. Then I regret looking into Nativescript, because it was pretty buggy. Then I regret not knowing about Flutter earlier. THEN I regret not knowing that Flutter is pretty buggy as well. Next step is me trying to learn other frameworks, like Cordova or React Native. I wonder what my regrets will be.

This is why one should only use SDK based tooling.

All software has bugs, and the less amount of layers to debug the better.

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#87

That Apple and Google would move the goalposts so often, and with such vigor, that it'd result in classes of programmers who do nothing BUT support the mobile platform for development. It has been a nightmare of keeping up with the majors, just to be able to enter their carefully curated arena. Nowadays when I build an App, I do Linux/Mac/Windows first, and the iOS/Android release, next. Fortunately there is a vast i…

What, you don't look forward to WWDC to find out what syntax got arbitrarily changed with no explanation?

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#88
post #59

I wish I would have not fought the tools so much. I started Android programming from the command line using make/ant and testing on a device because I didn't like Android Studio. This ended up wasting a lot of time and energy over the years as I had to integrate more 3rd party libraries (including Google's own crap). Same thing for iOS. I didn't like building GUIs in Interface Builder so I did everything in code. Ove…

Code-only purists are still prominent in the iOS community. Yeah, there’s definitely baggage one must take on when using IB but the ease of being able to instantly preview your layout in different sizes is the big seller for me.

I actually went the other way. With autolayout is just easier (for me), to do UIs in code. Especially because IB does not offer 100% of what UIKit has. I don't hate IB, it just become less relevant to me. Storyboards on the other hand… Never thought well about them.

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#89

Earlier quoted context omitted.

I would be hesitant to recommend seriously pursuing cross-platform. Most serious applications generally run into scaling issues as they get more complicated and demands require more than the abstractions the cross-platform tool can provide.

On the other hand, very few applications need to scale to the point where it matters. If the options are "ship something now and refactor later" versus "ship something in six months that's perfect but too late", most people here would benefit from cross platform solutions. Very few companies have ever failed because their tech stack didn't scale well.

This is a nit, but there's a pretty big difference between refactoring and rearchitecting.

If you plan for an eventual migration of the app from a cross-platform toolkit to native, then often you're committing to a significant rewrite of the app. This means either you dedicate a team to the rewrite or you stop adding features while it gets rewritten.

Plus it will take a while for the native version to get feature parity with the cross-platform version, and you typically can't roll out the native version until you have parity.

I'm sure there are tools and strategies for getting this right, but I've seen this basically kill startups.

Re: Ask HN: What do you regret you didn't know when programming for iOS or Android?

#90

Earlier quoted context omitted.

On the other hand, very few applications need to scale to the point where it matters. If the options are "ship something now and refactor later" versus "ship something in six months that's perfect but too late", most people here would benefit from cross platform solutions. Very few companies have ever failed because their tech stack didn't scale well.

This is a nit, but there's a pretty big difference between refactoring and rearchitecting. If you plan for an eventual migration of the app from a cross-platform toolkit to native, then often you're committing to a significant rewrite of the app. This means either you dedicate a team to the rewrite or you stop adding features while it gets rewritten. Plus it will take a while for the native version to get feature par…

You're right, I didn't use the correct terminology and I appreciate the correction.

On the other hand, using information from Facebook themselves (creators of React Native), the cross-platform solution seems to be able to scale pretty darn well [1]. Facebook, Instagram, Bloomberg, Skype, Walmart, Uber... these are some pretty big names with some pretty big audiences. If React Native can get your company from a startup to the size of any of these companies, I'd say you're doing pretty well on the technology front.

Kind of like how Twitter had to do a major rewrite from Rails, but Rails got them to the point where they needed that rewrite.

[1] https://facebook.github.io/react-native/showcase

Post reply on HN