Getting everyone in a room can still lead to the wrong design. Situations change over time and no matter how good you try to be up front you can be faced with situations that demand change and make your original design useless. I certainly have. It is often the case that there isn't anyone in the world who knows all the details or that "everyone" is 1000s of people and beyond that there are just mountains moving in your business and you have to move with them.
Scrum makes you manage your work regularly, see early when it's going wrong, adapt to get back on track. It gets your whole team involved and you end up with solutions that were thought up by your more junior team members or people working on a totally different bit of code.
Architects are useless in waterfall because they can be long gone by the time it becomes clear that their architecture is a total fuck up.
Good luck with that approach. You'd better be doing things that are very simple. It's quite common experience that people often don't know the details of what they want or that they want things that can't be done the way they expect and in such cases an inflexible contract will force you to be the loser. Agile methods will help the team meet your spec precisely (whether you like it or not) or decide to simply pay the penalty to get out and spend their time on something achievable. Either way, you're not in the buisiness of making money out of failed contracts so you lose.
There aren't a million apps that can put the whole world with driving instructions, restaurants etc on your phone such that you can use it all offline when you get lost in Timbuktu.
You could get one of those appalling non-smartphones with that terrible OS Symbian on it and use their downloadable maps which offer both caching and the ability to pre-download maps for any country and have offered this for years.
I have thought similarly. I don't see how we can make true use of robots if they don't understand us. To understand us, to predict or anticipate what we need, I think they have to have some common experience otherwise it would take forever to explain what you want precisely enough. Without understanding they would be very annoying in the same way that it is when you try to work with people whose culture is greatly at odds with yours so that you can never quite interpret what they mean.
Yes, I think that meeting the people you're going to communicate with - even once - is a big, big help. If you were going to be ultimately economical you'd meet them some weeks into the project after you've created some context and hit a few problems.
Even so, I just don't rate the chances of success very highly. The greatest problem in my mind is timezone differences.
People in Europe should be looking at South Africa (I'm Zimbabwean so that's not biased) or at Mauritius or other places that are within 2 hours.
In the US I'd assume that South America might be doable - perhaps Brazil or Argentina? China and India are a bit of a nightmare and IMHO should be reserved for completely independent subsystems with very tiny and simple APIs.
The total f-up with contracting is that in all development of a non-standard kind (i.e. innovative new ideas) your requirements are going to change from the start of the project, where you know very little, to the end where you understand the problem better. But with contracts you are setting the terms at the beginning and obviously are going to incur further cost when you realise that your requirements were deficient. Worst is that the contractors aren't going to tell you that your idea is silly and needs a 45degree change in direction since they are contracted to do what you asked for originally.
I would try to organise the contract so that there were a number of potential work items (like an agile backlog) and so that they were scoped to be done in 2-to-4 week segments, fully tested and reviewed. I would then build in some kind of procedure for agreeing changes so that as you find things taking too long or becoming irrelevant you can adapt. I don't know precisely what to suggest here but it would have to protect them from unreasonable new demands by you and you from them not spending time on you. Perhaps one could invent an agile payment system so that you could incrementally negotiate at intervals.
That demonstrates the problem nicely. The chain of decision about whether the work was good enough is pretty long and your final potential recourse might be a lawsuit which is such a high stakes response that your management are more likely to pay up and change supplier but even more likely to tell you to stop being a perfectionist nerd.
Communicating with people many timezones away is hard when they are great people and horrendously time consuming otherwise and when you change suppliers for any reason or when their employees leave then all their accumulated knowledge is lost.
So outsourcing is dumb if your work is meant to be in any way unique to you. If you're expecting something bog standard for the industry then it offers you something.
Chatrooms are quick and people often end up helping each other thus saving you the trouble. I find them much better than forums or email for my most common communication. I set up one with ejabberd but you could use jabber.org or jwchat.org. There is even a browser based chat client so that your customers don't have to install anything: http://blog.jwchat.org/jwchat/
You can also log everything and when a user connects they get to see what happened recently instead of entering blind.
Wikis are convenient for typing up documentation and answers that you don't want to have to give again - they make it easy enough that you actually do it instead of putting it off.
Make sure you go and meet people in person every so often - makes all the tools work better.
Install several web browsers (at least Chrome and Firefox) - it's amazing how much that helps when trying to deal with some odd company web page.
rdesktop is obviously wonderful.
If you must have a windows machine, make it virtual - so convenient IMHO and you can snapshot the disk and move it from one computer to another and all sorts of useful things.
Twinkle is not a bad VOIP solution though old and it worked in my company where ekiga didn't really so it's worth trying.
Install a webcam at the remote locations if you can (we did this in our office) so that you can see who's there and who isn't when you are remote - very nice and gives one a sense of connection.
Sorry for the randomness of all that:-) Just what I thought as I thought it.
I wish I could mod the Kitchen Sink comment up more as it hits the nail on the head. Another example is when someone used to say, "I'm going to make a small fast text editor not like those bloated things," and you could cue forward a few years to the editor which changes description from "fast and light," to , "full featured." It seems to be natural to pretend that there aren't tradeoffs.
It seems to me that a lot of modern technology has so many ideas in it anyhow that the value of any one of them is pretty small. There are even a lot of sine qua non ideas and each one of these cannot be worth a significant portion of the whole product even if removing it resulted in the product not functioning - because there are so many other ideas which are also critical.
I put my machine together from componen without buying windows - can't do this at all easily with laptops hence and it *is* hard to find one where I am.
Since I want to install Linux, I don't want an antivirus or to pay for it - why should I pay for MS' past design mistakes in windows' security?
However much choice you have in machines is lost when you look for a machine with X and Y *and* Linux/FreeBSD/whatever installed. The number of combinations of configuration become to many for any industry to support. You have to break it at some point and let choice in. Many computer manufacturers do let you have practical choice where it isn't too technically difficult e.g. what hard drive you put in to a desktop machine or what monitor you get.
We all know that the OS is one of those things that isn't technically difficult and that provides a huge boost in the choice of outcome. Microsoft know this hence why they play the game this way - trying to maintain a stranglehold. If this wasn't an effective mechanism for killing off alternatives then they wouldn't make such a point of using it.
The PC manufacturer is defeating the competitive market by prepaying for windows - it doesn't matter how much bulk buying it does you, the purchaser of the PC, are the one paying, in the end, for Microsoft to make operating systems which you don't want and cannot pay for operating systems which you do want wirthout paying MS first.
Hard discs and mice and keyboards are neither here nor there since there is so much competition and choice in the market of PC configurations that there is no need to try to protect consumers from monopoly.
Microsoft is - by making it very difficult to find any alternative and this is anti-competitive. Lets see what happens when they have to get chosen on merit alone.
Rich people will still be rich either way and will be able to afford the fares whereas the rest of us will be better off travelling otherwise and will have to pay to build it anyhow.
That's a typical IT comment which causes hatred. You can't see anything below the GUI on windows 7 (which indicates a bit of technical illiteracy) and you think that whatever shell you use is going to run bash scripts.
Essentially you think that your problems are the only ones that count. You're not doing development and you don't care what people in dev want. You can't put yourself in their shoes and you have contempt for their requests. Definitely the antithesis of customer service and I am sure you don't see them as customers.
Its easier to explain computing in terms of a machine to people and lambda calculus is not instantly real to most of us. So Turing is one of the people whose work almost any layman can at least conceive.
I have never found that translation helps. Being able to speak directly to people who wanted things was the greatest luxury and saved huge effort as we ended up not doing a lot of things that "translators" had mistakenly thought was necessary and did other things that were *actually* vital.
"Iran's religious leaders are set to test the new "Thanksbetogod" landing system which involves praying for the miraculous saviour of the astronaut. The new landing system is considerably lighter than anything the pathetic decadent homosexual Europeans or the Great Satan can achieve and will give Iran total domination of manned spaceflight within the next 2 weeks.
The event is so auspicious that the supreme leader Aye-a-toilet Car-mini especially asked our own President to test the system. "To refuse would be to disbelieve in the power of the almighty, Mr Ah-my-dinner-jacket, and I assure you that we will all be there to pray at exactly the right moment and I can assure this because we will be using our new great Iranian "IfGodiswilling" wrist watches which are based on such immense faith that there is not even any need for clockwork! Do not fear for your hairy little chin, my dear Mad-mood, for the lord loves all who trust in him - even the fires of the atmosphere and the terminal velocity of the highest fall are as nothing compared of the prayer of myself and all your other good friends of the Majles-e Khobregan (assembly of experts)."
It was touching, as this reporter can testify, to see the tears of what can only be joy, his sudden urge to leave the room to hide his emotion and the kindness with with the guard officers of the Revolutionary protection unit insisted that he should stay...
Getting everyone in a room can still lead to the wrong design. Situations change over time and no matter how good you try to be up front you can be faced with situations that demand change and make your original design useless. I certainly have. It is often the case that there isn't anyone in the world who knows all the details or that "everyone" is 1000s of people and beyond that there are just mountains moving in your business and you have to move with them.
Scrum makes you manage your work regularly, see early when it's going wrong, adapt to get back on track. It gets your whole team involved and you end up with solutions that were thought up by your more junior team members or people working on a totally different bit of code.
Architects are useless in waterfall because they can be long gone by the time it becomes clear that their architecture is a total fuck up.
Good luck with that approach. You'd better be doing things that are very simple. It's quite common experience that people often don't know the details of what they want or that they want things that can't be done the way they expect and in such cases an inflexible contract will force you to be the loser. Agile methods will help the team meet your spec precisely (whether you like it or not) or decide to simply pay the penalty to get out and spend their time on something achievable. Either way, you're not in the buisiness of making money out of failed contracts so you lose.
There aren't a million apps that can put the whole world with driving instructions, restaurants etc on your phone such that you can use it all offline when you get lost in Timbuktu.
You could get one of those appalling non-smartphones with that terrible OS Symbian on it and use their downloadable maps which offer both caching and the ability to pre-download maps for any country and have offered this for years.
I have thought similarly. I don't see how we can make true use of robots if they don't understand us. To understand us, to predict or anticipate what we need, I think they have to have some common experience otherwise it would take forever to explain what you want precisely enough. Without understanding they would be very annoying in the same way that it is when you try to work with people whose culture is greatly at odds with yours so that you can never quite interpret what they mean.
This kind of thing might eventually help:
http://apt.cs.man.ac.uk/projects/SpiNNaker/
Yes, I think that meeting the people you're going to communicate with - even once - is a big, big help. If you were going to be ultimately economical you'd meet them some weeks into the project after you've created some context and hit a few problems.
Even so, I just don't rate the chances of success very highly. The greatest problem in my mind is timezone differences.
People in Europe should be looking at South Africa (I'm Zimbabwean so that's not biased) or at Mauritius or other places that are within 2 hours.
In the US I'd assume that South America might be doable - perhaps Brazil or Argentina? China and India are a bit of a nightmare and IMHO should be reserved for completely independent subsystems with very tiny and simple APIs.
The total f-up with contracting is that in all development of a non-standard kind (i.e. innovative new ideas) your requirements are going to change from the start of the project, where you know very little, to the end where you understand the problem better. But with contracts you are setting the terms at the beginning and obviously are going to incur further cost when you realise that your requirements were deficient. Worst is that the contractors aren't going to tell you that your idea is silly and needs a 45degree change in direction since they are contracted to do what you asked for originally.
I would try to organise the contract so that there were a number of potential work items (like an agile backlog) and so that they were scoped to be done in 2-to-4 week segments, fully tested and reviewed. I would then build in some kind of procedure for agreeing changes so that as you find things taking too long or becoming irrelevant you can adapt. I don't know precisely what to suggest here but it would have to protect them from unreasonable new demands by you and you from them not spending time on you. Perhaps one could invent an agile payment system so that you could incrementally negotiate at intervals.
That demonstrates the problem nicely. The chain of decision about whether the work was good enough is pretty long and your final potential recourse might be a lawsuit which is such a high stakes response that your management are more likely to pay up and change supplier but even more likely to tell you to stop being a perfectionist nerd.
Communicating with people many timezones away is hard when they are great people and horrendously time consuming otherwise and when you change suppliers for any reason or when their employees leave then all their accumulated knowledge is lost.
So outsourcing is dumb if your work is meant to be in any way unique to you. If you're expecting something bog standard for the industry then it offers you something.
Firing (mach 3.5)
http://www.youtube.com/watch?v=mRIjwK8yuTY
Firing from a helicopter:
http://www.youtube.com/watch?v=8sB4UEfELr4&feature=related
Mounted with a tracking system:
http://www.youtube.com/watch?v=A0B8x3jpV18&feature=related
A slightly more general look:
http://www.youtube.com/watch?v=6QRjtk7QuE0&feature=related
If you're interested, there is a good lecture by Alan Bond here which addresses almost everything:
http://www.youtube.com/watch?v=2G-HPHNrrLQ?t=4m30s
There is a lot of very informed and interesting discussion on the nasa spaceflight forums thread:
http://forum.nasaspaceflight.com/index.php?topic=24621.600
There are many other sources of information but at least one collection is here:
https://www.facebook.com/pages/Reaction-Engines-Skylon-Spaceplane-Fans/105055779583747
Chatrooms are quick and people often end up helping each other thus saving you the trouble. I find them much better than forums or email for my most common communication. I set up one with ejabberd but you could use jabber.org or jwchat.org. There is even a browser based chat client so that your customers don't have to install anything: http://blog.jwchat.org/jwchat/
You can also log everything and when a user connects they get to see what happened recently instead of entering blind.
Wikis are convenient for typing up documentation and answers that you don't want to have to give again - they make it easy enough that you actually do it instead of putting it off.
Make sure you go and meet people in person every so often - makes all the tools work better.
Install several web browsers (at least Chrome and Firefox) - it's amazing how much that helps when trying to deal with some odd company web page.
rdesktop is obviously wonderful.
If you must have a windows machine, make it virtual - so convenient IMHO and you can snapshot the disk and move it from one computer to another and all sorts of useful things.
Twinkle is not a bad VOIP solution though old and it worked in my company where ekiga didn't really so it's worth trying.
Install a webcam at the remote locations if you can (we did this in our office) so that you can see who's there and who isn't when you are remote - very nice and gives one a sense of connection.
Sorry for the randomness of all that :-) Just what I thought as I thought it.
I wish I could mod the Kitchen Sink comment up more as it hits the nail on the head. Another example is when someone used to say, "I'm going to make a small fast text editor not like those bloated things," and you could cue forward a few years to the editor which changes description from "fast and light," to , "full featured." It seems to be natural to pretend that there aren't tradeoffs.
It seems to me that a lot of modern technology has so many ideas in it anyhow that the value of any one of them is pretty small. There are even a lot of sine qua non ideas and each one of these cannot be worth a significant portion of the whole product even if removing it resulted in the product not functioning - because there are so many other ideas which are also critical.
I put my machine together from componen without buying windows - can't do this at all easily with laptops hence and it *is* hard to find one where I am.
Since I want to install Linux, I don't want an antivirus or to pay for it - why should I pay for MS' past design mistakes in windows' security?
However much choice you have in machines is lost when you look for a machine with X and Y *and* Linux/FreeBSD/whatever installed. The number of combinations of configuration become to many for any industry to support. You have to break it at some point and let choice in. Many computer manufacturers do let you have practical choice where it isn't too technically difficult e.g. what hard drive you put in to a desktop machine or what monitor you get.
We all know that the OS is one of those things that isn't technically difficult and that provides a huge boost in the choice of outcome. Microsoft know this hence why they play the game this way - trying to maintain a stranglehold. If this wasn't an effective mechanism for killing off alternatives then they wouldn't make such a point of using it.
The PC manufacturer is defeating the competitive market by prepaying for windows - it doesn't matter how much bulk buying it does you, the purchaser of the PC, are the one paying, in the end, for Microsoft to make operating systems which you don't want and cannot pay for operating systems which you do want wirthout paying MS first.
Hard discs and mice and keyboards are neither here nor there since there is so much competition and choice in the market of PC configurations that there is no need to try to protect consumers from monopoly.
Microsoft is - by making it very difficult to find any alternative and this is anti-competitive. Lets see what happens when they have to get chosen on merit alone.
Rich people will still be rich either way and will be able to afford the fares whereas the rest of us will be better off travelling otherwise and will have to pay to build it anyhow.
That's a typical IT comment which causes hatred. You can't see anything below the GUI on windows 7 (which indicates a bit of technical illiteracy) and you think that whatever shell you use is going to run bash scripts.
Essentially you think that your problems are the only ones that count. You're not doing development and you don't care what people in dev want. You can't put yourself in their shoes and you have contempt for their requests. Definitely the antithesis of customer service and I am sure you don't see them as customers.
Its easier to explain computing in terms of a machine to people and lambda calculus is not instantly real to most of us. So Turing is one of the people whose work almost any layman can at least conceive.
I think this deserves plenty of credit.
School is about telling you things you don't know and wouldn't learn on your own otherwise we would not have invented it.
If you trust anyone to handle your comms securely then you deserve whatever happens to you.
What are today's costly mistakes?
If you came from Somalia you wouldn't think it was funny - you'd prefer to live in the US any day as I believe some have managed to do.
I have never found that translation helps. Being able to speak directly to people who wanted things was the greatest luxury and saved huge effort as we ended up not doing a lot of things that "translators" had mistakenly thought was necessary and did other things that were *actually* vital.
"Iran's religious leaders are set to test the new "Thanksbetogod" landing system which involves praying for the miraculous saviour of the astronaut. The new landing system is considerably lighter than anything the pathetic decadent homosexual Europeans or the Great Satan can achieve and will give Iran total domination of manned spaceflight within the next 2 weeks.
The event is so auspicious that the supreme leader Aye-a-toilet Car-mini especially asked our own President to test the system. "To refuse would be to disbelieve in the power of the almighty, Mr Ah-my-dinner-jacket, and I assure you that we will all be there to pray at exactly the right moment and I can assure this because we will be using our new great Iranian "IfGodiswilling" wrist watches which are based on such immense faith that there is not even any need for clockwork! Do not fear for your hairy little chin, my dear Mad-mood, for the lord loves all who trust in him - even the fires of the atmosphere and the terminal velocity of the highest fall are as nothing compared of the prayer of myself and all your other good friends of the Majles-e Khobregan (assembly of experts)."
It was touching, as this reporter can testify, to see the tears of what can only be joy, his sudden urge to leave the room to hide his emotion and the kindness with with the guard officers of the Revolutionary protection unit insisted that he should stay...