The Developer's Guide to Budgeting Your Money (What To Do With Your Pay Check)
Tags: career, productivity, motivation
Published: 2022-01-19 15:21:31

## Introduction

> Budgeting is hard, and yet, it is dead simple.

Like todo lists, there are no shortage of apps and systems for creating and managing a budget. However, the concept is dead simple.

It's sort of like the JavaScript ecosystem (as an example). On one hand, the vast amount of bundlers, compilers, lint tools, etc. can seem intimidating and overwhelming at first.

![The Developer's Guide to Budgeting Your Money](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lctp625vd4rtqz69tnms.png)

> The way to move forward in learning is to demystify the apparent vastness of the tools and explain the simplicity of the general concept.

Likewise, a budget can be overwhelming due to the vastness of the tools and systems as well as the responsibilities stewarding our money well.

However, the general concept. In this post, we'll demystify budgeting and provide some practical and technical pointers.

## What is a budget?

![The Developer's Guide to Budgeting Your Money](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3z6wdx7rkzpc2wadp6lv.png) 

A budget is a log of your cash (money) flow.

Your cash can flow in two direction: in and out.

Cash comes in as a reward for your work, and cash comes out as your cover expenses.

To put it another way, a budget is logging your income and organizing/controlling how you use it.

To use software development terms, a budget is like a function. It receives arguments, and there is logic to do something with those arguments.

## So, what do I need to do to create a budget?

![The Developer's Guide to Budgeting Your Money](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9d0t4tvm4pbgqjrm7wqg.png)

The first place where you mind may go in response to this question is to ask: "What app should I use?"

Before we go there, let's begin with the basics.

To create a budget, you need to know your income and predicted expenses.

Then, you need to represent your income and predicted expenses in a month-to-month format.

Next, you "assign" a part of your income to each predicated expense, keeping track of the remaining income after each subtraction.

The aim is to assign all of your income to a predicted expense (or to a goal/task like "short-term savings") and to not spend more money than you have.

Finally, you need to log the real-time expenses (transactions) that occur and categorize them to the matching predicted expense.

Like with analytics for an application, as time goes on, you'll be able to gauge your (spending) habits and adapt accordingly to ensure your reaching the main goal. 

It doesn't matter if it's with pen and paper, a custom web application, a CLI tool, Mint, YNAB, a [Product Hunt find](https://www.producthunt.com/search?q=budget), or whatever.

Again, all that matters is that you log your income and control how you use it.

For a fun visualization, however, I'll represent the budget process using JavaScript code:

```jsx
const PAYCHECK = 2000;
const PAYMENTS_PER_MONTH = 2;
const MONTHLY_INCOME = PAYCHECK * PAYMENTS_PER_MONTH;

let leftToBudget = MONTHLY_INCOME;

let predictedExpenses = {
  rent: 0,
  groceries: 0,
  internet: 0,
  subscriptions: {
    spotify: 0,
    netflix: 0,
    // ...etc,
  },
  // ...etc,
};

let actualExpenses = { ...predictedExpenses };

function assignIncome(category, predictedCost) {
  predictedExpenses[category] = predictedCost;

  console.log(`Assigned ${predictedCost} to ${category}.`); 
  console.log(`${leftToBudget} left to budget.`);
}

function trackExpense(category, actualCost) {
  const previousRemaining = actualExpenses[category];
 
  actualExpenses[category] = actualCost;

  const remaining = previousRemaining - actualExpenses[category];

  console.log(`Spent ${actualCost} on ${category}.`); 
  console.log(`${remaining} left to spend on ${category}.`);
}
```
 
## Quick Tips

### 1. Make sure to capture your seasonal expenses.

![The Developer's Guide to Budgeting Your Money](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/udhk14r0c44k0vs3lggm.png) 

I find that budgeting is the easiest to work with when you're tracking everything month-to-month.

For a lot of budget items, this is intuitive. Rent/mortgage, groceries, SAAS subscriptions, etc. all fit nicely in a month-to-month model.

But, what about things that aren't month to month? Vacations, Christmas gifts, birthday gifts, seasonal donations, house projects, car repairs, etc. don't fit nicely into a month-to-month model.

The trick is to take the yearly average of these expenses, divide them by 12, and include them in your month-to-month budgets.

Even if you don't have any actual expenses for those items in the month, this will prevent your from using money that you technically don't have for other predicted expenses.

For example, you don't want to include the average of $200/month for house projects into your groceries budget.

By doing this, when seasonal expenses come, you'll have the money already saved up and no surprises when you check your statements.

### 2. Include spontaneous sources of income.

Whenever you get a spontaneous source of income (i.e. a sold my coach on Facebook marketplace), you should include that in the month's income and assign/track that income accordingly.

### 3. Consider the trade-offs of automated vs. manual.

![The Developer's Guide to Budgeting Your Money](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sb3pj4nmrq9v7v1rq9y5.png) 

As I've mentioned, there are a lot of tools out there for budgeting, but you have to find what works best for you.

The concept is simple and whatever tool you use is purely for optimization purposes.

I won't get into comparing all the tools that are out there, but I will give a guiding principle for considering an automated vs. manual approach.

With an automated approach, you can sync a credit card and/or bank account to an app. The app will detect all transactions.

That way, you can log into an app, see your transactions, and categorize them without having to track those expenses in real-time (i.e. track an expense immediately after a trip to the grocery store).

In theory, this can save time, provide flexibility, and lower the risk of missing transactions.

This is the strength of the automated approach.

However, depending on how you're wired, this strength may be a weakness.

For some, the inflexibility of the manual/immediate approach to tracking expenses keeps them accountable to actually go into an app and track the expense.

With an automated approach, you may be tempted to wait too long before categorizing expenses given the flexibility.

If you wait too long, you may forget the category of an expense even though it has been synced, get confused by the AI that tries to predict the category, or give up altogether.

Whether it's through a manual or automated approach, it is better to track expenses sooner rather than later.

Everyone ticks differently, so you'll have to find what works best for you. Just remember, that as developers the temptation to over-engineer may be a stumbling block. Not always, but maybe.

### 4. Consider doing a side project to make your own budgeting tools.

It is highly satisfying to work on side projects that sharpen your technical skills while also intersecting with the practical needs of life.

Maybe you can find a fun side project.

For example, you can create an [Airtable](https://airtable.com/invite/r/cYBrPwqy) sheet to track your monthly expenses, learn [Visx](https://airbnb.io/visx/gallery) to visualize the analytics, and build the UI with [Remix](https://remix.run/).

### 5. Get professional advice.
Here comes my disclaimer: "I am not a financial advisor."

With that in mind, I do not want to dive into the complexity of how to use your income. Rather, I have focused on the general principle/approach of budgeting to demystify the intensity of it all.

That being said, I would recommend saving some money to have a professional review your budget, assess your life goals, and come up with a financial strategy.

This doesn't have to be a lifetime partnership, it can be a session or two (ok, maybe three) to get your bearings, and then handle things on your own.

![The Developer's Guide to Budgeting Your Money](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t6uzfama9q5rl7p6exva.png) 

### Conclusion
That's it! Hopefully, you have a better idea of how to go about budgeting, and the whole thing will feel less intimidating.

What is your approach for budgeting? What tools have you made (or want to make)? Drop a comment below.

As always, don't forget to like and share. Thanks.