> There once was a Master Programmer who wrote unstructured programs. A novice programmer, seeking to imitate him, also began to write unstructured programs. When the novice asked the Master to evaluate his progress, the Master criticized him for writing unstructured programs, saying, "What is appropriate for the Master is not appropriate for the novice. You must understand Tao before transcending structure."
~~The Tao of Programming
For example, I have https://www.invisible-computers.com up as a website. You can read about the product and you can sign up to be notified. But I won't take a cent until I have a product ready to ship.
But when someone does agree to pay (meaning you've somewhat validated your idea) then you're left empty handed and have to backtrack with your first customer. Not a great start. But that's just me :) YMMV
Of course a newsletter signup is not a sale. Not even 1%. But it’s still a signal.
And selling something you don’t have is borderline fraud in my book. Even if you backtrack and refund, it was still a lie and a waste of the customer’s time.
Also if one is selling something one should be aware that now you will have to support it for the next 10 years, even if it turns out to be an unprofitable business.
1. Why "Invisible"?
2. Why such a thick frame? I hope you expand frame choices, or offer a minimal version that customer can frame.
3. I guess you are building a custom UI layout for the calendar data, but please allow any URL to be loaded in the frame, so the community can build custom data views.
I “move slow,” taking the time to test carefully, and leave clean, concise, well-documented code, but I’m told that I actually move at a blistering pace.
I have found there is absolutely no substitute for having an operational, full-feature implementation (I hesitate to call it a “prototype,” because it needs to be fully functional, not just eye candy). I am not a fan of lash-up prototypes, because they invariably become ship code, and starting on a foundation of sand is a very, very bad idea. I short-circuit that, by writing everything as ship code; even my A/B experiments. I can often recycle the rejected code for other projects. It also saves a lot of testing time, as the code is being constantly tested from the start, and being tested while still in scaffolding (meaning more complete testing, overall).
For example, in the app I’m developing now, I’m working on a dropdown screen that allows the user to define search criteria for a database lookup. It’s a complex and fraught operation, and I’ve already had to make a number of changes, based on actually using the facility, as opposed to thinking about using it. If I had simply solidified my original design, it would have been a mess.
I will also be making sure that the facility works for different regions and languages, despite the first implementation being only for the US. It has been my experience that this kind of thing should be built in from the start, as retrofitting it is a nightmare (and bug farm).
My approach does mean that I often need to rewrite a lot of finished, tested code, or throw out big chunks (which is one reason I have a bunch of small, polished, standalone package projects). It’s taught me to design and implement very flexible code (which is actually dangerous, so I often go back, and remove flexibility, once I have settled on an implementation). Nevertheless, I have found it’s the best way to end up with a usable, relevant, high-quality, finished product, that meets the customer’s needs, in a remarkably short time.
DISCLAIMER: This is a viable way to design UX (the kind of code I usually write), but may not be the best approach for “engine” or algorithm code.
The mistake people often make with such things is building it thoroughly enough that it can be shipped.
If you hit that problem, you didn't build a proof of concept - you built sloppy production code.
If they find any bugs or issues, I fix/address them before moving on to the next function implementation.
The significant advantage that this confers, is that the app is constantly in "release-ready" form; although incomplete.
Useful, for when we want to ask people to give us money. We just get an NDA, loop them into the TestFlight group, and let them have at it. No need for chaperones from Marketing, or sacrifices to the demo gods.
I lean towards POCs these days because I have experienced the requirements turning out to be all wrong far too often. It's hard for people to know what they want or need before they can try something sort of real.
Then it ends up in production. Then they want to add stuff to it, which is a nightmare as the code is terrible.
Every time.
Like I said - a proof of concept is only a POC if major features and plumbing are just missing.
You only build the parts you need to show the concept is possible. The bits you don't know exactly how to do already.
If it can be pushed to production usefully, it's too full-featured to call a POC, in my view.
That's exactly why I work like I do, now.
Unfortunately, I can't do it when I'm working for anyone else. They never let me do it the way that I do it. I have to be doing it on my own.
It works. It really works, if I write top-quality code, the whole time; even if I have to throw away or drastically refactor/write production-quality code.
My experience is that the final product:
1) Is of almost jaw-dropping quality (it was tested thoroughly, the entire time),
2) Is tailored exactly to the needs of the end-user (which deviated substantially from their original requirements), and
3) Arrives very, very quickly (this always surprises people).
And then making things. To me this means no paper prototyping. Not selling people on your idea without having anything tangible. Some may call it smart. To me it feels like gambling with your believability / integrity. There are only so many times you can do this before people get tired of you and your stories / dreams / business ideas. Just make something, show it to people when it’s actually useful. And feel good about actually having made something people liked. Instead of selling something people liked and then suffer the feeling of non-stop pressure, constantly _not_ being where you’ve told others you are.
Happy april fools :)