So much of development is now done online to take advantage of interconnectivity and shared resources. In a prolonged Internet outage, how can one cope with the lack of that connection? Are there ways to replicate or work around the innumerable benefits the Internet adds to development?
closed as off topic by Yannis Rizos♦ Mar 7 '12 at 5:37
Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here. If this question can be reworded to fit the rules in the help center, please edit the question.
There was programming long before the internet. We had books, we had periodicals and we met in real life maybe more often than we do today.
First question would be: What does 'prolonged' mean? Two or three days? If you feel paranoid about such a situation, you can secure the core of your working environment by having local copies of the most important websites you need as reference and manuals. In addition you could make sure to download some tools, plugins and other material you may use some day.
If you don't have such backups, it's just a question of organizing your work. There is always some minor stuff I wanted to do all the time, like adding a few more tests, finding a less important bug or extending the manual of my application to cover the latest features I added. Or simply adding another new feature for which I don't need material from the web as reference.
But a week? And how large would you think the area affected? Your company? A city? A country? The whole world? If the internet went down for the whole of my country (Germany) for more than a few days I guess we would have other problems (civil war?) than to worry that much about details of our work. Though the civil wars in Northern Africa have shown, that it still is an important piece of the infrastructure and in some cases I know that for some people work went on, wile there was fighting in the next city.
What about the phone lines? Would they still work? If yes, you can fall back to using a modem (as back in the 90s) to stay in some contact with customers to send them updates or exchange some email. Though where would you get a modem soon enough, especially if everybody wants to buy one?
If we would have to expect this to happen for a very long time, we would need to restructure the complete infrastructure to whatever still works.
Assuming this would happen to your company only (which seems more reasonable), maybe because of some prolonged construction work in it's building, then you should prepare with backups of important material. In addition I would allow every developer to take an hour off or two each day to go to the next internet cafe. Or ask a friendly company in the neighborhood if we may be allowed to use their resources, maybe rent some office space in a nearby building, where our workers can get email and stay in contact. Prepare customers in advance, that responses to email may take longer than customary. Buy a big load of smartphones, so people can still have minimum access to important material.
Actually something like this happened to a company I worked for. It was the launch day of my very first website and thanks to a construction site nearby the main cable for our office building was cut this very morning. Launch to be 12:00 am, no messing about that time, since advertised for months by the customer. We took our laptops and went to Amsterdam Central Station (five minutes walk) and launched it from there (adding better coffee ad breakfast than we had in our office). This worked well enough for a few hours. Though if we would have had bugs in the code (luckily not) it could have become difficult to fix them.
In the same company we had for several weeks an internet cable from our neighbor office running into our room, since they were waiting for their slow provider to fix their connection.
Use a SneakerNet, flash drives and couriers along with careful discussions on coordination could help.
Also if all the computers are in one location, they could be wired together via parallel or LAN making their own networks and keeping the code together.
Updates would be rather hard though you could use a library or cafe to get enough access to acquire updates for one computer and then get them to the others.