My Development Folder Structure

This document contains my personal opinions and preferences. Everyone sets up their development environment differently, and this is how I setup the folders in mine. If you have any suggestions feel free to email me (bottom of page) or hunt me down and stalk me (please don't unless you're a rich attractive smart female, then by all means stalk me. Ps: oxford comma girls only. Pps: I'm INTJ)

Why??

I believe it is important to keep your projects, code samples, notes, pdfs, books, etc organized. This structure will make everything easier to find, and with most folders only being 4-5 characters long the folder paths don't get too long and unruly. The way I have organized everything makes it convenient to copy info on a certain subject to someone, and you can easily exclude your projects or learning materials.

With a simple to remember and short folder, code at the root of your home folder, or C: drive, it is easy to access from the terminal and from editors.

I have tried other organizational structures and found this to suit me well. Organizing first by type (books, code, proj) then by language was an absolute disaster for me, never will I do that again. I can only tell you what works for me, and maybe it will work for you or maybe it will inspire you to make a system that works better for you.

Folder Structure

The first thing I do is setup my folder structure. I usually place this in ~/code/ for linux and c:\code for Windows. In this code folder I create folders for each language I frequently develop in, and a generic coding or tech folder for misc items. A folder for unsorted items can come in handy when you are frequently downloading material from the internet.

For languages (create each when needed):

  • books - for storing ebooks
  • code - code samples
  • docs - documentation, pdf's, websites
  • learn - a folder to keep notes and projects related to learning a new language, sometimes this is not needed but can be very useful to separate learning material from good reference material
  • notes - your own personal notes, usually text documents
  • proj - where all of your projects for that language are stored
  • tools - useful tooling, either downloaded or executables from your own projects

Example:

code
    coding - misc tech/coding stuff
    db - database related documents organized by database
        datasets - collections of various datasets, passwords, corpi, and other useful collections of information
        mysql
            books
            code
            docs
            notes
        nosql
            couchdb
                books
                code
                docs
                notes
            mongodb
                books
                code
                docs
                notes
        postgresql
            books
            code
            docs
            notes
    haskell
        books
        code
        docs
        learn
        notes
        proj
    js
        books
        code
        docs
        notes
        proj
    python
        books
        code
        docs
        notes
        proj
    rust
        books
        code
        docs
        notes
        proj
        tools
    scala
        books
        code
        docs
        notes
        proj
    ts
        books
        code
        docs
        learn
        notes
        proj
    unsorted