On Wed, Mar 23, 2011 at 4:26 PM, Jon Jensen <[email protected]> wrote: > On Mar 23, 2011, at 4:17 PM, Wade Preston Shearer wrote: > >> What is the benefit of having your development environment be local instead >> of remote? I can think of several cons. The only pro I can think of is that >> you don't have to have an internet connection. > > 1. you don't need an internet connection > 2. it's (hopefully) faster because it's local > 3. by definition, it's truly sandboxed (i.e. other devs can't screw it up). a > shared dev environment can be a whole bag of hurt > 4. if you're using git, this is a no-brainer and makes life much easier. > everything is local, you can easily work on different branches at the same > time, etc. > > Plus if you've solved the whole > getting-a-dev-environment-set-up-anywhere-quickly problem, it becomes super > easy to spin up new ones and have more than one (e.g. you have your stable > branch and want to see how it interacts with a dev branch, so you need one of > each side-by-side). > > I don't really know of any disadvantages. If you want people to see your > stuff in a common staging/sandbox rather than on your laptop, that's where > version control and continuous deployment come in handy.
One disadvantage of a local dev environment is that it is local to exactly one computer. If you always develop on that box (i.e. a laptop) then it can make sense, but if you have a box at work and a different box at home or elsewhere that you sometimes use, or a desktop and a laptop, then your dev environment is stranded on the one box where it is set up, and when you pick up where you left off on a different machine, none of your local changes are there. If it applies to you, it's a showstopper though for having one local dev environment rather than having a dev environment out in the cloud somewhere. It also comes in handy if your local box is more likely to fail or have problems or need upgrades etc. than the remote dev environment, which in my experience is typically the case (desktops and laptops have lower average uptime than a server environment). The other disadvantages are related to the other things you mention: many of us haven't solved the whole "getting a dev environment set up anywhere quickly" problem, nor do we need to set up new dev environments often. Also, with a local dev environment it takes extra steps (loading it onto some other remote environment) in order to easily let others see your changes and play with them. With an already-remote environment, other people can see changes just as fast as you can, with no extra work, which in many cases I have used to great advantage so I can tweak things as they watch and sign off. Another major difference is that it is much easier to set up a dev/staging environment that most closely matches production environment by setting it up remotely rather than locally. I usually set up dev/staging environments in the same place the site is hosted, to minimize the potential that something that worked fine on my local won't work the same in a more realistic (production-like) environment. There's also a good argument for a remote environment as a more secure place for your data - much easier to drop a laptop, have an electrical or plumbing problem destroy a desktop at home or at the office, or have your laptop get lost or stolen, etc, but your remote server will be just fine if your local machine has any of those issues. That said, I agree with the advantages, though they can often be pretty small advantages in practice, since we usually wouldn't be trying to develop without internets, can't notice a speed difference, don't have other devs messing in your remote server playground, and the git/branch one works just as well remote as local. As for me, I have both: I have a local dev environment that I use for some things, but currently the majority of my work is done on remote dev servers. I need the internet for many reasons while working, so that's a non-issue, and using an editor/IDE that simply opens and saves the file on the remote server works like a charm for my usual save/reload/save/reload development cycle. As others have said, there's no silver bullet that's right all the time for everyone, it's mostly a personal choice, like what IDE you like. I respect your right to prefer vim or local dev environments just like I expect you to respect my right to choose XEmacs and remote dev environments. :-D Thanks, Mac -- Mac Newbold Code Greene, LLC CTO/Chief Technical Officer 268 S State St #100 Office: 801-582-0148 Salt Lake City, UT 84111 Cell: 801-694-6334 www.codegreene.com _______________________________________________ UPHPU mailing list [email protected] http://uphpu.org/mailman/listinfo/uphpu IRC: #uphpu on irc.freenode.net
