Daniel Weibel
I'm a software engineer who is passionate about building things at any scale, from low-level hardware tinkering to high-level distributed applications. I spend my time writing applications in Java, Python, Ruby, or JavaScript, but I love to learn new programming languages and frameworks, and generally finding the right tool for the job.
My aim is not to just get things to work, but to get them right. We all know that any fool can write code that a computer can understand. What makes a professional developer is the ability to write code that humans can understand.
My main interests are in three areas: systems, software architecture and design, and software development processes.
Systems:
How to design a scalable and robust distributed system? How to split up the system's functionality into individual components and layers? How do these components interact? Here my interests include microservices, cloud computing platforms like Google Cloud Platform (GCP), Amazon Web Services (AWS), or Heroku, "serverless" computing, APIs, communication protocols, message brokers, containers (Docker), cluster management (Kubernetes).
Software architecture and design:
How to organise code for maximum readability, robustness, and maintainability? Here, I'm interested in design patterns, SOLID principles, Clean Architecture, DRY, KISS, and YAGNI (i.e. "don't repeat yourself", "keep it simple, stupid", and "you ain't gonna need it"), refactoring, code conventions and best practices.
Software development processes:
How to make developing software as streamlined and hassle-free as possible? How to effectively and efficiently communicate in a team? How to boost productivity by automating repetitive tasks? In this area, I'm interested in agile development, DevOps, continuous integration (CI), continuous deployment (CD), collaboration tools like GitHub or JIRA, version control (Git), dependency management (Maven, Gradle, npm).