In our modern iOS development world, it’s important that project managers and those dealing with client-relations understand some key ideas about development so that they are better equipped to handle developer and client relationships. These key ideas will help them understand timing and therefore better able to handle resourcing, scheduling, and agile processes.
In this guide, we will cover a few of these key development topics that every project manager should know and understand at least at a high level.
With this guide, you’ll be better prepared to handle any project or client that gets thrown your way. You will be better equipped to handle the developer communications as well as be able to translate that into client-facing communication.
Without further ado, let’s get started with some lingo that you should begin learning if you haven’t already.
Bugs are inadvertent issues that may crop up during testing. Bugs are very common in software development, especially during the testing phase of development. Bugs can crop up when a new feature is first being written, or when making changes and refactoring an existing feature.
Refactoring is the process by which developers make significant changes to a feature that requires a full or near full rewrite of the feature to upgrade the feature to the latest API / Framework spec, or to make code more readable. Refactoring usually keeps the UI and the UX the same, but completely changes the back end code of the feature.
Code reviews (often called “peer reviews”) is the process by which code is submitted as a pull request to a DVCS (Distributed Version Control System; e.x. GitHub, Subversion, etc.). This pull request contains all of the changes that the developer made to the codebase at large, and gives the developers on the same project a chance to review the changes and ensure the integrity of the code before allowing that change to be merged back into the codebase.
A codebase is the project files that make up an application along with any dependencies, such as frameworks. The codebase makes up all of the code that is required to edit, build, and run the app.
Dependencies are pieces of code that could be part of a framework (or may not be) that may or may not be written by the developer of the app at large, but is used to supplement the app in some way. An example of this is a networking framework that might be imported into an app that allows the developer of the app to more easily develop a feature by writing less code and relying on the dependency.
Wireframe or Spec
A wireframe is a set of UI renderings by a graphic designer that allows the developer to more easily visualize and understand the interface that needs to be created in the app. Spec may or may not supplement the wireframe. Spec includes fonts, colors, sizes, landscape and portrait spacing, and more that the developer can utilize to properly size elements when creating the UI in the app.
Conversion is a process by which things are updated in the codebase. Conversions often occur with Swift apps when a new version of Swift is released or when iOS is updated and parts of system libraries have been deprecated. The developer must supplement the codebase with additional code (or refactor the code in its entirety) to ensure that the codebase remains compatible with the new library, framework, or iOS version.
Application Programming Interface (or API) is the means by which apps interface with other systems. The majority of modern iOS apps will integrate in some fashion with server APIs that allow for the retrieval, updating, or deletion of data on a remote server. Server APIs come in many shapes and sizes, and may or may not be built alongside of the iOS back end and front end work.
In iOS development, system libraries are often used to access core features of the system (such as playing sounds, videos, creating animations, and more). System libraries are created by Apple (or licensed by Apple) for use in their software and any applications made for their platforms. System libraries can be imported into the codebase and used by developers of iOS apps to perform key functions. A library when imported and used in the codebase becomes a dependency.
A framework is a codebase that can be imported into an app to supplement or add additional features to the codebase. Frameworks can be written internally for an organization to share amongst multiple apps, downloaded from the internet and imported, or included in an SDK. A framework when imported and used in the codebase becomes a dependency.
Software Development Kits (SDKs) are large collections of libraries and frameworks. An example of an SDK is the iOS SDK, which is written by Apple and contains all of the libraries and frameworks necessary to create an iOS app. There’s also macOS SDK, tvOS SDK, and watchOS SDK. SDKs can be versioned for the platform version they target (e.x. iOS has an iOS 13 SDK).
As Apple updates their SDKs to various versions to support new versions of iOS, macOS, tvOS, and watchOS, some features inevitably change and get removed. When a feature of the SDK gets changed or removed, this is called a deprecation. Depreciations are often first warnings, which gives developers a chance to update their code to match the new convention before the dependent code is removed from the SDK. If depreciations are not handled properly, then it can lead to codebase breakage and require additional work to repair.
The front end is the code that controls what the user sees and interacts with on the screen. The front end code is often called the UI (user interface), and is a collection of code that handles presenting objects on the screen, handling button taps, and creating animations. Management often time prioritizes front end work over back end work due to the flashiness of being able to show work being done.
The back end code is all of the elements of an app that the user doesn’t see. Back end code controls things like networking calls, memory management, storing and retrieving objects from a database, and so much more. Back end code is often more important and takes more time to develop than front end code; however, it is often pushed aside by management as not a deliverable because it’s not something that’s visible to users.
User Interface (UI) is the visual elements of an application. It’s what the user sees and interacts with. A developer builds the UI from a wireframe or spec that a designer will create (if necessary).
The user experience (UX) is used to define the flow of a user through the app. Designers and developers will often work together to define this flow, ensuring that the user can get to all UI aspects of the app with ease and efficiency and with minimal friction.