Clients and products

Ambassadors is a provider of travel and event management software solutions and services for corporations, associates and trade shows. These products run on the Workflow Engine platform that I authored in 2000 and I supervised their execution, either as technical lead or as the head of the Event Software business unit.

  • : registration and badging for their annual meetings
  • : executive briefing center
  • : intranet corporate event calendar
  • : conference enterprise and seminars
  • : global event management

Software development lifecycle

Based on experience working with small and large projects (2 months to 3 years), both within a startup and a public company, the software development lifecycle typically includes all or most of these steps, to be coordinated between the project team and the client.
Many of these steps overlap or are iterative, as is typically the case in an Agile environment.

  • Finalize client contract, scope of work and service level agreement.
  • Build team, distribute key roles and responsibility for processes.
  • Communicate software development approach, communication channels and milestones. Revisit job descriptions, team members' goals and objectives, and overall department structure if needed.
  • Collect and reformulate business process requirements.
  • Compile project plan. Apply a multiplier based on the team and type of project to cover managed scope creep, imponderables, bug fixing and routine technology updates.
  • Author high-level design documents for client review and approval:
    • data dictionary
    • screen mockups
    • use cases
    • site navigation
    • layout, look & feel
  • Author technical design for internal review and ratification
    • entity-relationship diagram and relational database schema
    • object-oriented design including method names
    • unit tests
    • seeding of test and application data
    • evaluation of risks and scalability
  • Development and deployment planning
    • set up of development, test, user acceptance and production servers, including licenses purchase
    • set up of code source repository and build process
    • set up of backup and recovery servers and processes, distinguishing between user and application data (including code)
    • set up of high-availability strategy
    • acquisition of relevant development tools for the team and software plugins
    • scrupulous documentation
  • Actual development. Agile methodology is preferred, with iterative development, early and sustained client involvement. Scope creeps are managed. General development areas are assigned, but the team also works off dynamically prioritized lists of outstanding tasks. Communication, speed and flexibility are key.
  • Internal testing (by developer, by automated unit tests, by quality assurance and finally by management)
  • User acceptance review and testing
  • Deployment on production with communication of the new services' availability, as relevant
  • Post-live prioritization using a standard or custom issue/ticket tracking tool.
  • Initially, weekly updates with out-of-cycle updates. Build cycle with code freeze, nightly publishing of development code onto a test server, combined with weekly update of user database onto same test server.
  • Code branching for further development. Wash, rinse, repeat.