In this episode, we start the development of the Image Feed Feature case study.
How contracts enable teams to develop independently (even when key parts of the system such as the UI or the backend API are not yet implemented.)
Establishing processes promoting detailed documentation.
The tradeoffs of the project’s starting point (should we start with abstractions or concrete components?!).
How to speed up the development process using macOS frameworks.
At this time we don't have UI designs for the app, and we lack a remote API for serving the remote feed items. We don't let the absence of parts of the system influence our productivity. We create contracts that serve as boundaries for our system to enable us to continue the development process.
You can think of these contracts as the input and output of the components. For example, we know the specification of a
FeedItem model and the remote API response. The remote API response is produced by the remote API (server/backend) and consumed by the
RemoteFeedLoader (client/frontend). Thus, the backend and frontend developers can now work in parallel, as the contract they have agreed on describes how they will communicate.
The same holds true between the UI module and the rest of the system. The UI needs an input of
FeedItem's (to render on the screen), thus, as long as we describe an interface boundary (contract), we can continue developing in parallel without being blocked by the fact that we don't have a backend or the UI design yet. Once the backend and UI design are ready, we can compose all the modules together.
Finally, since our components will be UI (and platform) agnostic for now, we create a new macOS framework which will help us expedite the development and testing processes, as we won’t need to run the app nor our tests on the slow iOS simulator.
We’ve been helping dedicated developers to get from low paying jobs to high tier roles – sometimes in a matter of weeks! To do so, we continuously run and share free market researches on how to improve your skills with Empathy, Integrity, and Economics in mind. If you want to step up in your career, access now our latest research for free.
Originally published at www.essentialdeveloper.com.
If you enjoyed this article, visit us at https://essentialdeveloper.com and get more in-depth tailored content like this.
As we all know being a competent software developer or engineer means continuously learning throughout your career. It’s great! That makes this profession exciting and allows to escape everyday routine at work. In fact, it’s not a job anymore - it’s a lifestyle 👩💻👨💻