Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Everyday skills

Git

Git is the most important free and open source distributed version control system today. Some software can help visualize the git commands, but if you don’t know what tools are available, you won’t be able to use them.

Important

These commands are the bread and butter of Git. You should be able to use them with ease. Practice them at https://coddy.tech/playground/git

Use caseGit Documentation
Create new or clone an existing repository / clonegit init / git clone
Switch branches or restore working tree filesgit checkout
Fetch from and integrate with another repository or a local branchgit pull
Reapply commits on top of another base tipgit rebase
Put your changes away for a bitgit stash
Remove untracked filesgit clean
Record changes to the repositorygit commit
Update remotegit push
Show commit logsgit log
Undo various Git operations, e.g. commitgit reset
Download updates from remotegit fetch

Tip

These commands are more advanced. The more you know, the better!

Use caseGit Documentation
Apply an existing commitgit cherry-pick
Use binary search to find the commit that introduced a buggit bisect
Show changes between commitsgit diff
Review PR without messing up your current workgit worktree
Who let the dogs out?git blame
Switch branchesgit switch
Restore filesgit restore

Home assignment: What are these lines doing? Explain in plain english:

git add LoginViewModel.kt
git commit --amend --no-edit
git bisect start
git bisect bad
git bisect good
git bisect good
git bisect bad
git blame -L 40,80 LoginViewModel.kt
git switch release/1.2.3
git cherry-pick 4d5c6a7
# you have a conflict in LoginViewModel,kt, which you resolve manually
git add LoginViewModel.kt
git cherry-pick --continue
git diff HEAD~3 --name-only

Documentation

Writing docs for yourself or for the project pays off eventually. Do you want to remember why CONFIG_VALUE is 42? What’s the reason the Login Screen has only one social media login? Why did you choose X library over Y? I don’t want to remember all my decisions, but I don’t want to miss anything important. Let’s write the docs then!

Home assignment: Read the articles

Communication && Cooperation

Critical thinking

I’d like to quote the Wikipedia’s article:

‘Critical thinking is the process of analyzing available facts, evidence, observations, and arguments to reach sound conclusions or informed choices.’

I can’t emphasize enough the importance of this.

Book

UI Architectures

MVC

MVP

MVVM

MV…

Testing

Legacy software

Bug hunting

Dependency injection

Connectivity, periodic jobs

Retrofit / OkHttp Bluetooth WorkManager

Coroutines

Compose the UI

App performance