July 11th, 2023 Scaling teams up around Adama By Jeffrey M. Barber

As I’m building a product with others now, the current model of development doesn’t scale that well. Today, I’m going to discuss a vision of scaling up a team around my platform.

It’s worth noting that the current system was designed around myself to amplify myself, so it works great in solo mode. However, it’s operationality irresponsible for a bunch of developers to share a single production environment for testing. Ignoring the production sharing conflicts, I also want to radically improve the developer experience for three groups of engineers: frontend, backend, and full stack.

For frontend developers, there are two goals of utmost priority. First, the time to test updating the UI should be fast. It shouldn’t require deploying and changes should manifest quickly from ctrl-S to browser. Second, we need an in-app debugger to discover what data is available; discovery of data is important and here is where we can place code generators to help bootstrap developers.

For backend developers, it shouldn’t require a deployment to production to test things. Here, I need to implement a solo mode for developers to test their changes locally. Beyond moving faster, an in-app debugger would be useful to validate the backend is working without a frontend.

The fullstack developer has the unique addition of updating Adama’s javascript (or even Adama). I’ve had various hacks for quickly interating on Adama’s JavaScript, but this needs to be formalized as part of the flow such that ctrl-S and a refresh can test the Adama client.

So far, I’ve revamped the frontend server to help frontend and fullstack with a server. The remaining bit is an in-app developer.

# run a server with . as the working path
java -jar ~/adama.jar frontend dev-server

# run a local server mirroring adama's client library from a local adama-lang repo
java -jar ~/adama.jar frontend dev-server --local-libadama-path ~/github/adama-lang/clientjs

I’ll provide updates in the future regarding a solo mode for testing Adama along with an in-app debugger.