What I know
- “Make it as simple as possible, but not simpler”
- “Right tool for the job”
- “Do one thing but do it well”
- “Ask why five times”
- The Pareto principle.
- The Hofstadter’s law.
- Translating between business and engineering languages.
- Sharing knowledge and helping other developers.
- Seeing problems early on.
- Generalizing and simplifying.
- Java: since 1990s.
- Python: since 1990s.
- SQL: since 1990s.
- Microservices, SOA, parallel, distributed.
- Testing: unit, functional, integration.
I wish I could use these more
- Functional and reactive approaches.
- Machine learning.
- Kotlin, Typescript, Scala, Rust, Haskell.
What I try to avoid
- No-coding management work.
- Heavy multitasking.
- Quickly producing throwaway prototypes.
- Releasing on a Friday night (unless many releases a day are routine).
- C++, Go, PHP, MongoDB.
Where I worked
GrubHub, Inc: 2016-2018
- Mostly data integration with third parties.
- Python, Java, SQL, Cassandra, Spark, queues. AWS, SOA.
Handshake Corp: 2015
- Work on the backend of a sales support product.
EPAM Systems: 2011-2015
- Contractor for Google NYC. Various internal tools.
- Worked on PyCharm since inception until release 1.2.
- Java, Python (great many variants). A distributed team.
- Various jobs and gigs involving programming all the way back to 1992.
- MD in Computer Engineering from Samara State Aerospace University, 1995.