RayBenefield / dev-xp

:runner: A Monorepo of projects reaching towards EPIC proportions, maintained by one person.
MIT License
16 stars 1 forks source link
10x automation ci-cd company dex dx monorepo nodejs npm pomodoro semcom solo testing transmutation worklog

RayBenefield Logo

Dev XP

GitHub commit activity per year Travis CI MIT License Known Vulnerabilities

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.

  1. Developing and releasing NPM packages should take less than a single Pomodoro
  2. More steps to come...

Released Projects

None at this time

Projects in Development