I am a Ruby and C# developer focused on backend systems, especially in API design and system observability. I am currently diving into Java to expand my skills
When deciding what to learn next, I think in terms of Information Systems, which include five key parts: hardware, software, data, people, and processes. This helps me stay focused on building a balanced and practical set of skills
- API development (Monoliths & Microservices)
- Troubleshooting & observability in distributed systems
- System Design (Scalability, Reliability, Maintainability)
While my main focus is backend engineering, I regularly work on data structures and algorithms to sharpen my problem-solving skills
- How am I using Atlassian Confluence effectively? https://kaiquekandykoga.atlassian.net/wiki/x/QwAN
Recommended tools:
- draw.io
- Atlassian Confluence
Recommended tools:
- GitHub
- How do I solve complex problems effectively? https://kaiquekandykoga.atlassian.net/wiki/x/twAN
Recommended tools:
- Google Calendar
-
Primary: PostgreSQL
-
Secondary: MariaDB, Memcached, Redis, SQLite
Docker, Git, Kubernetes, POSIX utilities (grep
, find
, etc.), VirtualBox, tmux
-
Primary: Linux (openSUSE, Debian, Ubuntu, RHEL, Qubes OS, Alpine, NixOS)
-
Secondary: FreeBSD
-
Primary: Ruby, C#
-
Secondary: sh (Bourne Shell), Bash (Bourne Again Shell), PowerShell, JavaScript, TypeScript, Java, C, C++ (Qt)
- Primary: Vim, VS Code
- Secondary: Emacs
I have identified three approaches to choosing a learning path:
- Tool-first: Start by learning a specific tool, then explore the broader areas where that tool is commonly used
- Area-first: Begin by studying a particular domain or field, then learn the tools typically used within that area
- Company-first: Focus on a specific company, then identify the technologies and domains it emphasizes, and learn accordingly
I created a personal learning system to document everything I study. I use .rb
files to structure knowledge—writing class-based notes on tools, languages, and concepts ranging from Vim to GNU Bison to X11. This helps me think through code and organize large amounts of information efficiently
class Vim
def grep
[
":grep",
":grep colima -r ."
]
end
end
class Bitbucket
def private
[
# list private repos
]
end
def public
[
# list public repos
]
end
end
This approach is inspired by how FreeBSD maintains everything in one tree. I am currently experimenting with managing multiple repositories while keeping my single-repo philosophy
Why do I do it this way?
Simply because I enjoy it
-
Respect
-
Honesty
- Advanced Programming in the UNIX environment Third Edition - W. Richard Stevens and Stephen A. Rago
- Designing Data-Intensive Applications - Martin Kleppmann
Big thanks to Microsoft and the GitHub team for this incredible platform where I can share my work and thoughts freely