We all need a Development Manager

As a solo developer, it is easy to get lost in what you are doing and not necessarily working towards where you should be going. An excellent example of this is refactoring; “If I refactor this method/class, it will be easier to maintain.”

The chances are, if you smell an issue with a class or method, it needs to go through your refactoring process, it isn’t as though anyone else is going to do it, you are just one person.

The question is, does it need to be dealt with now? As developers, we are all guilty of wanting to refactor, and then persuading ourselves that the task is more urgent than it is.

I’m working towards releasing our SaaS product, mid-way through last year I decided I needed a little help to ensure I get to the release as efficiently as possible and not stray too far off target.

I decided to recruit the Wife.

Every Sunday, I gather all the tasks I’m planning to work on over the next week, the Wife and I then have a short meeting.

My Wife is not a Developer and has never worked in a field related to development. That doesn’t matter, all that matters is that your sounding board knows you.

I start by stating what I’m aiming to achieve for the week and then go through each of my planned tasks. For each task, I give a one-line explanation of what it is and how it will help achieve my goal. If I’m unable to provide a reasonable justification, or my Wife questions the validity of the task, it gets moved off the list.

Your sounding board needs to be someone that understands you. Your partner isn’t deciding whether you are working on the correct tasks, they are there to listen, you’ll both know if a task needs to go to the back of the list.

The longer you keep this up, the better the result.

Connect multiple Docker compose apps

Much of the time I’m working on the Costs to Expect App and Website I code against the live Costs to Expect API. I’m reading data, so it makes sense to read live data, in my case the expenses for our children.

This approach isn’t suitable when I’m working on editing, creation, and deletion tasks; I don’t want lots of test data appearing on the API, and I don’t want to modify or remove live data.

In this instance, I want a local version of my Apps to use my local development instance of the API; this is simple to set up with docker networks.

I use Docker for development, the App, Website and API development environments are all Docker compose.

To connect two or more, compose apps, you need to create a shared network and then update each docker-compose file to use the newly created network.

To create a network, in your CLI enter.

docker network create <network-name>

Now, update your docker-compose files, we need to add a networks section.

  networks: 
    default: 
      external: 
        name: <network-name>

Now, when you bring your apps up, they will be able to communicate. Assuming your apps connect over HTTP, your apps can talk to each other using this format, http://:. In my case, my Website and App connect to the API using http://api:.