com.abtinbidgoli ~ UX/UI Developer
com.abtinbidgoli ~ UX/UI Developer

Technologies I’ve Decided To Focus On

  • Abtin Bidgoli
  • 2 November 2023
  • 7 minute read

I’ve decided to specialize in a few technologies which I believe are the best tool for their respective jobs. Or will be in the future hopefully.

These are a higher level of abstraction, for apps that fit within their constraints. 80% of development is accidental complexity: details that you shouldn’t have to worry about. One sign of accidental complexity is businesspeople asking why it’s taking so long.

Frontend: Vue.js

For the frontend, I prefer Vue, since it has less complexity than React & especially Angular. Vue was designed by an engineer who worked on Angular & took just the good bits from Angular to create Vue. Vue is therefore more productive to work in, for small teams like ours, & to build MVPs quickly. On the other hand, Angular & React were designed for Google’s & Facebook’s scale, respectively. We don’t have 20 frontend engineers on our team. We’re not Google, so we shouldn’t cargo-cult them.

Vue is also incrementally adoptable ~ you can use whatever parts of it you need to. It’s not all-or-nothing. We can also use HTML, CSS & Javascript rather than having to relearn a non-standard way, like JSX. The resulting code will be understandable to engineers who don’t know Vue, & in the process we’ll build up skills that will be more broadly useful.

The downside to Vue is fewer engineers available who know it, but that’s offset by its ease of learning. Ramp-up is a factor that should be given less weightage, since it’s only a one-time cost. If we’re very productive after paying the one-time cost, it’s worth it.

Potentially Angular or React

Of Vue, React & Angular, Angular is the easiest to dismiss. It’s on the decline compared to React:

com.abtinbidgoli ~ UX/UI Developer

Technologies move in cycles: A new technology is built, takes off, becomes the default option, & then slowly declines. Betting on a technology like Angular that’s at best stagnant makes no sense unless there are countervailing factors.

Angular is also even more complex than React (which itself is more complex than Vue).

Finally, only 58% of Angular developers would use it again, while 74% of Vue & React developers would. For these reasons, Angular is an alternative to Vue or React.

Mobile: Flutter (or PWA)

The first decision to make is whether to build a progressive web app. We should in the following cases:

  • Desktop is a first-class platform. It’s not a mobile-only service.

  • It’s important to cater to users on mobile who don’t want to install an app, at least not yet. Every company has an app, but that doesn’t mean users are willing to install it, particularly for infrequently used apps or transactional services (like car repair). If that’s a critical factor for the app we’re building, we need a PWA.

  • We already have a desktop app whose code we want to reuse to build the mobile app.

  • We’re okay with a slightly worse user experience than hybrid apps, & instead want some other benefits, like time to market, lesser overhead of planning & running one project instead of two, cross-platform consistency, & cost.
  • Hybrid vs Native

    Assuming we’re not going with a PWA, we then need to decide whether to go with native apps written in Swift & Kotlin.

    Hybrid app frameworks like Flutter or React Native take you from 0 to 90. Pure native apps built in Swift or Java/Kotlin take you from 90 to 100. If you’re not already at 90, it’s premature optimisation to choose pure native apps. For most startups, reaching product-market fit, understanding users, building something users want, breaking even, etc are the more immediate problems.

    & going from 90 to 100 costs a lot more. This is no different from any other market where, as performance increases, cost increases even faster. If you want to buy a car that can reach 300km/hr, it doesn’t cost twice as much as one that can reach 150km/hr. It costs ten times as much.

    There are a few exceptions where pure native is called for:

    1. You work closely with the hardware, or you require the maximum performance.

    2. You don’t mind spending hundreds of thousands of dollars a year staffing up an iOS team, & hundreds of thousands of dollars staffing up an Android team, instead of just one.

    3. You have 100 million users.

    4. Getting the last bit of responsiveness & UX fidelity is more important than the speed of iteration.
    com.abtinbidgoli ~ UX/UI Developer

    Flutter vs React Native

    75% of Flutter developers would use it again, while only 62% of React Native developers.

    I read that with React Native, half the time you’re amazed at how productive it is, while the remaining half the time, you’re fighting with the framework. Facebook doesn’t care about bugs that don’t affect them, & have even locked a bug on the bug tracker where too many people were requesting a fix. That’s not a responsible attitude from the maintainer of important infrastructure that you depend on.

    Flutter has better documentation. It also has more built-in widgets. Flutter’s performance is likely to be better, since it uses a statically typed language (Dart) & compiles ahead of time to binary. React Native also has to go through a bridge between native & Javascript, which adds latency.

    React Native has some advantages as well:

  • If you also use React, you can share knowledge &/or code. But I don’t use React, so this reason in favor of React Native doesn’t apply.

  • It has a bigger community.

  • You use Javascript rather than having to learn a custom language like Dart.

  • React Native has more APIs that work with the hardware, & over time, more building blocks like SQLite that are available to native apps are being plumbed through to React Native.

  • In my opinion, the cons of React Native don’t outweigh its pros, so I’ll go with Flutter.

    com.abtinbidgoli ~ UX/UI Developer

    Backend: Firebase

    Since I'm frugal so that I can spend time delivering business value rather than reinventing the wheel. If we need backend logic, it can be in the form of Cloud Functions, which is FaaS ~ serverless.

    This architecture is appropriate when you have lots of small & independent pieces of business logic that don’t interact with each other. For example, there's a cloud function to send the user an email when they uninstalls an app. This function doesn’t interact with the rest of the backend logic. FaaS works well for this kind of broad & shallow backend architecture, where you may have dozens or hundreds of independent functions. By contrast, if you have a narrow & deep architecture, with complex pipelines, machine learning, etc, FaaS would not be the right fit, in which case we’d use Rails.

    Data Driven Approach

    The above are general recommendations. For a particular client, the right choice may be different, depending on their situation & constraints. We always recommend what’s best for the client, not what we want to develop expertise in. & we’re always transparent. We can either build an iOS app in Swift, which will take a month, or use Flutter, which will take two months, since we need to ramp up on Flutter. The advantage with Flutter is that you’ll get an Android app. But if we build in Swift, we won’t be able to reuse its code to build an Android app later.By not investing now in cross-platform, we might end up investing more later.

    Clients can always override our choices, because they are the ones paying with the leverage, at the end of the day. I clearly explain the tradeoffs, such as this may take twice the time. Once the client understands & accepts the tradeoffs, & takes responsibility for the outcome, any choice is fine with us.

    We, human beings, are a species that’s not only capable of acting on hidden motives ~ we’re designed to do it. Our brains are built to act in our self-interest while at the same time trying hard not to appear selfish in front of other people. & in order to throw them off the trail, our brains often keep 'us,' our conscious minds, in the dark. The less we know of our own ugly motives, the easier it is to hide them from others.” ~ Curated Excerpt From: Robin Hanson. “The Elephant in the Brain: Hidden Motives in Everyday Life.” Apple Books.

    Curated via Kartick Vaddadi. Thanks for reading, cheers! (with a glass of wine & book of course)

    com.abtinbidgoli ~ UX/UI Developer

    2018 Marius César Châteauneuf-du-Pape Spiritus Pontificum

    Producer: Marius César ~ Spiritus Pontificum, Châteauneuf-du-Pape, Rhône, France

    "Marius César is a national brand producing wines throughout France. This full-bodied, fleshy red highlights flavors of raspberry sorbet and red-cherry preserves backed by a finely edged grip of tannins. The youthful, fresh-fruited sip finishes on subtle crushed earth and mesquite. At peak now through 2028, the wine will holder further still." ~ 92 Points ~ Wine Enthusiast AL
    com.abtinbidgoli ~ UX/UI Developer

    The Elephant in the Brain: Hidden Motives in Everyday Life

    By: Kevin Simler & Robin Hanson

    Human beings are primates, and primates are political animals. Our brains, therefore, are designed not just to hunt and gather, but also to help us get ahead socially, often via deception and self-deception. But while we may be self-interested schemers, we benefit by pretending otherwise. The less we know about our own ugly motives, the better - and thus we don't like to talk or even think about the extent of our selfishness. This is "the elephant in the brain." Such an introspective taboo makes it hard for us to think clearly about our nature and the explanations for our behavior. The aim of this book, then, is to confront our hidden motives directly - to track down the darker, unexamined corners of our psyches and blast them with floodlights. Then, once everything is clearly visible, we can work to better understand ourselves: Why do we laugh? Why are artists sexy? Why do we brag about travel? Why do we prefer to speak rather than listen?
    Our unconscious motives drive more than just our private behavior; they also infect our venerated social institutions such as Art, School, Charity, Medicine, Politics, and Religion. In fact, these institutions are in many ways designed to accommodate our hidden motives, to serve covert agendas alongside their "official" ones. The existence of big hidden motives can upend the usual political debates, leading one to question the legitimacy of these social institutions, and of standard policies designed to favor or discourage them. You won't see yourself - or the world - the same after confronting the elephant in the brain.
    Recent Muse Or Ponder