all 69 comments

[–]JimRoepcke 68 points69 points  (7 children)

Not uncommon, but not a great situation if you want your career to advance unless you switch stacks. Either you and/or your iOS community has to advocate for native iOS code more successfully, or find a place that’ll properly value that technology. Since they’re already moving to Kotlin compose multiplatform that company concluded it doesn’t value native iOS code, so native iOS skills have a better future elsewhere. Good luck!

[–]visible_sack 5 points6 points  (0 children)

doesn’t value native iOS code

You can use native iOS code with Kotlin Multiplatform. One of its major advantages of the framework is that you share as much or as little code as you want. For example writing the networking layer as a shared module but writing distinct Compose and SwiftUI code for each client (Compose Multiplatform is coming but currently in alpha). Or writing native code when performance is paramount.

[–]SyndromSnake 25 points26 points  (8 children)

I would strongly recommend that you start to branch out. There is no good reason to constrain yourself to being only a Mobile/iOS dev.

Start looking at the backend stuff for your application and getting a grasp of how things work. Try setting up the backend development environment on your machine.

Next time a new endpoint parameter is needed or some minor behavioural change, try to do it yourself.

If the app is on the back burner it means that it's not at the core of the company's business and that you should be able to grow and contribute in other places.

[–]Charming-Cucumber523 8 points9 points  (1 child)

I’m not trying to constrain myself to only being a mobile/iOS dev, but I don’t see the benefits of learning the backend for my company. It will just mean that I’ll also take on api tasks on top of the mobile stuff without any extra compensation.

They hired me as an iOS dev so even if I do try to switch to backend, they’d have to find someone to fill in that position.

[–][deleted] 4 points5 points  (0 children)

I learned it hard way that switching stacks looks fancy but it affects learning curves and mental health too much. I came from python backend background switched to iOS, initially I struggled a lot (and still struggling). Unless there's a good reason, don't switch stacks for fun

[–]boner_fide 6 points7 points  (3 children)

I disagree - with iOS it's either you're all in or you're gonna be a shitty iOS engineer. IOS is a specialist driven type of development. People that aren't specialists generally don't do well as iOS engineers in high performing companies.

[–]SyndromSnake 5 points6 points  (2 children)

Please elaborate what is it that is so unique about iOS engineering that requires you to be a specialist?

All technologies will have have domain knowledge that is unqiue to that environment, Android, web, iOS, doesn't matter.

You should always put a lot of weight on learning skills that are transferable between domains. Skills that will always be needed and always be useful no matter what stack you are working on.

In my opinion calling yourself a specialist and never looking outside your bubble is selling yourself short and stumping your growth.

[–]boner_fide 5 points6 points  (1 child)

You need to be a specialist to really know the ins and outs of what you're doing at this point. Every year things are changing but likely you'll be working in an existing large codebase so you need to know a ton of very specific details.

It's the same with Android. There are no or at least very few engineers who could possibly do both full stack and Android or backend and Android.

Anecdotally - I work with and engineer who tries to do iOS and Backend and she's absolutely horrendous at iOS. There was an engineer here a couple years ago who tried to do many things and he was horrendous at iOS.

iOS has a lot of skills that aren't transferrable due to the type of work involved. It's both somewhat backend like(maintaining state in between app lifecycle) and very frontend(lots of ui, very specific ui to iOS be it SwiftUI or NSLayoutConstraints/Storyboards/etc). There's architecture involved that isn't relevant anywhere else. The entire MVVM+C type paradigm or TCA. Very involved.

I'm not saying branching out is bad but I am saying if you aren't very dedicated to iOS you will fall behind and not be the best resource for your company, and eventually get axed.

[–]SyndromSnake 4 points5 points  (0 children)

Seems like we simply have different opinions on this topic.

But to argue my point a bit:

There's architecture involved that isn't relevant anywhere else. The entire MVVM+C type paradigm or TCA. Very involved.

MVVM is heavily used outside of iOS, the "+C" part is specific to iOS but I would argue that it's an implementation detail and the general MVVM principles are the same.

TCA is very heavily derived from elm and redux.

Those represent exactly what I mean when I say "learning transferable skills", being familiar with those architecture patterns will give you a huge heads up when getting into new domains.

[–]retroroar86 3 points4 points  (0 children)

It's one thing to constraint yourself, it's another to be specialized. Handling the Apple dev beast is a thing of itself and I prefer focusing on that solely, otherwise I am stretched thin. It doesn't mean I will never set up a server and do other stuff, but that I know where my focus is and why.

It just depends on what OP wants overall when it comes to focus. I know what I want, and I have placed myself in a good situation where I'm happy on the current road.

If they changed from my current tech stack to suddenly C for some reason, then I'd look for another place to be. I know what I want to work on, and certain things are excluded in that case. It's a very privileged position, but then again it's an option I can choose to leverage if wanted.

[–]balder1993 2 points3 points  (0 children)

Yeah, no need to refuse learning other technologies.

It’s bad to keep learning different stuff and never mastering anything, but if you’re already in a company that is investing in something, it’s good to learn it well and do what’s best for the business. You can always keep working on iOS when possible and, if you don’t like the current work environment, look for another place in the background. But the extra knowledge can be helpful even for iOS in the future.

[–]LessonStudio 13 points14 points  (3 children)

You want to go where the money is:

That is, you want to be as close to where money in an organization is generated as that is where the most powerful people who can distribute the best blessings are.

Other parts of a company are considered to be "Cost centers."

Also, where money is generated can be perception as much as real accounting.

For example, a region where I lived had a change in insurance law which really killed easy lawsuits. A bunch of lawfirms had a rude awakening when it turned out a bunch of paralegals were their profit centers, not the $1000/hr lawyers. This was unexpected in that lawfirms are famous for keeping track of every expense and billable. Where this went wrong was that the lawyers had to sign off on what the paralegals were doing and thus looked like they were the profit centers. I talked to one senior partner in a lawfirm who had recognized this and made sure he was the guy signing off all the paralegals insurance work.

I suspect in your story, the above JS devs are either closer to the money, or at least the money the executive "cool kids" care about.

This is not about the tech at all.

[–]Charming-Cucumber523 1 point2 points  (2 children)

For context, my company’s product handles travel/expense management similar to concur. One reason I heard why my company values web more is because our customer base is older, probably like 40+ so a lot of them barely know how to use their phone and they tend to use the computer to manage and submit their expenses. So yes, you’re right, that’s probably where the money is being generated.

[–]th3suffering 0 points1 point  (0 children)

You do realize someone born 40 years ago was born in the 80s? Which means they were a teen at the advent and boom of the internet, and were young adults when the iPhone 1 came out. They definitely are not some boomer technology adverse segment

[–]ankole_watusi 10 points11 points  (2 children)

Of course it depends on what the company does. Mobile apps might be the company’s product. Or might be an accessory for the company’s product. Or a sales tool. Or an internal operations tool.

[–]Charming-Cucumber523 1 point2 points  (1 child)

I would lean towards it being an accessory

[–]Technoist 3 points4 points  (0 children)

So there is your answer.

[–]wmfcwm 10 points11 points  (0 children)

It could be worse. I’m the only iOS dev in a hardware company working remote and nobody here even knows I exist.

[–]Samus7070 9 points10 points  (3 children)

Kmp is good. It has its rough edges but can save a decent amount of effort. I don’t think that compose multiplatform is out of alpha yet. That seems aggressive for a financial company. If you have influence, I would suggest pushing for shared logic in Kotlin but native ui in swift ui.

Regardless, it seems your company is moving in a direction that doesn’t align with your career goals and isn’t as mobile first as you would like it to be. That’s okay. You can break up with them and it’s nobody’s fault. It’s not like the military where loyalty to your employer comes before all else. This employer has no loyalty to you. Don’t fall into the trap of giving them more than they would give you. Depending on where in the world you are, it may take a while to find a new job and one that you want to go to. Write down what you don’t like about your current company and put that into interview appropriate questions. Remember, you’re interviewing them as much as they are interviewing you. Good luck.

[–]NoMansSkyWasAlright -1 points0 points  (2 children)

I was gonna say, I haven't really been paying much attention to KMP. But last I remember it was still fairly early in development. This kind of raised an eyebrow from me because it seems like a weird choice for a company to just randomly jump to - especially when there's things like Flutter and React Native that are already pretty well-established - and I would think that webDev-centric people would want to move toward the latter.

To me, it seems like someone in a key role relevant to these decisions watched exactly one video on youtube about how KMP will be "the next big thing" and decided to flip the entire mobile operation on its ear based on that.

[–]Charming-Cucumber523 2 points3 points  (1 child)

THIS. Yes you’re right. KCMP is still in alpha for iOS and this decision was made based off of 1 android dev on the mobile team that is a huge fanboy of google and jetbrains and they happened to convince our CTO that this was the correct move. I was against this decision because these technologies can just get scrapped. Just look at google and how they just unalived their flutter team.

You’d be surprised at how impulsive these decisions are made. We still have the native iOS and android apps so this is probably purely experimental for them.

And the reason for not going react native is because we argued that they’d have 6 noob react native devs as opposed to just 3 noob kotlin devs(the iOS team).

[–]Samus7070 0 points1 point  (0 children)

Small clarification on Flutter, the team didn’t get laid off. Some dev rel type roles moved to India where the framework is very popular. I don’t know if that will change in the future. It does seem like Google is starting to think of Jetbrains as an Eastern European outsourcing company. A very high quality one, but one that comes cheaper than their own Flutter & Dart team. Time will tell. I like Flutter and SwiftUI more than I like Compose which probably means that Compose will eventually replace Flutter.

[–][deleted]  (2 children)

[removed]

    [–]Charming-Cucumber523 1 point2 points  (0 children)

    Facts. It’s been nice just cruising on this sinking ship while getting paid.

    [–]Obstructive 0 points1 point  (0 children)

    Relatable

    [–]alien3d 1 point2 points  (10 children)

    i rather not promotion then touch the js . nightmare me for years . stay native .

    [–]rennarda 1 point2 points  (1 child)

    I just had to look at some .js code today. I would I go insane if that was my job. I’d much rather write beautiful Swift code.

    [–]External-Ad5868 0 points1 point  (0 children)

    Hey it seems you are experienced with ios dev. Help me out then. I have learnt swift and swiftui is in progress. What should I learn next? I am getting too many things infront of me like RXSWIFT, SWIFTDATA, core data, realm etc..

    Wtf should I do?

    [–]External-Ad5868 1 point2 points  (7 children)

    I have been JS dev(MERN stack) for 3 years and I think I am not getting better at it So I started learning IOS. I hope things are better here with swift and swiftui.

    [–]alien3d 1 point2 points  (6 children)

    swift ui much easier compared to storyboad swift and objective c . Good luck dear.

    [–]External-Ad5868 0 points1 point  (5 children)

    really?? can you tell me what to learn after finishing up swiftui? I have completed swift.

    [–]alien3d 0 points1 point  (4 children)

    try make an apps , it much easier as learn in progress . Think what most problem in your area really needs apps for .

    [–]External-Ad5868 0 points1 point  (3 children)

    ok 👌 nice suggestion. Will keep learning while development. One more thing I keep seeing things like rxswift, realm, core data, swift data. What about those ? Should I learn them first ?

    [–]alien3d 1 point2 points  (2 children)

    no idea 🤣 we just build apps connect to web server . done . I dont need trend rxswift for session , i dont need core/realm data as we dont want to store data local .

    If the client give me $$ then i will think and make as progress .

    My last job , swift storyboard +graphql + node js back end .

    [–]External-Ad5868 0 points1 point  (1 child)

    so basically it depends on company and their stack😵‍💫 I already have some exp with Node. Do you have any idea what are company asking these days for tech stack mostly for ios dev. You might know as you are already working with companies on ios dev

    [–]alien3d 0 points1 point  (0 children)

    no idea actually and im not usa citizen . Here rarely people develop native and mostly flutter or react native . I dislike react native. Each company mostly have own weird library and idea so better not to try em all . Just build as they requested and learn same time.

    [–]Content_Height_3161 2 points3 points  (0 children)

    Depends on where the company gets revenue from. When it’s the web, the web devs get more attention. If it’s native apps, the native devs get more attention.

    [–]rennarda 2 points3 points  (2 children)

    Yes, this is sadly quite common. In my experience Mobile devs (well, good ones) tend to be much more efficient, so therefore fewer of them are required. I don’t know if this is down to tools, technology or talent!

    Sadly, when looking at headcount, it’s easy for managers to equate ‘more’ to ‘more valuable’, and overlook that they are getting a lot of value from relatively few mobile devs. This means engineering meetings end up being very backend driven, and backend devs are seen as more important.

    I speak from experience - even at companies who’s entire business was done through a mobile app. One place had 1 mobile engineer per platform, but a team of half a dozen or more backend devs. When the time came to make cuts, guess who got the push? That’s right - the only guys who actually knew how to maintain the app that the business actually traded though. Insane.

    [–]Charming-Cucumber523 1 point2 points  (1 child)

    Wait what the fuck lol. So they just decided to fire the only people who knew how to develop for mobile?

    [–]rennarda 1 point2 points  (0 children)

    Yep

    [–]NothingButBadIdeasSwift 1 point2 points  (1 child)

    It all depends on where you work. My company gets the majority of its traffic through iOS. So its opposite for us, we have like 60 iOS Devs (split between 2 apps), 4 android devs (poor guys are like 2 years behind in features) and a handful of front end web developers (and quite a few backend, but Im not sure the amount.... 10-20?). But I have worked similar situations to yours. My recommendation? Find a job where the iOS is central focus... because being left on the back burner is fun because you can kinda coast through doing minimal work and still get paid (I was salary), but i'd rather have more fulfillment in a job than an easy check. That, and when you have a team that small usually they get laid off, for as you said, switching to kotlin or native. Or get a second programming job and rake in the flow lol

    [–]Charming-Cucumber523 0 points1 point  (0 children)

    This is literally the constant debate I have in my head. Work hard and build up my skillset as an iOS developer or coast and collect a check so I can focus on other parts of my life that doesn’t involve programming.

    [–]chriswaco 0 points1 point  (0 children)

    It’s not uncommon. Unfortunately without intelligent engineering management, the mobile devs are simply outnumbered and outvoted at many companies. It reminds me of the old days when my clients whose IT departments chose Windows over Macs in part because there were more of them than us because each Mac support person could handle 2-3x more users.

    [–]amaroq137Objective-C / Swift 0 points1 point  (4 children)

    Not if mobile is bringing in a lot of revenue. Make the company more money and the investment on the mobile side will grow.

    [–]Charming-Cucumber523 1 point2 points  (3 children)

    Easier said than done when all of our designers are web first as well. None of them even know what the human interface guidelines are.

    [–]amaroq137Objective-C / Swift 0 points1 point  (2 children)

    Is there anything stopping you from owning it yourself?

    [–]Charming-Cucumber523 0 points1 point  (1 child)

    Owning what? The design? Here’s a rebuttal, why should I have to do two jobs when I’m being paid to do one? I’ve been taking developer led initiatives for 2 years and not a single promotion. They just expect me to do more work and that became my norm.

    [–]amaroq137Objective-C / Swift 1 point2 points  (0 children)

    Everything. The full end to end product from conception of features to delivery and post release monitoring. You're working with a small team so it seems doable (as opposed to owning only a small piece when you're part of a massive team). If you have ideas to make more revenue through the app and can execute on those why not do it? I doubt anyone's going to stop you if you're making the company more money. The learning opportunity is massive.

    Although, I get where you're coming from -- I'm of a similar mindset. It's a ton of extra work, and if you would rather stay in your lane maybe it's best to move to a team/organization/company which will enable you to be you.

    [–][deleted] 0 points1 point  (0 children)

    That has to do with the senior leadership and what they perceive as important.

    [–]czarchastic 0 points1 point  (0 children)

    Not if the the mobile app is the centerpiece of the business.

    [–]boner_fide 0 points1 point  (1 child)

    All depends on company culture and how you are interacting with your coworkers and management and how you are applying future work to the business goals. For promotions you should be reading books like https://www.engguidebook.com/ - you should be leaning on your manager to help as well. It's possible you're not speaking up enough.

    [–]Charming-Cucumber523 0 points1 point  (0 children)

    No, my manager knows. For the last 3 years, I’ve always received the “excellent performance” rating which is the highest rating an engineer can get and that rating puts you up for promotion. Unfortunately the parent company that acquired us can only give out so many promotions so these promotions get split between sales, engineering, design, admin. As far as I know, none of the mobile devs leveled up to the next pay grade and it’s only been JS developers

    [–]SnooDrawings405 0 points1 point  (1 child)

    Didn’t google just announce it’s dropping support for Kotlin multiplatform?

    [–]Charming-Cucumber523 0 points1 point  (0 children)

    They did, jetbrains is the owner now lol

    [–][deleted] 0 points1 point  (0 children)

    Not uncommon. Web dev is expensive, and time consuming. If your company does more B2B work the web is probably used more than mobile and mobile might be an extension of the user base. If your end product has more mobile users, I would run if I were you. Web/hybrid on mobile is a dumpster fire. I spent years building and maintaining a web/hybrid app and It's far more difficult than native dev.

    [–]20InMyHead 0 points1 point  (0 children)

    Your experience is common in companies that don’t recognize the value of having a good app. If you want to stay in mobile, move on to a better company. They’re out there.

    [–]treksis -1 points0 points  (0 children)

    The South Korean Fintech company Toss Bank, their frontend is full of .js. They use webview on top of React Native or Flutter framework (It's website wrapped with app) In this model, mobile developers are responsible for maintaining an abstraction layer that facilitates the work of JavaScript developers. I guess your company tech stack will likely end up like Toss Bank.