What does it take to bring a software idea to life? Lots of skilled development work. The initial idea is vital, but as Thomas Edison once said, "Two percent is genius, and ninety-eight percent is hard work." Someone devises an idea, such as blockchains, augmented reality, the World Wide Web, video game development, or social networks. Turning it into a deliverable product takes the work of designers, software developers, and testers. Lots of work.
From idea to specification
The first step is to cast the idea as specific actions. The software will do something, based on some kind of input. The original idea might be something like "Let's set up a network where people can put up documents and link to other documents." A cooler head might describe that as "vague but exciting." In fact, those were the words that Tim Berners-Lee's boss applied to his first proposal for the Web in 1989. To go further, he had to describe what people would do and what kind of response they should get.
The idea has to grow out into a specification. The spec for the Web had to define the communication protocol and say what a browser and a server would do. In 1990, Berners-Lee and Robert Cailliau produced a formal proposal explaining it in detail.
The development frenzy
After that, it was time to start coding. The first step was to create a prototype, just enough to show people how the idea worked. This meant, among other things, creating the first browser. It was quite an ambitious one, even compared with today's software. It not only displayed text and graphics, but allowed editing of documents.
We don't know everything that happened in that development process, but we have a pretty good idea. The team, many of whom had never been to coding school, must have jumped enthusiastically into the project, excited by the prospect of giving researchers a whole new way to share documents. (If they'd known just how big a change they were making in the world, they might have gone beyond excitement into terror!) This meant putting in long hours, very likely skimping on sleep and nutrition.
They obviously got carried away with their vision. Their first browser was so advanced that few computers of the time could run it. They later had to create a simpler browser so that people could actually use the Web. This is often the way with cutting-edge projects; people come up with so many good ideas that they run beyond what's practical in the short term. But in the process, the Web team came up with ideas that would later enhance the initial product.
Coding isn't all building fancy edifices, though. We can be sure that they often ran into stubborn bugs. Probably once or twice their code crashed while trying to demonstrate it for somebody important. Code seems to prefer crashing just at those times. At other times they may have stared at the code for hours, not understanding why something wasn't working right. When they figured it out, they probably slapped themselves for not spotting the problem immediately.
Today we have much better development tools than what was available in 1990. We have disciplines like unit testing that didn't exist then. We have integrated development environments and vast code libraries. We can learn all these techniques in a coding school or coding bootcamp rather than making them up as we go along. Yet much of the process is still the same. An initial idea turns into a definite design. The design requires many hours of coding work. The code has to be debugged and tested. Sometimes the prototype proves to be unsuitable, and it's necessary to start over again.
What makes it happen is a passionate love of coding. Bringing a software product to life is demanding, time-consuming, and sometimes frustrating. But it brings a feeling of satisfaction far beyond just going to work and doing a job.