|
|
|
|
|
by briznad
1777 days ago
|
|
My company is currently porting a critical app to React, yet I feel similar to you on most of your points. The app in question is currently using Angular 9, so a fairly similar beast. But React, by comparison, is worse in most ways IMO. The ugly syntax forced by JSX, the combination of template and logic together in 1 file, the odd forcing of certain unintuitive abstraction patterns while also claiming to be "not opinionated" about other crucial aspects of how an app works, and I certainly agree it is not special. However, your argument starts to erode for me when you claim you'd rather spend a few months to build your own moat. You're not just choosing to incur that cost once when you build it. You're incurring a multi-month charge of developer cost that doesn't result in anything being produced for every dev you add to the team, as they have to learn the ins and outs of your proprietary abstraction without the aid of any documentation (assuming) or community to help when they get stuck. This also means a large part of your time is now spent reactively answering pings for special case questions and "what does this opaque error mean" and "how come this thing doesn't work when I do that thing"? And good luck hiring devs who are excited to work on your special creation, not to mention how you have to adapt your hiring process to determine who will be likely to succeed in such an environment. That sounds like a lot of stress to place on a fledgling company trying to grow at a crucial stage and could certainly be a contributing factor in your post-mortem when things don't work out. By contrast, by advertising for React vs Angular devs we can expand our candidate pool 5-10x and anticipate reduced ramp up time and increased velocity out of the gate. And since hiring and growing my team is one of the most expensive and difficult things I'm grappling with, that's what I'm optimizing for. In the battle between pragmatism and idealism, pragmatism wins the day once again. |
|
One thing that does cause trouble is having to call a client and say, sorry but some part of our stack is EOL and we need to rewrite it by next year. I don't want to write it and they don't want to hear it. An example of a hole I got myself into was using Bootstrap v4 alpha when I moved most of my UI out of Air and into JS. At this point I have to just accept that some apps will never get an upgrade to a later version of Bootstrap. But it's not critical... it's just a bunch of CSS and there's no reason you can't use v4a forever if it works for your purposes.
I used to build business apps in AS3/Air. 10 years on, some are still in the wild and I have to explain that, look, I didn't predict the death of this language but eventually your app is going to need a rewrite, because I can't even compile it without pulling out an old laptop. And this is where maintaining an in-house framework comes in useful, because I've slowly ported most of my Air components and their functionality into JS. So the rewrite will take less than half the time as the original.
Anyway, I do understand your viewpoint when it comes to hiring and growing a project quickly through a critical phase. Particularly if you're coding for one company and you can afford to switch platforms next year if you succeed. I think it calls for a different approach than what might be good for a solo coder working on in-house employee apps that have to just be stable over long timeframes.
Thanks for the comments.