
How to Transition from iOS Engineer to Distributed Systems Engineer? - zffr
I have been working for about 4 years as an iOS engineer at a large company. I have gotten the chance to work on some pretty high profile things, and it seems like I would have a good career trajectory here, but I&#x27;m just not interested in working on apps anymore.<p>I _think_ what I&#x27;m interested in now are distributed systems. The problems that interest me are the challenges of building systems that are efficient, correct, and can scale to millions of users. I have read a bunch of papers on the theoretical side of distributed systems, and it seems like it would be fun to work on these problems.<p>Ideally I would like to stay at my current company because of my unvested RSUs, and my company does have some open distributed systems engineer positions. I fear that I would currently be rejected outright because I don&#x27;t have any work experience building distributed systems and so I need some way to demonstrate proficiency&#x2F;potential. This is challenging because my current job is far removed from distributed systems.<p>Here is my current plan:
- Set up 1:1 chats with hiring managers to better understand what their engineers do, and what they are looking for. Also ask them what I can do to improve my application. My company encourages these type of chats.<p>- Work on some distributed systems side-projects. Some ideas: Implement a simple form of Raft&#x2F;Paxos, build a simple distributed key value store, multi-player load balanced game. I could also simulate traffic to demonstrate how well the system scales, and could try different approaches to see the perf impact.<p>Any other suggestions for how I can transition into a distributed systems engineering position?
======
otras
Re: side project ideas, you could work through the programming assignments for
MIT's 6.824: Distributed Systems (taught by Robert Morris, of both Morris worm
and Viaweb/Y Combinator fame). The assignments include auto-graded testing
scripts, so you can verify your solution to the assignments.

[https://pdos.csail.mit.edu/6.824/](https://pdos.csail.mit.edu/6.824/)

------
bgar
Are you sure you’re specifically interested in Raft/Paxos/consensus
algorithms? Distributed systems is more general than that. A lot of software
engineers working on cloud services are basically doing distributed systems,
if they are building multiple interconnected services. Where I work, our team
has 10-15 services that communicate with each other, with databases, caches,
and with other dependencies/consumers. This could also be considered
distributed systems.

~~~
zffr
I'm more interested in the general problem of building those interconnected
services, figuring out how to verify correctness, and scaling them to service
the traffic they get. I think consensus might be a part of that (maybe for
garbage collection?), but it's not something I'm specifically interested in.

~~~
bgar
Right. Then it might be worth applying to cloud software engineer roles in
general, and be sure to ask your interviewers about what sort of architecture
they work on. In your case, seems like you’ll be more keen to work on those
teams that have multiple services, not those that have monoliths.

