- Architect, Senior DeveloperIndependent Consultancy2015 - PRESENT
- 2 small-scope, 3 medium sized and 2 large apps with React.js; 2 medium-to-large apps with Vue.js; 3 medium-to-large projects in Angular 2+; few experimental projects with Cycle.js (also using it alongside React.js for reactive app), RxJS and Elm lang.
- Tried lots of state management solutions for React until settled on Redux (mostly). Redux is simple but its sharp edges are async side-effects, so used everything available - redux-thunk, redux-saga, redux-observable (with RxJS), redux-loop and Cycle.js (yes, for handling Redux side effects) and few others that are out of my attention now. Cycle.js approach is by far the favorite one (partly due to high preference for reactive programming), next one being Redux-Saga (imperative but feature-rich) because of its popularity, then redux-loop for following the Elm Architecture patterns in a declarative way.
- Learned that Reactive is the way to write complex UI-centric apps. RxJS (5), xstream (drives Cycle.js) and most.js are all great choices for push-based reactivity.
- Learned that Virtual DOM is the way to go when it comes to performant in-browser rendering and re-rendering (React is good at it, but Inferno.js and snabbdom - a lib driving Cycle.js DOM driver - are faster).
- Learned that Elm is OK as a language but most of its value is in the architectural patterns it brings (The Elm Architecture).
- TypeScript is just plain awesome. Was hesitant to use it first (didn't see much value), changed my mind over time.
- Cycle.js feels like a futuristic approach compared to React.js (and especially Angular) - wish it to be more popular. I'm using it side-by-side with React.js, though, with great success at handling state and making React components logic written in a reactive way finally. Raw Cycle.js is too hardcore while React.js has a huge community.
- Inferno.js is the best drop-in (well, almost drop-in) replacement for React. Faster, simpler, enforces better patterns by not implementing the legacy part of React API.
- SSR with React is hard, so many implications but still doable. Didn't like the Next.js' approach - too much reliance on the server at architectural level. Async side-effects is the biggest problem, as usual.
- Front-end Developer, UX specialistInternational Technological University (via Toptal)2014 - 2017
Technologies: AngularJS, HTML5, CSS3, Ruby on Rails
- Designed the UX for the entire ITU Bridge project (ITU project to help ITU students and alumni to apply for jobs at top companies).
- Took part in ITU Bridge and ITU ID (ITU Identity Provider) API design.
- Implemented Bridge project client application with AngularJS (mid to large-sized application with tons of corner cases).
- Taken part in implementing the internal corporate CRM, with API written with RoR and front-end part with AngularJS 1 and UI driven by Angular Material.
- Most of the time spent working (with a small but team) on implementing a flagship university product - EMS (Education Management System), a big project with Rails-driven API, backed by Elasticsearch and MySQL, and AngularJS front-end (written in CoffeeScript) built with component approach (hundreds of components) and frontend build system being Webpack-driven instead of Rails Asset Pipeline.
- Front-end DeveloperClickFunnels (via Toptal)2015 - 2016
- One project was a Marketplace for the ClickFunnels digital projects (templates and entire funnels), with frontend written with Ember.js and Rails API (with main app written with Rails entirely).
- Migrated from older Ember to a newer with component approach at this position.
- Another project was a corporate "Styleguide" a separate showcase app to present styling. Was responsible for the entire UI/UX, technical implementation.
- Implemented a neat thing to both run the same markup/code and showcase that as a source (without duplication) - the Styleguide needed code snippets so that team devs can reuse them freely.
- Implemented an extremely consistent CSS (Sass) codebase with components, etc. Kinda like Bootstrap/Foundation/Semantic-UI but just an internal framework, with styles following BEM methodology and widgets driven by Ember.js.
- Front-end DeveloperConsumerAffairs.com (via Toptal)2014 - 2015
- Taken part in transitioning from Brunch.io and to a set of gulpjs tasks as a modern frontend build system.
- Taken part in moving the legacy Backbone.js-based parts of the app to AngularJS.
- The process was largely agile (in a good sense), so a large amount of time spent on reviews, cooperation and improving the code quality.
- Not being a Python developer, learned a lot of Django/Jinja quirks and goodnesses.
- Lead Front-end DeveloperAkzia.iNets (Interactive Digital Signage)2013 - 2014
- Coded the highly-interactive and complex front-end app that is the client UI for payments processing module.
- Created many non-trivial and non-standard animations using AngularJS hooks, CSS3 Transitions / Animations, SVG animations, and GSAP (GreenSock).
- Project was run on a specially designed dual-touch-screen multi-media device (Akzia.iNets project).
- Technical Project ManagerConvergent Media Group2012 - 2014
- With a help of great dev team (being a manager, an architect and partially a developer), developed front-end app for complex advertising platform.
- Managed and developed an internal file storage and synchronization system.
- Analyzed business requirements for technically challenging projects.
- Led the development of company's technical projects, both external and internal.
- Architect, Senior Developer, Team LeadIndependent Consultancy2010 - 2014
- 27 internal corporate projects done since 2010 and up to Spring 2014 in parallel with other official contract-based jobs. This is consolidated position, while all of the projects done are under NDAs, a lot of experience was acquired working on these projects.
- Main areas: web development, complex front-end apps, complex animations, web architecture, scalability architecture, real-time systems (with Node.js), kiosk apps, and web APIs.
- Implemented 7 complicated UI apps with AngularJS, 2 of them are responsive and run on mobile. 2 animation-heavy apps were created for kiosks.
- Implemented 5 inter-corporate CRM, financial accounting, decision support systems with ASP.NET MVC.
- Took part in 3 Ruby on Rails-based projects alongside with customers dev teams.
- Implemented 2 high-scalability real-time systems with Node.js for financial analysis and collaborative doc flow.
- Implemented around 15 RESTful web APIs (not real-time) with Node.js backed by MongoDB / PostgreSQL and other corporate back-end APIs.
- Designed about 10 UIs for different apps (mobile as well).
- Managed 12 development projects as PM (planning, estimates, strategy, customer communication).
- Some of projects were done as a Team Lead with teams of up to 5 developers.
- Senior DeveloperRolotex / PortsAmerica2011 - 2013
- Developed back-end services for large-scale system (Marine Terminal Operations System) using Microsoft .NET web stack.
- Took part in architecture decisions for the entire solution.
- Reviewed the solutions and complex strategies to eventually migrate legacy system to new platform.
- Performed code and UI reviews.
- Developer, IT ConsultantRoyal Travel LLC2011 - 2012
Technologies: .NET, C#, ASP.NET, ASP.NET MVC
- Developed the tools and app for internal accounting processes.
- Reviewed the corporate IT strategy for internal projects.
- Project Manager, Architect, DeveloperYouFashion Online Lingerie Store2009 - 2010
- Developed the eCommerce platform based on Microsoft .NET web stack.
- Managed the dev team working on new features for both external and internal eCommerce services.
- Implemented the payment processing gateways and payment providers integration.
- Responsible for overall technical project management and solution architecture.
- CEO, Owner, Lead Architect, Senior DeveloperIDEA Consulting Agency (ex- Infinima Design Studio)2006 - 2009
- Organized the outsourcing development team as a business unit.
- Managed the most valuable high-priority projects.
- Embedded Scrum as team organizational methodology.
- Applied most Extreme Programming practices into company's development flow.
- Pioneered TDD and BDD as development driving practices.
- Developed (architectured and coded on my own) the highly configurable and flexible MVC framework on ASP.NET platform (prior to ASP.NET MVC was out) which was used in most company's web projects.
- Worked out agreements and SLAs for company.
- Completed over 30 large- and medium-scale projects and many more smaller ones as architect, developer, and team lead.
- Defined the guides for UIs company made for its projects.
- Developed the set of reusable UI components (CSS/HTML-based) before Twitter Bootstrap.
- Project Manager, Lead Developer, ArchitectParizhanka LLC (Lingerie and Underwear retail/wholesale network)2004 - 2005
Technologies: PHP, MySQL, FileMaker, proprietary platforms
- Created Data Warehouse and OLAP solution as a university graduate project.
- Built up a solution architecture, Data Warehouse and Data Marts structure, and described use-cases.
- Coded a complicated ETL utility to sync OLTP system data with denormalized data warehouse.
- Designed and developed the entire report-view application to work with the Data Warehouse contents, specify analysis dimensions, and UI for OLAP cubes,
- Coded a facade around FileMaker database-backed solution containing actual business accounting information.
- Consultant, Project ManagerIndependent Consultancy2004 - 2005
- Worked as independent IT consultant analyzing the business requirements for projects, performing communication with customers, negotiating pre-sale and project terms, and planning the development process.
- Performed business analysis for customers on contract-based projects.
- Completed 8 projects during 1.5 years working as contractor and PM.
- Performed critical development and UI design for projects.
- Web DeveloperFreelance development2002 - 2003
Technologies: PHP, MySQL, HTML, CSS
- Developed web-sites as a freelance developer: around 25 contract-based projects.
- This was an iron age in web technology (IE5 and Netscape 4.7) - the good old times at the start of my development career.
- Leveraged nearly all of the web development anti-patterns possible.
- Junior DesignerRuzanov Design Studio / TechnoCOM Design / TAAD1996 - 2000
Technologies: Adobe Photoshop, Adobe Illustrator, Corel Draw, Macromedia Flash, Macromedia Fireworks
- Learned graphic and web design tooling.
- Learned the basics of web animation with Macromedia Flash.
- Created many logos, personal cards, blanks, letterheads, envelopes and other small designs using Adobe Photoshop, Illustrator, and Corel Draw.
- Acquired necessary design, usability, and composition skills that proved extremely useful for web and UI design later.