A peer of mine recently asked about how I manage local code (projects, solutions, Git repos, etc.) that may or may not be synced to a cloud repository (GitHub, Azure DevOps, etc.) Since I previously blogged about How I Blog – Updated 2018 and I’m a fan of re-using how many keys I have left I thought I would share my personal local development process.
I like to to tell people that “I play a developer on TV”, meaning it has been at least 10 years since I’ve written code as a consultant that was actually deployed to a production system. Sure I’ve written (or collaborated on) many samples (ex. .Net Core console sample for Microsoft Graph) and proof of concepts for customers these past 10 years, but it wasn’t the primary focus of my job. So balance everything that I share with what others such as my friend Steve Smith (@Ardalis) share on his Weekly Dev Tips blog and podcast.
Local Folder Structure
Currently I develop on Windows so folders and paths will reflect that. I don’t use the default folder that any of the IDEs or tools below use (generally under my user profile folder such as “c:\Users\[username]\…”). Instead I create a new folder called Projects at the root of my primary drive (i.e. “c:\Projects”). Below that folder I then have the following:
- (All other local-only projects, ex. c:\Projects\localProject1)
Using the underscore for _DevOps and _GitHub means that those folders should be easy to find at the top of this folder structure even if I happen to inadvertently sort the folder.
As for project folders, I’ve thought about subdividing based on topic (ex. SharePoint Online, Azure, Microsoft Graph, etc.) or technology (ex. ASP.NET Core, Blazor, Console, etc.) but since I rarely have a large number of folders I haven’t done anything yet. I do name my folders and projects based on topic though (ex. BTJ.SPO.ProjectName, BTJ.AZ.ProjectName, BTJ.MG.ProjectName, etc.) This helps at least group together similar projects.
Git / GitHub / Azure DevOps Tools
I use a mix of the following tools to sync my repos and monitor issues or pull requests.
- Visual Studio Code (VS Code) – VS Code has integrated supported in-box for Git. I use this for committing and pushing code to my GitHub repositories.
Azure Repos Extension for Visual Studio Code – There is an extension for VS Code that adds additional functionality (ex. monitor builds, pull requests, and more) directly into VS Code.
- GitHub Desktop client – GitHub offers a desktop client that allows you to sync code, create branches, review commit history, and more. When I’m not directly in VS Code working on a repo I generally use GitHub Desktop.
- Visual Studio Team Explorer – In general I start most projects in VS Code these days. For the projects I do work in Visual Studio 2019 (ex. Blazor and some ASP.NET Core) I use the Team Explorer functionality (now available out of the box) to sync repos. The integration with Azure DevOps and GitHub is good as well.
- GitHub mobile app – I do submit and review a GitHub issues or pull requests on an infrequent basis. When I am not at my desk I tend to use the newly released mobile app for GitHub.
- Browser based pull requests – Some repositories that I collaborate on are very large and not well suited to sync locally (ex. Azure docs, Microsoft Graph docs, etc.) For these I prefer submitting a pull request directly in the browser. I previously blogged about this at How to Edit Microsoft Documentation on GitHub.
I hope you have found something useful in this post. Please share your own suggestions or recommended tools / processes in the comments below. Happy coding!