Internal Software Engineer Resume
SUMMARY:
- I am a fullstack javascript engineer. I enjoy working on line of business apps and am a strong proponent of solid design principles and tdd. I have used agile for project management for many years in many forms and believe in it. I am interested in finding a business and team that has strong, mature (jr and sr) developers, who desire to build products that will be maintainable, scalable and successful.
- I am a big proponent of event sourcing, cqrs, and functional programming. My personal work is heavily based in these patterns and enjoy bringing them with me to the workplace when possible.
- I actively participate in the javascript community, I have started a google group for functional programming in javascript and have a number of packages on npm. I am also very active in the downtown react meetup.
TECHNICAL SKILLS:
Node: koa, hapi, express, PM2, winston, aws - sdk, great many more npm modules. ES-6, ES-7, babel
Front End Javascript:: react, redux, webpack, backbone, knockout, rx.js, mocha/chai, relay
Messaging: Rabbit, EventStore, Postgres (notify/listen), msmq
DevOps: Vagrant, Docker (compose, machine, swarm), aws (ec2, ecr, s3 lambda, etc), ELK C#: Asp.Net MVC, Structuremap, Nhibernate/FluentNhibernate, NServiceBus, NUnit, XUnt
Data: EventStore, Postgres, Sql Server, Mongo, Elastic, Graph QL
Misc: Git, Jenkins, TeamCity, Bamboo, Jira, Postman, ELK, various other supporting products and services
PROFESSIONAL EXPERIENCE:
Confidential
Internal Software Engineer
- Built several pages on the front end for a tool that allows you to drill down, through regions and display, chart and compare spend metrics over time.
- Used react, relay, redux and flow on the front end.
- Made minor changes to GraphQL on the back end.
- Built a large part of our Community Advocate tool, a call center application for assigning agents to advocates via region, displaying and editing the advocate profile information, logging calls and emails and assigning advocates to events.
- Created new schemas, domain objects and GraphQL endpoints on the backend.
- Used react, relay and flow on the front end.
- Contributed to a tool that displayed tracking pixel information for advertisers, including hit rates, conversions, errors, and potential problems across selected time spans.
- Worked on schemas, domain objects and GraphQL on the back end.
- Used React, relay and flow on the front end
- Made contributions to various other projects including bug fixes and minor features.
Confidential
Sr Developer
- Worked on a tool that allowed students, professors and peers to all work on, review and grade written papers
- Instructor defines number of drafts and criteria then assigns to students
- Students compose a draft and submit it to the instructor.
- Instructors can highlight sections, leave comments and reference material per highlight and return to student.
- Instructors can assign groups of peers to review essays as well.
- Finally instructor grades paper using a criteria rubric.
- Node server was Koa2, using various middlewares including a very nice validation and documentation middleware.
- Postgres database using a node db migration tool for migration scripts.
- React/Redux frontend. Sagas and draftjs being the most interesting parts. webpack 2 for build and deploy with postcss, css modules
- Atlasian toolkit: bitbucket, jira, bamboo, etc.
- Developed and deployed in docker with compose
- Hosted in AWS using docker swarm
- I was responsible for the application architecture and design.
- Choosing and implementing design patterns for the front and back end
- Setting up docker development and deployment
- Implementing TDD tools and patterns
- Webpack setup
Confidential
Sr Developer
- In node.js stack
- Moving entire application suite from MS to Linux/OSX
- Rebuilding as a distributed app using microservices
- Everything in containers (docker)
- Apis using hapi, joi, boom and friends, services as node workers
- Built via tdd
- Tests run in containers
- Integration tests run via docker-compose
- Messaging using RabbitMq
- Read-stores in ElasticSearch
- Write-stores in Postgres
- FrontEnd in Angular
- Deploying to AWS via Jenkins
- Previously, in MS stack
- Re-wrote vendor application (not the gui) using Object Oriented programming, numerous design patterns ( SOLID, strategy, command, double dispatch etc ), TDD, and well organized folder structure.
- Introduced front end infrastructure to replace hodge podge of jquery spread throughout app.
- Used Backbone and a handful of hand rolled services for state management, validation, nav, etc.
- Replaced most hand rolled services with Durandal (single page app framework) at a later date, as it was quite similar, had documentation, and a community behind it.
- Introduced order to a messaging implementation using NServiceBus.
- Refactored or rewrote services to be more autonomous, use dependency injection, etc.
- Created better workflow for the sagas (workflows of more than one service).
- Produced POC of DDD/CQRS/ES using siloed section of our Domain.
- Domain Driven Design, Command Query Responsibility Segregation, and Event Sourcing.
- Used EventStore (geteventstore.com) an immutable event database.
- Built architecture in line with DDD ports and adapters pattern.
- Used messages ( events distributed by eventstore ) to connect each layer of the Bounded Context and to resurface completed state to top layer when done.
- Write side composed aggregate root though replay of domain events.
- Read side was projected to mongo on a projection per view basis.
- Finally retrofitted current UI to use new back end.
- Built services using nodejs to poll AWS-SQS for events.
- Writes events to mongo (SQS is not a permanent record so we are storing them in mongo).
- Posts data to another api to record in company's domain.
- Saved team from TFS.
- Provided the POC, implementation, migration, and branching strategies for move from TFS to Git, Grunt, Jenkins, and Jira.
Confidential
Sole Developer
- Developing synchronous implementation in which: redux calls the api, which sanity checks/validates the request and creates a command.
- Api adds the command to an event stream which is picked up by appropriate command handlers.
- Command Handler hydrates appropriate aggregate root.
- Aggregate root creates domain events which are published to the aggregate’s event stream.
- Projections listen for events and update mongo views.
- Projections emit a completed event which is picked up by the node api.
- Api responds to redux action with success or failure.
- Enabled architecture to allow for each section of the app (Api, Command Handlers, EvenStore, Projections, and Read Views ) to scale at their own rate, and to be highly modular so even separate Command Handlers and Projections can scale independently.
- Committed to implementing further consistency patterns, including socket.io (websockets) and optimistic action handling with redux.
Confidential
Sr Developer
- Demonstrated ability to migrate Webforms to MVC by converting an entire page, navigation, header, authentication, permissions etc to MVC.
- Served on five groups that were formed after successful demonstration of migration, and investigated the best practices and migratory strategies.
- Earned the confidence of senior management and presented an early analysis for implementing NHibernate as an alternative to the current hand rolled ado.net data access layer.
- Contributed refactorings and restructuring where they would be most effective.
- Participated in discussions about the future direction of the platform from a development perspective.
- Teamed with an experienced senior developer, the VP of technology, and a product owner on integrating and/or rewriting the SPA application that was built at Confidential into the Confidential platform.
Technologies: SqlServer | CastleWindsor | Automapper | WebForms | Asp.Net MVC | TFS
Confidential
Software Engineer
- Designed central component or repository for a new suite of products, including the rewrite of their LMS, with a very robust and flexible and strong organization structure and permissioning system.
- Served as principal architect and developer, employing a design company for the look and feel and implementing a single page application that was optimized for (future) use of tablets and mobile.
Technologies: SqlServer | Nhibernate/FluentNhibernate | Structuremap | Automapper | Asp.Net MVC | jQuery | Backbone.js | Knockout.js | TDD | NUnit | RhinoMocks | Jasmine | Git | GitHub | MSBuild | JetBrains