Recently I've started reviewing system design and algorithms. While this is not for interview purposes, I find that this knowledge helps in both daily job and indie projects.

Below are a few resources that I've learned and I highly recommend. Thread 👇
1) System Design

System design is about defining architecture and modules interface to satisfy requirements. Whether you're working in a team or solo, clarifying requirements on what you want to do and what is exactly the problem, is most important.
2) System Design concepts

You don't need a CS degree to get started, but by reviewing system design, you know these concepts, which you need everywhere you go

📦 Database: SQL vs NoSQL
🗃 Cache
🥊 Scaling
🗳 CND, Load Balancing, Proxying
🎻 Connection: TCP, Polling, Socket
3) System Design resources

Primer github.com/donnemartin/sy…
System Interview systeminterview.com
Concept cheatsheet gist.github.com/vasanthk/485d1…
Practice @tryexponent tryexponent.com
Engineering Blogs github.com/checkcheckzz/s…
4) Data structure & Algorithm

I know big tech companies scare you away with these whiteboard questions, but I find it kinda helpful to understand basic data structure and algorithms for our day to day work
5) Data structure primer

Reviewing these basic data structure: Array, Linked List, Stack, Queue, Heap, Binary Tree, Hash, Graph

I like to try to implement these in my favorite language: Swift. Each language has different characteristics which gives different perspectives
6) Data structure resources

Leetcode: classic and well-defined question set leetcode.com
Swift alogrithm club: easy to understand in Swift context
github.com/raywenderlich/…
Cracking the coding interview: fun and easy to get started amazon.co.uk/dp/0984782850
7) For mobile developers

Swift foundation has many built-in data structures that you don't need to reinvent, and system design can feel for backend developers only.

But chances are we work with a backend or roll our own backend setup, these kinds of knowledge are crucial
8) Technical requirements

🕸 Networking: REST, GraphQL, gRPC
🍦 Availability: offline, static assets serving
🔒 Security: sensitive data, authentication
⚖️ Scalability, deployment, monitoring
🥡 Data layer and caching
🍱 UI flow
9) System design for mobile developers

Here are few articles I enjoy reading

1️⃣ Preparing for system design blog.pragmaticengineer.com/preparing-for-…
2️⃣ Cracking mobile system design dev.to/ecaselles/crac…
3️⃣ System design interview for mobile developers davescommutebloghome.wpcomstaging.com/2019/08/27/sys…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Khoa 🔥

Khoa 🔥 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @onmyway133

2 Jul
SwiftUI ViewBuilder is resultBuilder, and from Swift 5.3 you can declare if let, if case, multiple if statements, switch, ... pretty much like a normal block function.

ViewBuilder is recommended to leverage SwiftUI type system to ensure performance. Here are a few examples 👇
Local variables.

Pretty much like a normal function, you can declare local variables and return View at last.
Mix if and switch statements

This is handy when you want to show modal or overlay of different Views
Read 6 tweets
6 May
What are some essential online tools that help you in your day-to-day development tasks?

Here are the tools I can't live without

Thread 👇
⌨️ Quick Type by @quicktypeio

Convert JSON into gorgeous, typesafe code in any language. I use this a lot to quickly generate Swift models from server JSON response. It generates very elegant enum handling and optiona

quicktype.io
👨‍🍳 CyberChef by GCHQ

The app is open-source and contains lots and lots of tools to convert texts, images, and formats languages

Great to have al things in 1 place

gchq.github.io/CyberChef/
Read 9 tweets
3 May
"Software developers are the most likely to get divorced"

This is something my professor said during a lecture at university, and it's a lesson I always remember

It's not just about developers, but for anyone who values work above all things, who only care about themselves
We tend to focus mostly on computer programs that are either 0 or 1. Life has more shades than that.

How many millionaires and billionaires have you seen that have a failed marriage, or neglected home life?
Family is not for everyone. It's a lot of work. It requires your ultimate responsibility and caring.

If your marriage falls apart then all your hard work gets wasted. You will be miserable and distracted by the negative things that come with divorce.
Read 6 tweets
29 Apr
How to make your apps stand out on the @AppStore?

Besides coming up with a good idea and building the app, there are many other things you can do to boost your apps' visibility #iosdev

Thread 👇
🧑‍🎨 Apple Human Interface Guidelines

HIG provides in-depth information and resources to design great apps. Not only you learn the fundamental of colors and fonts, you also learn how elements are used in Apple own apps as best practices

developer.apple.com/design/human-i…
🏆 Apple Design Award

My most favorite session every WWDC is watching Apple Design Award. Learn how awesome apps demo design, innovation, and technology on Apple platforms, and why @Apple decide they deserve the price

developer.apple.com/design/awards/
Read 26 tweets
10 Feb
I've done some #SwiftUI lately for @pushheroapp @PastePalApp , and amazed by how easy and fun it is to make apps. If you want to get into SwiftUI but don't know where to start, here are my recommended resources #iosdev

Thread 👇
1) First thing first is @Apple official guides. Apple has done a stunning job to make SwiftUI tutorials fun and interactive

- Introducing SwiftUI developer.apple.com/tutorials/swif…
- Develop Apps with SwiftUI developer.apple.com/tutorials/app-…
- Creating a macOS App developer.apple.com/tutorials/swif…
2) Next is a mini-series focusing on fundamental blocks which are Stack and ScrollView

- Creating Performant Scrollable Stacks developer.apple.com/documentation/…
- Aligning Views Across Stacks developer.apple.com/documentation/…
- Building Layouts with Stack Views developer.apple.com/documentation/…
Read 18 tweets
7 Dec 20
Whenever I do Core Data, the Laws of Core Data by
@davedelong is always my northern star

Below are some of take aways from that post

davedelong.com/blog/2018/05/0…
1) Core Data is more than just SQLite wrapper, it manages objects, relationships, fetching, faulting, ...
2) Having 2 context: 1 main and 1 background that are both backed by the persistent coordinator. In modern Core Data stack, NSPersistentContainer has default viewContext already, we just need another newBackgroundContext
Read 8 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(