When I get a new laptop, it usually takes me about two weeks to reinstall all my developer programs, utilities and tweak the O/S settings to how I like them.

I know there are utilities out there to backup/restore systems, but this is usually if it is on the same hardware.

What would you recommend?

  • 4
    I view getting a new setup as a form of rebirth. Its an opportunity to set my system up differently and stops me getting in a rut. If I don't get round to reinstalling it or resetting it, its obviously not that essential. Sep 20, 2010 at 15:44
  • 1
    I’m voting to close this question because this is a general computer user's issue not specific to software development. Jun 26, 2021 at 19:40
  • Use an operating system that allows scripting the installation of your favorite tools. Jun 27, 2021 at 16:24

7 Answers 7


Over the years I've come to this set of habits, which works well for me:

  1. I stopped customizing so much. Before I used to tweak my desktop and Windows settings greatly. After a while I realized I grew dependent on these tweaks, and would get uncomfortable when working at a co-workers PC, on family members' PCs etc. Now I keep it down to just a few must-have changes, and generally keep my Windows and less important tools at default settings.

  2. I use multiple PCs, each dedicated to specific tasks. My work PC is a laptop, which I keep 'clean' for lack of a better word -- no private stuff, almost no games/multimedia/accessories, just my primary work tools. As such it rarely (actually, almost never) breaks, and I spend often keep the same Windows installation until it's time to replace the hardware (2-3 years). My home gaming PC on the other hand gets reinstalled far more frequently. But I don't care, it is easy to just reinstall and allow Steam to redownload all my games.

  3. Optional, use full-disk backup with system state. Actually I'm thinking about quitting this habit, because I haven't had to reload a system backup in ~3 years. But in the olden day Acronis Trueimage saved me a few times, by allowing me to just overwrite my full Windows + applications state with a known working backup. The built-in Windows Vista / 7 backup tool can AFAIK do something similar.

  4. Embrace Virtualization. I do all testing of new software in a VM, and I keep 'invasive' software (mostly enterprise server software) contained in VMs. I have my VMs on a external USB2 2.5" HDD; it's not the fastest but it works for me.

  • The first point is seriously challenging - I appreciate why and I've run into people who do the same and the problem is that you see them being less productive. My view is that you have to develop a flexible mindset - if you're not on your own machine then yes, absolutely, you have to be competent with the default toolset (and not be stressed about losing your tools) but as often as not a colleagues box is liable to be tweaked to their preferences so unless you insist that everyone runs vanilla setups you're not necessarily going to benefit (and vanilla all round would probably be bad!)
    – Murph
    Sep 20, 2010 at 8:04
  • 2
    @Murph : Challenging, yes. Less productive after the transition, not at all. It's just a different set of keyboard shortcuts and habits to commit to memory. Note that I said less customization of the OS and less intesively used tools -- I'm still in favor of customizing Visual Studio, Eclipse etc.
    – Jesper M
    Sep 20, 2010 at 15:32
  • 1
    +1, especially for points #1 and #4. Some customization is good, but the productivity gains most "tweakers" seek to gain are greatly outweighed by a "defaulters" flexibility and ability to stay on task in the face of change ("the new virus scanner software broke my 3rd party Windows Explorer replacement.. AGAIN!") . In my experience I've found that a majority of customizations are really just some user trying to do some thing in some old way, or is an outright refusal to accept an equally good but different method. ("I'll NEVER put my music in the My Music folder!") Jan 5, 2012 at 18:24
  • Now 10 years later docker is an alternative to virtual machines for a developer. Jun 27, 2021 at 16:25

Portable external disc (the regular spinning kind) with images of all your software on it, along with an image mounting program. All except the OS of course. Really speeds up the installation on a new system compared to the time when installing from CD/DVDs.

Put all your settings files in one place - for me it's "user-home" directory on C drive. Also, all portable software goes in there (in general, all software which can be easily copied). So that leaves only the installable programs. Before reinstalling get a screen shot of your Start menu (as stupid as it sounds - it works - you'll always forget to reinstall something, and it's a pain discovering it when you need it and haven't got the installation media near) and go from top to bottom.

Don't know what else to say ... could you be more specific with your question?

  • Short of listing out everything I use, and how to copy the settings/preferences for each app... not really.. Sep 20, 2010 at 2:33
  • +1 for the screenshot, but i generally take mine from the add/remove programs screen.
    – Ahmad
    Sep 23, 2010 at 5:56

That is way longer than it should take. How much time are you devoting to it? How much do you keep up with the progress bars?

If you have another computer, you can use it to check the progress of your dev system. Once you've installed your OS, immediately install network drivers, then VPN/VNC software like UltraVNC or Windows Remote Desktop. Then just login to the machine and install everything remotely. All you have to do is alt-tab, see where the progress bar is, then alt-tab back to your work.

If you get a laptop, why not just put it right next to you? Easy.

For settings, just backup the %appdata% folder on Windows or your entire home directory in Linux. This should get most of your settings.

For theme, just save the theme file in Windows or backup your theme according to your DE in Linux.

For me, it takes about a full day with Windows, and a day or two with Linux. 2 weeks is an excessive amount to be spending on reinstalling an OS.

  • Its two weeks, because I don't have a definitive list of everything I use, or need to hunt down the CD, or don't have time always to go through the entire process in one sit. Oh yes, not to mention syncing up all my logins, and project files. Sep 20, 2010 at 2:30
  • @Talvi Watia - Well, don't this as "wise", but why don't you make all those things then (make a list, collect all the CD's and so on) before starting? It isn't strange it takes that long if you can't find the CD. But in which case nobody can help with advice (save of "look in the closet, on the top shelf) ... the rest (syncing & co.) can all be dealt with in one afternoon.
    – Rook
    Sep 20, 2010 at 3:09

I'm a huge fan of VMs (virtual machines) when it comes to development environments. The benefit of virtual machines is that you have a portable, machine independent snapshot of your environment. If you wind up working on team with other developers, cloning the VM is a snap.


I wrote a PowerShell script that is used by my entire team. Mind you, this was before the niceties like winget.

The script setups up:

  1. Authentication and VPN to our secondary development domain.
  2. Downloads executable and Microsoft Installer setups from various places, like git for Windows, log viewers, Notepad++, Visual Studio, Resharper, Visual Studio extensions, yarn and Node.js, and other tools.
  3. Installs each application with a certain set of options (most setups allow specifying this on the command line, as opposed to winget or Chocolatey as far as I know).
  4. Manages reboots in between as necessary.
  5. Removes some bloatware and unnecessary shortcuts our employer sets up the machine that isn't relevant to our field of work.
  6. For new developer, sets up a basic Keepass file and work directories we use by convention.
  7. Configures development tooling, like setting up references to our internal NuGet proxy and NPM proxy.

This script took me about 8-16 hours to write, but easily has saved a lot of time. From time to time we get new notebooks, or maybe the current one experiences a hardware issue, or we get a new collegue.

If I were to rewrite it, I might save some effort by using winget or Chocolatey.


You don't mention what OS you're using, so I'd like to mention that this is another argument in favor of MacOS as a development platform -- Apple's migration assistant makes it very easy to move all user accounts/customizations/installed apps to a new system at install time.

Beyond that, I'd second some of the points others have made here:

  • If it ain't broke, don't customize it -- this may be the sysadmin and past consultant in me speaking (when you have to go around to many clients' systems, you quickly learn that a little time spent on getting acclimated to the default way of doing things can be a lot better use of time than trying to carry your customizations everywhere you go).

  • If it is broke, customize it in a repeatable way. For MacOS, this means using a system like homebrew or macports to install software, so you can run the same command on each box. For Unix, this means using the native package manager on your system (yum, apt-get, etc). For Windows, this means keeping installers around so you can re-run them later.

  • Share, share, share -- if you have files you'll need all over the place, use something like Dropbox, a local wiki install, or one of the many sync products out there to keep them available wherever you are (the usual caveats about trusting data to third parties apply, though -- be mindful of what you are and aren't willing to put on a service like Dropbox).


At my place we have a script (printed out) what steps a brand new developer needs to perform to be able to do everything they need to do on their Mac. Following this script shouldn’t take you more than two hours.

If it takes you two weeks then you need to really think hard about what you are doing there and why. Because it will take you an awful long time to recover the time wasted playing with your settings. And maybe you should create a printed list of steps to speed this up. On the other hand, I can reproduce my Mac onto a new machine by just installing a backup, which is zero work. Just takes a while, unattended.

PS. “Printed script” starts with instructions how to download hit, and how to get access to our repositories, and how to download one repository that amongst other things contains more instructions, and where to find them.

Not the answer you're looking for? Browse other questions tagged or ask your own question.