Dev XP
A Monorepo of every project I work on, only maintained by me. It
includes node
packages, CLI tools, lua
scripts, Core Games
scripts,
websites, AHK macros, fish plugins, kak
/vim
configs, and much more.
What is this?
Dev XP is a long term experiment
featuring centered around a single question:
How close can a single developer get to Google scale
development?
My name is Ray Benefield and I have a
theory:
Entirely new and high quality open source SaaS platforms can be created in
LESS than a week; by combining the world's understanding of software
architecture, quality engineering, productivity, and project management with
the currently available tools and services throughout the open source
community.
From my point of view, this is a bold statement from anyone, but diving
deeper it is also very "flimsy" in its claim. Sooo...
Clarifications
---
The following bits are made to sort of define a "range" of what I mean by each
part of the above statement. They are not exact, not decisions, not solid
reasoning, etc. This is an experiment after all and every part of this will
constantly be changing as experience is gained.
---
End Product
---
I need to pseudo define "*new* and *high quality* open source SaaS platforms".
Here's what my expectations are for a "complete" platform might look like:
- Designed and developed **API First** to allow for integration opportunities
- Open sourced codebase, enabling dedicated developers to **assist in growth**
- Full **multi-tenant** solutions, maintaining users/organizations/etc. systems
- Realtime and high performance website meeting **PWA quality standards**
- **Fire and forget** persistence layer that is easy to scale with new features
- Accept payments from a multiple vendors allowing **monetization from day 1**
- **Trivial to develop** for the core developers to extend with new features
Again... not ***exactly*** what I'm shooting for, but I'm drawing a picture.
Bare with me. ;)
---
Engineering
---
We have learned a LOT over the many decades of software development. Below are
just some of the **many principles** that can enable our goal (no particular
order or reason for these being list, just potential):
- **Modularity**, **Code Reuse**, **Extensibility**, etc... you've heard of 'em
- Benefits of **Declarative** vs **Imperative** for ease of development
- Shared development tooling in the form of **testing**, **scaffolding**, etc.
- The value of going 100% **Open source** with your entire codebase
- Data processing patterns like **Event Sourcing** and **Stream Programming**
- Principles like **SOLID** with **dependency injection** and **open/closed**
- And sooo much more...
Some of those may not even be that important in the end, but the point is that
we've learned a lot. Seriously...
---
Productivity
---
People are learning more and more ways to improve their productivity.
Seriously... have you seen any of these **TED** talks or **Youtube** videos or
articles. I mean **Life Hacker** is totally a thing.
- **Pomodoro Technique** - 25 minute work sessions
- **Habit Building** - Routines make long stretches of work easy
- **Standardization** - When a group of tasks follow the same general rules
- **Planning/Roadmapping** - Preparing your day, or knowing your next steps
- **Health Management** - A healthy mind and body are absolutely important
- **Free Time** - Cuz constantly working is not efficient
- **Automation** - Well if a computer could do it for you, go for it
The idea here is that we have SOOO many ways to make time in this world.
---
Project/Product Management
---
Dem business savy people have learned a lot as well and a lot can be learned
from the many approaches that have been taken over the decades. Expect many
buzzwords... lol.
- **Agile Development**... we all pretty much know this stuff
- **Interal Communication Management** like how much, who, when, what, why?
- The concept of **Minimum Viable Product** is a very powerful one
- **Lean Startup Methodology** cuz less is more folks
- **Public Interaction** for things like building relations with customers
- **Transparency** in things like reasoning in decision making
- **Disaster Management** because you can't escape failure
Not my strongest portion, but still very important.
---
Tools and Services
---
Have you seen the open source landscape? Do you know how many products are
getting released every day? It is absolutely insane. So many of these can
accelerate your progress.
- **Javascript** can be used literally everywhere now thanks to **Node.js**
- **NPM** is a massively growing repository of tools/libraries/frameworks
- **Platforms as a Service** like **AWS**, **Google Cloud**, **Azure**
- **Functions as a Service** like **Lambda**, **Cloud Functions**, etc.
---
The Road Ahead
NOTE: I don't expect the above goal to be achievable for a year or two.
In order to create SaaS platforms on a regular basis, a strong base needs to
be built from an engineering perspective. The early work for this project is all
based around creating the most streamlined development environment possible.
Publishing new open source tools to accelerate engineering in other places will
absolutely be needed. There are a lot of pieces to creating software so each of
those pieces have to be slowly built on top of each other.
- Developing and releasing NPM packages should
take less than a single
Pomodoro
- More steps to come...
Released Projects
None at this time
Projects in Development