Skip to content

Instantly share code, notes, and snippets.

@mdb1
Last active March 31, 2022 22:09
Show Gist options
  • Save mdb1/08cbe08061cbf7f5179a7c3fdfa2e390 to your computer and use it in GitHub Desktop.
Save mdb1/08cbe08061cbf7f5179a7c3fdfa2e390 to your computer and use it in GitHub Desktop.
Industry Related Reading - Q1 2022

To put in practice:

Modular iOS Architecture @ Just Eat: Incredible article explaining how JustEat tackled the modularization problem in their apps.

Code-Review best practices: Great advice to handle CR process.

Pull Request Checklist for iOS Developers: Really nice checklist to read before sending new PRs.

The 7 Code Review Manners: Short guide on CR manners.

Writing Swift Articles: Tips to become a better writer: Frequently writing Swift Articles might be challenging. The tips from this article will hopefully help you enjoy writing articles more often and become a better writer. Give yourself the time to progress as a writer since it’s a skill you can train.

The new gold standard for iOS releases: 99.99% crash-free 🏆: Some lessons learned and useful articles to keep raising the crash free rates.

How to Get Lucky: 20 ways to get lucky by expanding your luck surface area.


Books

Growing as a Mobile Engineer: Growing to the senior and above senior mobile engineering levels.

Building Mobile Apps at Scale: The missing guide for building large, iOS, and Android native apps -with the challenges and common solutions across the industry.

App Architecture: iOS Application Design Patterns in Swift.

Building a Career in Software: A Comprehensive Guide to Success in the Software Industry.


Crypto

Public-key cryptography with CryptoKit for iOS: CryptoKit allows us to create and validate digital signatures with a few lines of code.


Design and UX

Most amazing fonts you shouldn’t miss in 2022: An opinionated list of not so conventional fonts to use.

Micro detailing the Micro Interactions: Animations and micro-interactions are some of the most effective ways of conveying information.

15 Mobile UX Design Practices to Delight Your Users: If you want to create a lasting impression on your app users, provide them with the best user experience by enhancing usability and design.


Git

The 7 Code Review Manners: Short guide on CR manners.

Easier Code Review With Pre-Commit Hooks: A python tool to enforce common practices easily using the pre commit hook.


Leadership - Management

Undervalued software engineering skills: writing well: Engineers often underestimate the importance of writing well. Invest in this skill to scale your ability to get your message to others, becoming a more influential engineer.

How to Lead a Project - as a Software Engineer: A nice framework for pushing everyone to lead.

It’s time to start writing: Writing is thinking. To write well is to think clearly. That's why it's so hard.

Writing is thinking: Encouraging words to start writing. Once you start writing it will be hard to stop.

Writing is thinking: learning to write with confidence: The best way to improve your writing skills is to write (and to write a lot). If you’re focused on a process that helps you build new skills, most notably your ability to parse and process information tactfully, you cannot lose.

An Engineering Team where Everyone is a Leader: We need people taking leader-like actions in more places.

Things I've learned transitioning from engineer to engineering manager: I believe the most important part of this article is the one talking about getting a mentor.

Managing Yourself: A tip of thinking yourself as a the CEO of a 1-person team to overcome daily difficulties.

Conducting a Successful Onboarding Plan and Onboarding Process: Guidelines for a great onboarding process.

How to Write Something Compelling: Introduces the idea that shorter and more universal writings are better and more compelling.

Putting Ideas into Words: Writing about something, even something you know well, usually shows you that you didn't know it as well as you thought. Putting ideas into words is a severe test. Can you ever know so much that you wouldn't learn more from trying to explain what you know? I don't think so.

Developers mentoring other developers: Detailed article explaining how the mentor/mentee relationship works and all the benefits attached to mentorship programs.

A Neuroscience-Backed Approach to Team Building: "We are biologically built to learn through play. When we are in a state of play, we are literally building new neural pathways, establishing innovative ways of thinking and being.”

7 Mental Models For Great Engineering Leadership: The key takeaway is that engineering leaders are builders, but that doesn't mean that we have to spend all our time under the hood. We are also builders of teams and organizations.


Product

Why We Decided to Rewrite Uber’s Driver App: First of a series of articles about the rewrite. Explains the logic behind it, that might not be what you are thinking.

The Product-Minded Software Engineer: 9 traits that almost all Product-Minded Engineers have in common.

The Mindset That Kills Product Thinking: Really interesting take on agile development.

How Google, Twitter, and Spotify built a culture of documentation: There are a lot of common themes in these stories, but the learnings can be boiled down to 3 main points:

  • Make the engineer’s life as easy as possible — remove friction.
  • Standardize and invest in your tools.
  • Make documentation an expectation through teaching and leading by example.

Productivity

Take A Walk: The Work & Life Benefits of Walking.

A Work Log Template for Software Engineers: A template for logging your important work during the year.

What If We Just Stopped Being So Available?: Pretty detailed modeling of the current world mindset about being available all the time. Really nice read.

Voluntary Discomfort: The Stoic Practice that Gets You Comfortable Being Uncomfortable: By practicing voluntary discomfort over a long period of time, “Stoics can transform themselves into individuals remarkable for their courage and self-control. They will be able to do things that others dread doing, and they will be able to refrain from doing things that others cannot resist doing.”

Habits vs. Goals: A Look at the Benefits of a Systematic Approach to Life: When seeking to attain success in our lives, rather than concentrating on a specific goal, we would do well to invest our time in forming positive habits.

The Time Hack Everyone Should Know: Some statistics about phone usage.

Momentum is magic: A project’s success is determined by the team’s ability to generate and sustain momentum.

Desirable Difficulties: When Harder is Better for Learning: Interesting research about optimizing learning.

Atomic Habits Notes: Great quotes from a great book.

How to Learn Anything: A Beginner’s Guide to Ultralearning: It offers a Notion template and some research about faster ways to learn anything.

5 Ways to Simplify Your Life: Curate your day, start living in fullscreen mode, weekly clearing ritual, eat simple foods & move, slow down & enjoy quietude.

Productivity addiction: When we become obsessed with productivity.

Choose Enjoyment Over Pleasure: Pleasure is addictive and animal; enjoyment is elective and human.


Random

PROFESSIONAL MAINTAINERS: A WAKE-UP CALL: 1000 words describing the current dilemma of open source development, and an idea of how could it work in the near future.

On the joy of seeing people succeed: By celebrating other people’s success like it’s your own, you grow stronger.

Cost of Attrition: An article explaining graphically what happens when someone leaves a team.

Salary Negotiation: Make More Money, Be More Valued.

Uber's Crazy YOLO App Rewrite, From the Front Seat: The amazing story of the Uber’s app rewrite told by one of the leaders of the team.

Learning a technical subject: A great analogy on how we learn.

Don’t worry, Be happy: Some tips to raise joy levels at companies.

Software Developer Promotions: Advice to Get to That Next Level: Really well written article about what to expect of promotions and how to prepare for them.

Why Apple’s New M1 Chips Are Essential for Rapid iOS Development: Some benchmarks of the new MacBook Pros against the old ones on Xcode build times.

It's hard to love imperfection: As a manager is critical to focus on better goal settings & communication: what's important, what's not, what's the reason behind a choice. You will never get perfection in a constantly changing world, and no one needs them.

Your Next Staff Plus Role: Some key points to take into consideration when starting at a new company with a big role.


Technical - iOS

Architecture

iOS App Architecture in 2022: A very opinionated article on how the architecture should look on an iOS app.

Clean Swift iOS Architecture for Fixing Massive View Controller: A great (kind of outdated) guide on how to implement Clean Swift.

RIBs - Uber's new mobile architecture that scales to hundreds of engineers: A great introductory video to the RIBs architecture.

RIBs documentation: Kind of the same content as in the video but in a written format.

Microapps architecture in Swift: Explains the basics of SPM and and microapps architecture.

Modular Project Structure with Swift Package Manager (SPM): Guide to add SPM Packages to existing projects.

Introduction to App Modularization with Swift Package Manager: A tale to be told: Great article explaining how to start modularizing a Swift app using SPM.

Meet the microapps architecture: Great explanation of what the microapps architecture is and where it comes from.

Modular iOS Architecture @ Just Eat: Incredible article explaining how JustEat tackled the modularization problem in their apps.

Modular Architecture in iOS: Example of how to create modular architecture with CocoaPods.

A Smart Feature Flagging System for iOS: Great article explaining how JustTweak works.

The Fundamentals of iOS at Revolut: Interesting to see how Revolut solved the common iOS problems when you have a large team.

Scale up your app with Microfeatures: By having clear and strict contracts (interfaces) between the different modules in an app, we can create independent building blocks that foster clear responsibilities, reduction of build times and good developer practices for high velocity development in big developer teams.

Microapps architecture in Swift. Resources and localization: Short guide explaining how to split localization and resources per module.

Faster Together: Uber Engineering’s iOS Monorepo: The story of how Uber’s iOS engineering team decided to move all their iOS related code to a single repository. Really interesting how they used Buck to increment the build speed both locally and on CI.

iOS Tooling at Uber: A video explaining how Uber started using Buck for faster build times.

Swift Code Formatters: Differences between SwiftFormat and SwiftLint.to

Deep linking and URL scheme in iOS: Smart implementation of deep linking using URL Schemes with coordinators and handlers to avoid massive switch statements.

Architecting Uber’s New Driver App in RIBs: The Uber team explains the architecture behind their app and how they built it together with the drivers by tightening the feedback cycle. “Architecture in software engineering is most often about prioritizing the values that are most important to your organization and making compromises on others.”

How to modularize existing iOS projects using Swift Package: 5 simple steps to start modularizing simple files by moving them out of the main target of your apps.

Lightweight dependency injection and unit testing using async functions: Kind of tricky but could be worth trying.

Extracting view controller actions in Swift: Interesting way of dealing with massive view controllers.

Static VS dynamic frameworks in Swift: an in-depth analysis: Static frameworks reduced both the app size and the launch time by significant amounts (~30%).

Developing modular apps on iOS: 50 slides explaining the benefits and the how to of moving to a modular architecture.

CI and Distribution

The new gold standard for iOS releases: 99.99% crash-free 🏆: Some lessons learned and useful articles to keep raising the crash free rates.

Other

A better local and remote logging on iOS with JustLog: Nice idea and implementation, however I wouldn’t add external dependencies for logging into my projects.

Build performance analysis for speeding up Xcode builds: Some tips on improve builds’ performance (time).

3 Techniques We Used to Improve Skyscanner for iOS Performance: Mostly using Instruments to measure stuff and then action on it.

Swift

Swift in 2021: A Year in Review: 2021 has been a great year, with significant Swift releases changing how we develop apps. Xcode Cloud and the Concurrency framework significantly impact our day-to-day work and will improve the quality of apps we write tomorrow.

Decode an array with a corrupted element: A smart way of using a wrapper to decode an array with malformed data.

Implementing and testing Universal Links: Perfect guide for implementing universal links. With great tips for debugging.

The structure of a Swift Package: Really simple explanations of what is each thing on SPM.

Self-documenting code in Swift to increase readability: Self-documenting code is a great tool to increase the readability of your code by taking away the need for documentation.

Typealias usage in Swift: A typealias can be useful to improve readability throughout your codebase.

SPM Tutorial: Covers the basics of SPM for building swift command line tools.

Combining protocols in Swift: Explores the different ways to combine protocols.

UI and UX

10 little UIKit tips you should know: Some good tips, some already known.

Using a SwiftUI View in a UIKit App as an individual component: Simple tutorial but it uses storyboards.

Dynamic and Semantic Colors - Four for One: Simple way of supporting high contrast colors using the catalog.

Xcode

Typos in Xcode – Never Again!: One of the best Xcode tips out there.


Technical - Programming in general

What is Developer Experience?: Developer Experience is about creating an environment in which a developer can do their best work.


The Future

The Future Of Work Will Demand These 8 New Skills: Yesterday’s competencies are a starting point, but tomorrow’s success will require more and different skills. We all need to build talents we may not already possess. This is a good thing. It keeps us fresh and on our toes. It will also separate those who do well from those who achieve only mediocrity. A new day is coming—the future of work begins now—and we can embrace it.

50 Emerging (Technology) Themes to watch out for in 2022: Curated smart soothsaying by others into a sort of list of lists.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment