jitendravyas / Q-A

7 stars 0 forks source link

Is there a separation of front-end, back-end development in native apps development? #1

Open jitendravyas opened 7 years ago

jitendravyas commented 7 years ago

In Web development world we have front-end and back-end roles. I know we have roles like Full stack developer too but still many companies hire for front-end and back-end roles, and database experts too.

In front-end web development we consider things like Visuals, Responsiveness, Accessibility, performance etc in the front-end part usually.

I don't know much about Mac app, iOS app, Windows App, Android development but it seems in that kind of development it seems one person do everything, no separation of roles like front-end, back-end.

Would like to know if native development teams also have different people working on front-end and back-end of the app or not

Some related resources I found on internet

dezinezync commented 7 years ago

There is certainly a separation. The separation can happen in multiple ways. I'm listing out a couple that I know of:

A

  1. UI Engineer: works with Storyboards, NIBs, UI element design. This can, and usually does, include writing custom view transitions and animations.
  2. Networking: works with networking within the app; communicating with APIs, XMPP, or parsing XML coming from over the network. This is usually not limited to networking itself as it relates to fetching data, so it can also include writing wrappers for SQLite or other forms of on-disk persistence.
  3. General: writes view controllers which connect 1. and 2. together. This can also include persisting app states across app-launches, URI or Universal linking support, Hand-off, continnuity, etc.
  4. Tooling: tools like CI, CD, Manual Testing, etc. Think of these people like DevOps for apps.
  5. Project Manager: these people generally handle the project as well as submissions to the respective app stores, meta data, etc.
  6. Designers: these work in tandem with the UI Engineers translating static mockups or prototypes to code. They also work together for type setting, App store screenshots, etc. (unless handled by a separate team).

B.

  1. The one-person-army: self-explanatory?

C.

  1. Platform Engineer: handles all code related to the app including UI, Networking, Disk-persistence, platform specific features etc.
  2. Designer: see A6.
  3. Tooling: in such setup, such a team may mostly be absent and is in-turn handled by C1 directly. But if present, it's very similar to A4.

We use the A structure. It may seem overly distributed but the specialization of each person in the respective team allows for overall flexibility.

jitendravyas commented 7 years ago

@dezinezync

  1. Who takes care of performance & accessibility?
  2. Does Swift make the separation even better than objective-c?
dezinezync commented 7 years ago

Excellent question.

  1. Performance: depends where the bottleneck is. Each team is responsible for the performance of their modules. In the XCTest class, we can measure the performance of any of our code within tests. As for actual UI performance, the UI Engineer is responsible, unless it's an implementation issue in which case, team A3 handles it.
  2. Accessibility: Majority of iOS' components support Accessibility OOTB. We only have to set the correct descriptions and the OS handles the rest. For custom elements, it's the UI Engineers' job to handle that as well.
jitendravyas commented 7 years ago

@dezinezync Thanks. I guess you didn't notice another question as I added it later.

Does Swift make the separation even better and gives more power to UI engineers than objective-c?

dezinezync commented 7 years ago

Yes, sorry I missed that. I'm not aware of the advantage or lack of it by using Swift. I don't see why it would provide any advantage, if the UI Engineer uses Storyboards and NIBs which are both Interface based themselves.