- It’s just me. I am the only developer. There’s no need of sharing the code base with somebody.
- I save some time. Maybe not a lot. Maybe ten minutes a week. That’s a work day a year.
- My Toolbox is leaner. Why carrying a tool that you don’t need?
- I don’t have to fear merge issues. I always commit to master :)
I am not a cowboy programmer living in the far west though. I have pretty strict rules:
- archive the code base once a day
- multiple backups
- if I start a new feature I finish it, then ship it. There’ no branch-and-roll-back because-I-don’t-have-time
- same for bug fixes. Get it done and then push it out
- keep previously deployed version handy, in case something goes south during deployment
- always shoot for idempotent deploys
- I have a crystal clear idea of what I am working on. There’s no switching between feature and bug fix branches. I work on something until I am done.
- I always work on something small. I have at most 2-3 files open at once. If I have more it’s usually a red flag. It might mean that I am working on two tasks at a time or the task I am working on is too big because it requires me to change too many files.
- I am conservative. If I am bringing on a new lib I explore it and make it work in a playground project before including it in my code base.
Of course if you are part of a team it is mandatory to use a SCM system. There’s probably now way around it.
I feel kinda lucky to be in this situation. Especially because I skip right away potential issues related to merging.