Автор: Tjeerd in 't Veen
Издательство: Independently published
Год: 2024
Страниц: 315
Язык: английский
Формат: pdf, epub
Размер: 22.1 MB
There's no doubt that the term "System Design" has been popping up more and more in the mobile engineering industry. When mobile engineers apply for jobs, System Design is becoming more of a typical and standard part of the interview process. Many engineers may be familiar with the process of stumbling upon System Design books, only to discover that they cater to the needs of backend developers. Unfortunately, the resources available specific to supporting mobile developers still remain limited when it comes to Mobile System Design. When we produce small apps as indie developers, we don't always require a technical design upfront. But, for regular jobs where you work in teams, mobile apps are typically larger and absolutely more complicated. As soon as apps grow more features and become more complex, strong fundamental skills become ever more crucial. This is where knowledge about Mobile System Design is imperative and effective especially given the ever-changing landscape and fast-paced environment of mobile engineering. The aim of this book is to provide people with the necessary skills and knowledge to help increase their chances of getting the job that they really want. However, this book isn't aimed solely towards mobile engineers taking part in future interviews. This book is also geared towards supporting and improving day-to-day work activities, given that strong technical design skills have the capacity to make positive, longstanding impact on one's work experiences.
The core message of this book is that you become a better developer by working on your fundamental skills. Forget the fancy tools and frameworks for a moment, and let's get back to the basics. The takeaways from this book will last your entire career and make you a better developer in many critical aspects.
The term "System Design" is nebulous, because it touches upon many overlapping software design practices that fall under the umbrella of Software Architecture, such as: domain modeling, architectural patterns, API design, or component design. With this book, we try to define System Design as designing a technical solution to satisfy business requirements. To put it simply: You receive requirements, and you have to figure out what components to make and how they work together to solve the business’ needs. Specifically in this book, we narrow it down to business requirements, since it mostly reflects requirements found at work. As opposed to any software requirements, such as hobby projects and toy apps where a lot more rules can be broken. Another way to think about System Design is coming up with the components and their APIs to solve a problem.
Objective-C and Java are still in use, but they have to make way for Swift and Kotlin. Nowadays, some might say UIKit and XML layouts are outdated, and may consider SwiftUI, Jetpack Compose, and Flutter the future. Who knows, maybe one day instead of writing native apps for iOS and Android we’ll write a new thing that runs on anywhere, let’s call it mobile-assembly. Change is inevitable. But, despite tools and trends changing around us, the process will be similar.
This book uses Swift as a vehicle to explain concepts and best practices, and it's not relying a lot on iOS specifically. This book focuses mostly on concepts, mental tools, reasoning, and approaches. With some basic programming knowledge you'll be able to understand the Swift code examples with ease. We won't go too deep about platform or language-specific requirements. Where needed, the book explains specific Swift keywords. So whether you're an iOS engineer, Android engineer or use Flutter, React Native or other mobile platforms, you can apply the knowledge from this book.
This book assumes you're serious about developing apps, whether that's by yourself or within a team. The book does assume you will work with others, but it doesn't matter whether you're in a tiny startup or in a giant mobile department in big tech. It's written primarily with junior and senior developers in mind. I'd argue that staff-level engineers can get plenty of value out of this book as well, depending on the background. This book does go over the process that you're already familiar with, but aims to give you new perspectives, tools, and considerations at each step, so that you come out a better developer at the end. If you're never made an app before, you can use this book to get some ideas on what starting a project from scratch would look like and how you can work in a mobile team. But it will not show you how to set up a project.
Скачать Mobile System Design (Early Release v005b)