My speciality skills
- Have a view for design which concerns about programming, testability, maintainability, security, and operability.
- Know what kind of lacking knowledge will cause what kind of system problems.
Make things right
As simple as I can, an application system composes following three important aspect of skills:
- Knowning how to match your design with specifications, protocols, frameworks etc.(JSON Schema, HTTP, SpringFramework)
- Knowning how to test your code.(From unit tests to maintainable integration tests)
- Knowning how to use databases with best practices.(least indexes for acceptable performance. least cost for correct transaction)
Development for Micro-sevices/Saga Pattern/Event sourcing
- Language:
- Java(over 10 years): SpringBoot, Spring WebFlux/WebMVC, SpringSecurity, SpringData(JPA/Hibernetes, Cassandra), Reactive Programming(Reactor), BeanValidation,
AspectJ, CGLib, SLF4j, LogBack
- GoLang(3 years): Gin, GORM, Go-Resty
- Language Tools:
- Testing:
- Java: JUnit(Jupiter), JMockit
- GoLang: Ginkgo, Gomega
- Parser generator:
- Java: ANTLR
- GoLang: pointlander/peg
- Queueing: RabbitMQ, Kafka
Architecture
- Experienced on reactive programming
- Expert on IoC/DI pattern
- Expert on domain driven-design
- Expert on aspect-oriented programming/declarative programming.
- Expert on test driven-design.
- Expert on event sourcing/offline transaction/Saga pattern design.
Refactoring systems
With TDD principals, I am good at refactoring/simplifying existing system.
- Experiences on refactoring from monolith system to micro-services.
- Expert on test-driven for reliable software quality while refactoring.
Experienced on NoSQL Databases: Cassandra, MongoDB
- Expert on Pre-optimized design for schema/index
- Expert on query optimization
- Expert on databae evolution(Liquibase, CassandraMigrate)
CI/CD
- Experienced on modern CI/CD(GitLab CI, GitHit action)
- Experienced with Docker/Kubernetes/Kustomized
Cloud
- Experienced on AWS(EC2, ElastiCache, RDS, ECS)
- Experienced on GCP(SQL, GKE, Logging, Monitoring)
Knowledge system
Expert on usage of Trac/AsciiDoc writing.
- Experienced on Confluence/JIRA