Reorganizing My Digital Workspace
Published: 2020-02-21 19:00:26

---
title: Reorganizing My Digital Workspace
published: true
date: 2020-02-21 13:00:00 UTC
tags: 
canonical_url: https://www.thatamazingprogrammer.com/blog/reorganizing-my-digital-workspace/
cover_image: https://res.cloudinary.com/programazing/image/upload/v1582048747/blogposts/2020/Reorganizing%20My%20Digital%20Workspace/Reorganizing_My_Digital_Workspace.jpg
---

_Image by [fulopszokemariann](https://pixabay.com/photos/documents-files-records-file-3816835/)_

I recently came across a tweet by [Kyle Shook](https://twitter.com/elyktrix) that simply read [What is your coding folder called?](https://twitter.com/elyktrix/status/1227052709150412800) I didn't think much about it as I'd used the same folder structure for years. After reading some of the replies it occurred to me that I really should rethink how I store my code. This is the system I came up with.

Originally I used the same pre-made layout most everyone who uses Git does with one small twist, I had a trash folder;

* Source
  * Repo
    * Where all of my projects lived
  * Trash
    * Where my short term experiments lived

I really didn't think much of it since I used one or two projects at a time. When I saw some of the more elaborate layouts it got me thinking that maybe I should organize things in such a contextual way that I could quickly find whatever I needed without much thought.

I started out by making a root folder called Dev and a clear divide between **personal** and **professional**.

**Personal** was sub-divided into the more common project types I tend to work with:

* Challenges
  * Things like [AdventOfCode](https://adventofcode.com)
* Exercises
  * [CodeWars](https://www.codewars.com), [Exercism](https://exercism.io), etc.
* Mentor Assignements
  * Tasks assigned to me by various mentors throughout the years
* Playground
  * Where temporary things like proof of concepts live
* Projects
  * Any active project I'm working on
    * Inactive
      * Projects I'm not working on
    * Info Projects
      * Copies of informational projects like Awesome lists, onboarding steps, workflow outlines, etc.

**Professional** was mostly modeled after [Grant Harwood's](https://twitter.com/gbhorwood) layout:

Client, Deployment Target, Role.

professional/fooinc/site/fooinc-api, professional/fooinc/managers/fooinc-managers-fe

Though there is also a folder called Interview Code Assessments where I keep a copy of every take-home interview test I've ever done.

Lastly, there's a folder at the top directory called nuget-packages where I store local nuget packages while developing them. I find it easier to publish them all to one place so I don't have to keep track.

After I got the folders in place and everything moved over I set up a task to back up my Dev directory to an external hard drive that I leave plugged in.

I personally use [FreeFileSync](https://freefilesync.org/) to manage my file backups but you could make a script and schedule it with whatever your operating system uses. Just remember to filter out node_modules. In my case, FreeFileSync can save a profile as a batch script and I use Task Scheduler to run it when I'm asleep, well when I should be asleep anyway.

Just in case you want to copy and paste the folder names here they are all together:

* personal
  * challenges
  * exercises
  * mentor-assignements
  * playground
  * projects
    * inactive
    * info-projects
* professional
  * interview-code-assesments
  * client
    * deployment-target
      * role
* nuget-packages

I hope this helps you the way it's been helping me recently.

How do you organize your code folder? Leave a comment below and let me know!