desoleary / portfolio

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Portfolio Highlights

More than anything I try and setup myself and the team for success by using my extensive experience to come up with simple solutions to hard problems and develop systems that are highly testable and maintainable.

Software Development Architect

- Highly Passionate Software Architect/Development Craftsman
- High energy avid learner always in the pursuit of learning and creating best practices
- Extremely hard working and committed to coming up with plugable solutions that follow SOLID principles
- Fully aware that while I know a lot there is always much more to learn and improve upon
- Stand up for the team as a whole and believe that the team dynamic is of utmost importance
- Do not over architect
  - Things change once you start implementing and learn more through more detailed research
  - Break things down into smaller pieces and provide detailed todo list where possible
  - Be careful with attempting to make decision that can be left for later as you will find that you will be better placed to make better judgements with you and the team future self
- Only decide on what you know now and leave the unknown for later when you have more knowledge
- Promote vertical slices of work
  - Needs to include detailed wire frames collaborated with the whole team and not just the PO (product owner)
  - Development team needs to take ownership of the product and should be given responsibility and feel empowered if they want to grasp the opportunity
  - Fail fast and get feedback from your customers early to make sure we are going in the right direction and make them realize we here to listen and consider their feedback

Communicability

  - Confident in coming up with solutions to hard problems and more than willing to put in the work to communicaate solutions that is palatable for business and fellow developers
  - I try to come into conversations in good faith and feel it is important for everyone to have their say and have often found that hard conversations are needed in order for a team to go from from forming, storming into performing
  - Things should be talked out as a team until the majority of the team reach consensus or in rare cases where the manager has to make a decision and as a team we should stick to that decision unless something comes up that questions the decision.
  - I undertook the following responsibility:
  - Lead by example:
    - Work towards continous improvement through refactoring and new learnings.
    - The only way I found the ability to at times make radical refactorings based on new knowledge has been completely down to excellent API and especially UI tests against each business requirement
  - Lead by example from a technical and personal point of view
    - Each stack has been developed looking at best practice out there and coming up with even solutions exemplified esp. React & Redux + Rematch

Broad and deep technical knowledge

  - Major Frameworks: Ruby on Rails, Laravel, React + Redux, Java (JEE), Knockout JS, Grails
  - Git, Mercurial
  - Amazon S3, Google App Engine, Heroku
  - RESTful API (AMP for Endpoint API, Shaw Communications SOA Services), SPI, API credentials (read-only and read-write) and rate-limiting based on API key.
  - API Documentation: [SpyRest](http://www.spyrest.com/), [JsonDocs](http://jsondoc.org/)
  - Material UI, Webpack, DataTables, JQuery, Bootstrap 3.x
  - Languages: Ruby, PHP, CoffeeScript, C#, Python
  - Database: PostgreSQL, MySQL, MongoDB, Cassandra, Oracle
    - Window functions, rollup tables, hierarchy structures
  - Browser Testing: Dusk, Capybara
  - BDD (Behaviour Driven Development), TDD (Test Driven Development)
  - PhpUnit, Behat, RSpec, Jest, Enzyme, Teaspoon, Storybook
  - SCRUM, Agile
  - i18n
  - Capistrano, Chef, Bugsnag, Datadog metrics, New Relic
  - Development Guides: Ruby, JavaScript, CSS, New Developer Setup
  - Customer Support: Fault Response
  - SSO, OAuth 2.0 with OpenID (Front and Back Channel Logout used in combination)
  - Security: Brakeman, r00tcamp (Intensive Cisco Security Training)
  - Automation: BDD Testing Infrastructure, Moving mongo database, Demo Data (Used for customer demos),
  Automated Reconciliation platform (Barclays, Canaccord, HSBC and many more)
  - Single Table Inheritance, Feature Switches, oAuth, SSO
  - Scalability:
    - CAP theorem (Consistency, Availability and Partition tolerance)
    - Maintainability, technical debt should be under control, continuously refactor based on new knowledge
    - Avoid single point of failure

Responsibility

  - Develop simple interfaces to complex problems
  - Promote helpers used across the application to speed up development
  - Document code which describes the architecture and reasoning behind it and examples of usage
  - Very aware of the fact that architectural decisions are expensive and should be monitored and reassessed all the time

Management Skills

  - I always try to lead by example and the first person to help others
  - Good mentor by showing the colleague the ropes and allow them to learn through action and sharing knowledge and tips I have learnt in the past
  - Planning and Prioritizing high level projects and get into detail where needed

Analytical skills

  - Designed the entire system based on received requirement
  - Very active in story mapping, product backlog, sprint review, sprint planning and retrospective (fireside talk, dealing with difficult conversations at times in order to come to a strong team)
  • creative and solution oriented
  • Passionate about delivering quality software that is both clean and maintainable
  • Hard working and dedicated to do what is needed to get the job done
  • Experienced in Software Architecture
    • RESTful API
    • Ruby on Rails
    • Laravel
    • Database
    • pub/sub
    • web hooks
    • Hierarchical models
    • Single Table Inheritance models
      • Eloquent PHP

    • Auditing
    • Testing Infrastructure
    • Approval System
    • Accounting System
    • Time Off and Timesheet Management
    • Cisco Security Plaform (AMP for Endpoints formerly Sourcefire)

Learnt the following technologies

  • Each library and framework choosen has been fully researched and tried out practically
    • I have at times worked with a framework for example a heiraracal
  • Laravel (PHP equivalent to Ruby on Rails)
    • Gives me even better perspectives on what works well
    • Hierarchical model ()
  • PHP 7.3
    • I came into PHP with the preconception that it sucked and was all over the place but how I was mistaken
      • PHP 7.x is excellent
      • Has really good tools in IDEs especially
  • React (UI Component Framework)
    • It has been a pleasure to work with React
      • Clean and concise architecture
      • Fully tested using jest, enzyme and storybook
    • Validation engine matching Laravels
    • Improved performance by only re-render when you need to.
  • Redux & Rematch (Application State Management)
  • Localized from scratch
    • ESlint, lodash, webpack
  • Material UI (React components that implement Google's Material Design.)

Architected the system from scratch

  • Intensively learnt from by the best Architect I have ever have the pleasure to meet
    • Took on a high level architectural role
      • How these new systems will interact with other subsystems
      • Came up with detailed designs and researched how others do it
      • Design was focused on providing the biggest bang for our buck and outlined potential improvements
      • Designed in a way that makes intuitive and efficient
      • Lead a team of developers on two separate projects
        • Time Off System
          • Time Off Policies need to be defined first
          • Accrual System (Time Off Adjustments)
          • Public Holidays (Paid / Unpaid)
          • Approval System (Automated system to ensure each manager have a full view into impact of approving time off)
      • Reports & Dashboard widgets
      • Wired framed using moqups
      • Weekly one-one-one meetings with developers
        • Built up a relationship and excellent rapport
        • Mentored and offered help when asked
        • Always available
      • Came up with the full DB architecture in collaboration with the lead architect
        • Big focus on consistency and using the power of the database
          • Rollup tables to provide excellent summary information with the use of triggers

Hobbies & Interests

- Philosophy
  - Dale Carnegie (How to win friends and influence people)
  - Jordan Peterson (Take responsibility in life and look for fulfillment)
  - Sam Harris
- Cycling
- Reading (J.R.R. Tolkein, Harry Potter series)

What I have been up to

Software Development Projects

Rails Testing Guide

SOA Principles and Design

Scrum Notes

Behat & Laravel BDD Automation Framework

About

License:MIT License