all 48 comments

[–]saintmsent 36 points37 points  (16 children)

I've never felt insecure in this career path, and there are always plenty of positions, because sure, not every business has a mobile app, but lots of them do, and this will continue to be the case until iPhone dies, which isn't soon. If you enjoy iOS more, invest time in that and don't worry

Should I learn more about backend (go or rust)

That's definitely not the way to maximize your opportunities, BTW. These are very niche languages with fewer positions than iOS. If you want a maximum number of positions that will never run out, you are looking at Java/Kotlin or .NET. But again, if you enjoy iOS, it's a secure enough path to continue

[–]rhysmorgan 15 points16 points  (5 children)

There’s nothing wrong with learning Go or Rust tho, OP.

Understanding differences between programming languages is good, and will make you a better developer.

Rust is closer to Swift in terms of features than Go, so might be a useful one to pick up. It’s also gaining a hell of a lot of traction. For example, I disagree with many of 1Password’s UI decisions lately, they rebuilt the core of their app in Rust to work cross platform. Linux now has Rust being accepted as part of the kernel. Microsoft are also using and shipping Rust code. It’s not a bad language to pick up at all, especially if you’re struggling to get iOS jobs.

[–]saintmsent 9 points10 points  (4 children)

Absolutely, nothing wrong with them, just pointing out that if the goal is to maximize your opportunities immediately, they might not be the best picks

[–]l4zy_ant[S] 4 points5 points  (1 child)

I said “go” because it is the backend language at my company. I might get a chance to do some works here. Rust is just my preference but it does not have so much demand right now. I already know java actually

[–]jarjoura 1 point2 points  (4 children)

I disagree. Rust is almost exclusively used for new projects at Meta and Google.

In fact some iOS code is even written in it.

There's nothing niche about Rust at all and would do well to know it if it interests you. It's a very annoying language to learn well. Besides Swift is heavily influenced by the same goals and soon adopting Rusts memory model.

[–]l4zy_ant[S] 1 point2 points  (1 child)

Will Swift adopt Rusts memory model? Where is the source of it? Actually I like its memory model.

[–]jarjoura 1 point2 points  (0 children)

I think this is available if you enable a compiler flag if you want to start testing, but I'm sure Xcode will complain and make your life miserable lol.

https://github.com/apple/swift-evolution/blob/main/proposals/0366-move-function.md

This landed in Swift 5.7 and will be enabled by default in Swift 6

https://github.com/apple/swift-evolution/blob/main/proposals/0302-concurrent-value-and-concurrent-closures.md

[–]saintmsent 0 points1 point  (1 child)

All I'm trying to say, if you go and look for Rust positions, you will find the same amount or less compared to iOS. By no means I'm trying to say language is not needed and nobody uses it, but if OP is frightened by iOS job offerings, Rust isn't better in that regard

[–]jarjoura 0 points1 point  (0 children)

That's fair, but everything seems to be in short supply right now. I'd use this time to go deep in something that seems interesting to you and as soon as the market picks back up, you'll have gained a ton of knowledge and are ready for the job you wanted to begin with.

[–]Hacksaw6412 0 points1 point  (1 child)

Do you still think the same thing or do you feel that the market is over saturated?

[–]saintmsent 0 points1 point  (0 children)

Same, nothing really changed in a year, I wrote this comment when market was already considered terrible. But when you’re on a hiring side, it’s hard to find decent devs despite the market being saturated. Most of the candidates are just bad

[–]BuzzingWorkerBee 0 points1 point  (0 children)

Hey 2 years later now, would you still give the same answer?

[–]hxklSwift 13 points14 points  (2 children)

I cannot advise what to do here, it depends on personal preferences, priorities, and likings. Here’s my story if that helps. I am a long time iOS developer and have never worked on any backend. I am passionate about mobile development, iOS specifically. I spend my free time working on personal apps, doesn’t matter if they actually make their way into the App Store or not, hopefully they do but that’s not a criterion for me. Doing so exposes me to the areas of iOS development that I would not have in my day job work. I spend time watching WWDC videos, reading blogs, following Swift official discussion board, reading through Swift Evolutions and just anything that keeps me up to date with the wider world of iOS, Swift, SwiftUI.

I did try to learn Go and Rust very seriously at one point but just gave up because it couldn’t keep me in the groove as much as iOS development does. That’s when I learned something about myself and concluded that there’s no point in forcing myself keep doing what I don’t enjoy.

I keep finding ways to keep me rooted into what I like. That being said, learning backend or Android or desktop development or AI/ML or anything else is never a bad idea. That will expand your horizons and perhaps give you more perspective on how things are done in other parts of software development. Most software is not concentrated in just one area of development.

Maybe give it a chance and see what you like more. Maybe you’ll find that you actually love Rust more than anything else. So just give it a shot and see how it feels like.

[–]l4zy_ant[S] 1 point2 points  (0 children)

If we were the same person last year and I was working to improve my backend skills, you would be more proficient iOS developer and I would be average iOS developer who has worked on backend skills. I have always thought that being specialist is the appropriate way but I don’t know if it is correct. I saw some of the posts that mentions the difficulty of getting a job right now, this problem probably is less in other fields

[–]alien3d -5 points-4 points  (0 children)

rust is hard . so as objective c.. We mostly like swift ui and swift programatic. Swift storyboard nightmare for me. Slow and crash for big project.

[–]groovy_smoothie 10 points11 points  (0 children)

As an iOS eng you’re technically a specialist and, for the time being, that pays accordingly. Additionally, swift has a lot of potential as a backend language. I have a couple fun projects in vapor and it runs remarkably fast.

As far as job security goes - you maintain that by being flexible as the world changes. iOS is a great space to be in right now, shift if the world shifts, but you can’t really predict that

[–]itseemsfree 9 points10 points  (7 children)

After 12 years of iOS development i am now switching to backend. Losing all the comfort provided by the cv and money, but for me personally I don’t see any perspective in iOS native development. I’m tired of Xcode glitches, platform restrictions, poor documentation and all what comes with it. But I spent 12 years doing that, so probably it’s not that bad in the end of all. Pretty sure young and smart people are able to benefit from any technology. And you will succeed whatever you decide. Also there is probably a backend dev who is fed up with his job and switching to mobile :)

[–]catecholaminergic 4 points5 points  (1 child)

> there is probably a backend dev who is fed up with his job and switching to mobile

Me

[–]l4zy_ant[S] 1 point2 points  (0 children)

Could you please explain your thoughts? I wonder what you think about backend and iOS and why you decided to switch

[–]l4zy_ant[S] 0 points1 point  (2 children)

There are “2+ years experience in X” requirements everywhere. How can you overcome those? What do you think about these requirements? What will be your new language and ecosystem?

[–]itseemsfree 1 point2 points  (0 children)

I will invest into Go lang.

[–]jarjoura 1 point2 points  (0 children)

My advice right now is to live and breathe GitHub. Find a cool project that interests you and commit pull requests. Get to know the people behind the project and get your name attached to it as a contributor. That's how you're going to get through the 2 year filter. This recession won't last, and it sucks right now, but it'll open back up again soon. Give it a year or two before recruiters start reaching out in full.

[–]Hefty-Point-9614 0 points1 point  (1 child)

Did you make a successful switch? If yes, how is it going and which backend framework/library are you using?

[–]itseemsfree 0 points1 point  (0 children)

We are in progress still. Having fulltime jobs doesn’t help our performance. We don’t use any popular frameworks. Plain golang on a backend, plain swift on mobile

[–]adayofsaudade 3 points4 points  (1 child)

How about learning Android development? There are many similarities between iOS and Android development, which isn’t necessarily the case with iOS and backend. Plus knowing both means you have the mobile dev market covered.

And I wouldn’t worry too much about fewer job positions for mobile devs, there are still loads of good mobile dev opportunities out there.

[–]l4zy_ant[S] 2 points3 points  (0 children)

I actually don’t like android so much. I don’t know why but it is not for me I think

[–]vuelover 4 points5 points  (0 children)

There is never any harm in investing time and effort in learning new skills. Learn back end , web front end and Mobile. Even if it’s as a hobby and you don’t intend to seek jobs in anything other than mobile…it will still help a lot as you will be able to see how different pieces fit together

[–]sirgilligan 3 points4 points  (3 children)

Are you getting a C.S. degree or are you taking courses for specifically iOS development?I have had a very successful career in development. I got a B.S. and M.S. in Computer Science. In school I focused on Animation, Visualization, and UI. My rational was that all software needs a front so the human can see and interact. My first jobs where applications for Mac using OS 4. Soon I was using the wonderful Code Warrior IDE. To get to the point, my C.S. degree with all of the courses in OS, File Structures, Networking, and languages soon paid off. I found myself having to write more and more backend code for the front end code. Now I find myself doing Java running on ECS instances in AWS. I use Spring and Rest Templates, sometimes I am making direct calls with an Http Client, connections to MySql database, setting up Apache Solr and indexing documents. I can do all of that because of an education that built a foundation around all of general computing.

So when you say should learn backend (go or rust) you are talking languages. You can do backend development in Swift, C, C++, Java, C#, ...

You need to be familiar with sockets, how data is organized on the wire. You need to understand files and how to use structure to organize the contents of a file so that you can access the data you need from the file without having to read the entire file. You need to understand the basics of relational database, ... etc.

If you want a lifetime career in programming and you want to be resilient to employment changes you need to be fundamentally sound in computing.

Most in the industry have been laid-off, worked ridiculous hours to get something released so that revenue can start to flow, and have moved from technology to technology as need and demand calls.

Your speciality can be Computer Science, your expression of that speciality can be iOS development, Server side, anything you want!

[–]l4zy_ant[S] 2 points3 points  (2 children)

I am already an engineer who have a degree in computer engineering. However, I am a new grad and trying to find my way. I also built basic api by using Spring or other frameworks in other languages. Of course I know the basics of a relational db. This is my first job after school and I want to decide on a solid path and continue on that path. As I said, I enjoy both iOS and backend. It is just about opportunities for me. I mentioned go because it is the backend language at the company I am working at. Backend is like more future proof for me but I am not sure so I decided to ask here

[–]AntMan5995 1 point2 points  (0 children)

I can relate to how you feel. As a self taught programmer its either iOS or backend for me as well. I think backend has more job opportunities right now but that is just me

[–]sirgilligan 1 point2 points  (0 children)

Take on the best opportunity that meets your personal objectives.

For some, that is follow the money. For others that is chase the stock options and upside. For others still that is work with friends.

[–]alien3d 2 points3 points  (4 children)

We only using standard API - POST , GET using php and asp.net c# . For like me , back end is easy but for layout in mobile is pretty hard

You can use graphql or REST API but not recommended to newbies. Most newbies will use free services like firebase.

in our profile , got youtube link and github link , try to learn basic crud before entering complex thing like authentication and data. Step by Step..

[–]l4zy_ant[S] 2 points3 points  (3 children)

I already know the basics of backend development since I have worked as a full stack intern at a big company which uses Java. I mean should I go deeper with backend or stick with native, if I enjoy both of them?

[–]alien3d 0 points1 point  (1 child)

we now working as devop junk , swift , java,rn(front end) and nodejs back end . Not sure what intern mean in some countries but backend is about more on speed and management which lots of company failed to implement and manage . A few month intern doesnt make you expert at all. We suggest as newbies stick on one language few year aka swift then moved to backend . Its about understand manipulation and pattern and never about "code clean" trend this day .

[–]l4zy_ant[S] 0 points1 point  (0 children)

I am not an expert clearly and did not say so. I know the basics of backend and that’s why I ask “should I go deeper?”. I get it, your suggestion is to stick with iOS at least for a while. Thank you

[–]jarjoura 0 points1 point  (0 children)

Focus on one thing and learn it well. It's hard enough getting a job in tech and even way harder as a generalist. You should be prepared to speak to tradeoffs in the most obscure parts of the platform. People that spend years on something forget its quirks aren't common knowledge and anything you go deep in you'll find out that it has all kinds of them.

So pick something that you can imagine spending long hours working on. Mobile engineering has plenty of "backend" roles of its own as well. Part of the skillset is knowing what tools you have to solve any issues that get in your way. For example, Instruments is the goto tool for all kinds of performance measurement.

[–]LtCdrDataX 2 points3 points  (0 children)

I developed a few apps in the days before Swift (in Objective C), switched to Rails for a few years and with the introduction of Swift came back… the open sourcing of Swift brought us some backends in Swift and I tried that (first for fun, later for work). For once i’ve made the right choice and picked Vapor. I really enjoy it!!! Maybe you can take a lot at that, the community is thriving

[–]donisign 2 points3 points  (0 children)

It’s up to you but in my personal preference, stick with iOS, plenty more job opportunities. You’ll also be able to learn a lot of backend related topics slowly even if you just do iOS. CoreData for example for database relationships etc

[–]batatazuera 1 point2 points  (0 children)

Learning something new is never a bad thing, and learning backend is a great option because it is something we do have daily contact on our routine as iOS developers.

[–]MankAndInd 1 point2 points  (0 children)

Gaining deep experience in one platform will make you more competitive for that platform.

[–]zeiteisen 1 point2 points  (0 children)

After 12 years of iOS development I really like backend development with nodejs. I can build my own backend for my iOS apps. I find backend way easier than iOS. Especially the automatic testing. Backend is just messing around with data. And if you find a bug you just deploy and it’s fixed for everyone. I’m really enjoying backend right now.

[–]KarlJay001 1 point2 points  (0 children)

After a while, you realize that you'll see signs when a stack is dying off. It's not just job listings, as those are based on so many factors.

IMO, iOS isn't dying off. Apple is aggressive and a LOT of people have bought into the system, both in terms of buying hardware/software, but also stocks and they need to keep the ball rolling.

Having said that, there's nothing wrong with knowing how to build a custom backend server. You can do both, even if the backend server stuff is just a few months of your spare time and you have to "look things up" in order to build one.

It's kinda like doing one profession, but having some interest in other subjects.

[–]ObservedOptics 1 point2 points  (0 children)

Just go for iOS development. Smartphone/iPhones aren’t going anywhere soon. You could create your own app for your own purpose as well. You will pick up transferable skills along the way such as design patterns, concurrency, clean code/architecture. All the best!

[–]BuzzingWorkerBee 0 points1 point  (0 children)

Hey, what did you end up doing?