Principles:
Privacy and Security. Users expect it, regulations require it.
Integrated. Users expect the ability to connect to other services.
Responsiveness. The system needs to be nimble and responsive. Also at scale (below).
Scalability. With growth, potentially explosive, the system must remain available and responsive.
Agile. Product will develop, often responding to users’ feedback. The development cycle needs to be very short.
Maintainability. Ensuring that the codebase is well documented and readable, with rapid understanding and onboarding for new hires.
CULTURE
Topline’s engineering culture will be to foster the following principles:
Optimize for programmer happiness
Technology choices should empower engineers to do more with less.
Convention over configuration
Developers should not be responsible for re-engineering best-practices
Simplification
Getting our work to the user as early as possible
Empowerment
Giving engineers the tools the need and the freedom to complete their work independently.
Rigor
Expecting engineers to follow all paths to solve problems and apply reason to achieve successful outcomes.
Data Driven
Ensure that user feedback is captured via voting, regular Q&A with product leaders, and usage data as a major component of product roadmap
Ensure each goal has associated metrics or key performance indicators (KPIs) to monitor progress and success. How will you measure privacy, integration, responsiveness, scalability, agility, and maintainability objectively?
PROPOSED TECHNOLOGIES RATIONALE
The intended users of Topline are likely to be accessing the tool using their desktop or mobile phone. Accordingly, the infrastructure should be simplified to allow for deployment to iOS, Android and Web with minimal code maintenance.
Business Logic
While Topline exists to present data in a CRUD ( create, read, update, destroy ) fashion, a decent amount of background processing is expected to engage users and to automate connections between users.
Peripheral Systems
Employ components, integrations and external services for anything that’s not core business:
CyberSecurity (external) - CloudFlare
Performance - Cloudflare
User support - Gleap
Internal Bug Reporting - Jam
User behavior tracking - Google Analytics and PostHog
Email gateway - Mailgun
Payment gateway - Stripe
Asset Storage - AWS S3 or similar
Error Tracking - Sentry
Performance Tracing - Scout
Data Storage - Postgres
Caching - Redis
SYSTEM ARCHITECTURE DESIGN
Topline will utilize a monolith web application architecture to support its web services to users. The monolith will combine data storage, caching, background web processing and notifications, with integration to 3rd party providers for ancillary services. It will use client web wrappers for the iOS and Android native clients. Topline will leverage Jumpstart Pro as the SAAS wrapper, to avoid writing boilerplate code.
Technologies
Backend
Rails, Ruby
FrontEnd
Slim, Hotwire, Stimulus, Turbo 8 (Server Rendered Views)
Background workers
Sidekiq, Redis
Mailgun
Application Monitoring
Scout
Error Tracking
Sentry
Static Asset Hosting
Amazon S3
Application Hosting
Cloud66 / AWS -> Heroku
SEO
FriendlyID slugs (e.g. withTopline.com/tyler-horan)
AI driven meta tags with semantic entity parting ( Google ML ).
Automated Sitemaps with automated pings delivered to Google, Bing & Baidu.
Structured Snippet with Topline Score
Internationalization
i18n based on browser locale (en, es, fr, zh)
Translations from Google Translate. Future versions use human translations.
Testing
MiniTest, Capybara, UserTesting
Penetration Testing
Pentest (https://github.com/hakatashi/pentest)
Advertisement
Google, Facebook and Baidu tracking pixels inside Cloudflare Zaraz
Quality Assurance
Use of Review Apps to stage important feature development. Documentation of features in Notion and use of manual QA testing on non-standard work hours contractors.
Support
Gleap Support Built In
Email Mailto from application creates tickets on notion project board.
Admin and Support Team can Impersonate a user to debug issues.
Feature Flagging
Exponential Rollout to percentages of users on major releases.
Day 1: 1%
Day 2: 4%
Day 3: 16%
Day 4: 64%
Day 5: 100%
Technology Rationale
Choosing boring technology
Choosing technology where the output per engineer is highest.
Alternative Evaluated Choices
Backend
Javascript/NodeJS
Popular, large talent pool. Lower output per engineer.
Laravel/PhP
No strong support for multiple platforms
Pay Lock in for support on modules.
Front End
React
Large library of UI components, but separation of state requires a lot of additional developer overhead in separating front end from back end.
Vue
Similar structure as React, but lacking the backing of larger enterprises like Facebook.
Angular
Large library of UI components, but separation of state in bi-directional flow complicates the web application.
Ember
Legacy framework with a much smaller pool of application developers.
Background Processing
Resque
Similar offerings are available with other providers, but require account provisioning outside of the PAAS ecosystem. These include:
Amazon Simple Email Service
Mailgun
Postmark
SendinBlue
SMS
Similar offerings are available from a number of providers. Twilio has better documentation and the pricing difference at low volume is marginal.
Plivo
Vonage
Application Monitoring
Skylight
New Relic
Datadog
User Tracking
Using third party analytics services makes it more difficult to be GDPR and California compliant. But a number of third party tools are available.
Google Analytics
Heap
Error Tracking
All the providers below offer similar tooling and monitoring of the application.
Sentry
Rollbar
Airbrake
Raygun
Asset Hosting
AWS S3
Raw usage of cloud providers requires maintaining additional accounts, a security vulnerability.
Google Cloud Storage
Similar performance to Amazon. Raw usage of cloud providers requires maintaining additional accounts, a security vulnerability.
Azure Storage
Similar performance to Amazon. Raw usage of cloud providers requires maintaining additional accounts, a security vulnerability.
Application Hosting
Bare metal hosting of the application using IAAS (Infrastructure as a service), should be avoided in favor of PAAS.
DevOps professionals are required to maintain infrastructure otherwise.
Google Cloud
Compute Engine
App Engine
Amazon Web Services
Engine Yard
Beanstalk
EC2
Azure
App Service
Virtual Machine
Engineering Org Structure Evolution
2024
Flat structure with majority of development work completed by CTO early in the year. Following completion of initial V1 build, development work should be parallelized by allowing additional engineering talent to take ownership of a particular feature dimension.
2025
Addition of VP of Eng or Engineer Manager to organize multiple squads (teams) into agile sprints. Each squad should be oriented around development of a particular feature dimension. Squads can be spun down, re-organized and spun up depending on company ORK and goals for the year.
2025- 2030
Expansion of engineer’s per squad, with the addition of domain experts on a particular aspect of the technology stack (e.g. front end, back end, data science, etc.)
Hiring Roadmap
Q2 2024. NA, CTO leading application development to V1, augmenting development with contractors for easily compartmentable tasks when needed. (Figma to HTML, Automated MiniTests, etc.)
Q2-Q3 2024. 1-2 Full Stack Engineers. Each should take ownership of high impact product feature dimension
Q4 2024 - Q1 2023. 1-5 Full Stack Engineers. Evaluation of Product Roadmap to determine level of application support needed to meet business goals.
Hiring Sources
CTO personal networks
Conferences - RailsConf, RubyConf
Job Boards - Topline, Turing, TopTal, Hired, HackerNews, AngelList
Hiring Screening Process
Interest conversation w/ CTO
Technical project
½ take home project
Testing ability to create an app from scratch that:
Pulls data from an endpoint
Stores data from a form
Customizes the view of data presented to the user.
Highlights front end, back end and network system design.
½ project pairing with CTO or other engineer
Continuation of the take home project to full completion.
Systems Design conversation with engineer
CEO and non-eng culture fit conversation