Nearly every position I've held included many of the same duties: write code responsibly, efficiently, and accurately. Write testable, performant, maintainable code. Fix bugs, and build features. Communicate early, often, and effectively. Document. Everything.
More than 6 years of full time remote work. Please, ask me about some of my previous projects! Rather than belabor what they were, I'd like to highlight the career defining things I've learned along the way. These are what comprise my experience:
Fully remote (cross timezone!) Deep dive in Go. Git internals: vanilla git on the server side, forking go-git to add fetch progress support, git2go, targeting desktop software, and lots of performance across the board. Helping out with the Ruby API. SDK contributions. Proposing solutions and running with implementation.
Fully remote (cross timezone!) Adding Event Sourcing to internal services. Deep dive on full AWS with Docker. Extensive third party software integration. Rapid prototyping for new consumer services. Pub/sub via SNS and SQS in AWS.
Designing/implementing a REST API with a custom hypermedia format. Event sourcing, and polyglot persistence. Hypermedia focused domain-specific languages. Creating and managing summer internship program. Managing and mentoring developers across the country.
Fully remote (cross timezone!), promoted to Senior in 2016. Large scale problems: deployment tooling, performance, deprecation. New code problems: stability, robustness, operational insight. First foray into hypermedia! Adventures in building for cross-platform. Floating the monolith while building microservices.
Researched and implemented Event Sourcing and CQRS. Exercised full-stack skills, accomplishing two redesigns, and building an engaging platform for viewing video.
Enterprise integration patterns. Full-text search indexing. Extensive relational database modeling.
Test-Driven Development, e-commerce. Hard learned lessons in debugging and maintenance, and cutting teeth as a web programmer.
Internship, and my frist opportunity to build a tool to improve the quality of life in development for myself and my peers.
Solve interesting and meaningful problems while establishing myself as an influential contributor on a team of exceptional developers. Continue mentoring and teaching others with interest in Software Engineering.