How much can we tell about an unreleased project?
We are closing in on our one year wedding anniversary, or paper anniversary as they call it. For this big event, I was planning to write a full description of the C³ experience. I asked a lot of questions, draw diagrams, wrote a very long article. I was very excited because when I start reading myself, I felt that we had a very innovative concept, something that would improve the experience of programming for all. But then I started to have doubts, how can I be clear enough that this is an intention, a dream, and without creating expectations?
Marketing
We cannot deny the importance of marketing. In video games, statistics show that marketing influence sales three times more than ratings. These numbers probably vary depending if you are aiming at mass market or a niche of specialized people, but the first impression you do is always important, no matter who you are targeting.
I worked on many projects that had huge marketing budgets. For all those, we had to keep quiet on what we were working on until the marketing reveal. This moment usually happens quite close to the launch which means most of the job is already done when the world learn about the project. The team usually have a hard time about this, you are very proud about this very amazing project you are working on, and yet you cannot talk about it to anyone. “The only thing I can say about what I am working on, is that it is incredibly fantastic!” We do show our work to selected people in order to get feedback, focus tests, but this is rigidly controlled not to interfere with the marketing reveal.
Reality is, this is necessary, you want your project to be hyped as much as possible. You start with a big reveal, then you maintain, and attempt to rise the hype until the product is truly available. If you cannot maintain the interest in your product, you start falling. Apple have been a very good example of this in the last few years, launching their products with a big boom, creating as much hype as they possibly can. Well timed hype translates into sales.
“A (…) problem: The company sells the visionary project before it has the product. This is a version of the famous vaporware problem, based on preannouncing and premarketing a product that still has the significant development hurdles to overcome.” -Crossing the Chasm, Geoffrey A. Moore
I have seen many project trying to create a hype too soon and missing the wave. Some games that were presented at my first GDC in 2006 have a hard time getting credibility when they aren’t completed four years later. My personal reaction is that their game got to be amazing because my team got a fraction of this for our own work, and we still manage to make great stuff. I imagine that the general customer simply forgot about it, and is mislead into thinking that it is an old thing that he just missed when it came out.
Even worst are the projects that are hipped but never see the light of day. In life, many projects get cancelled. Believe me, it happens all the time. People starts working on something, but things change, the project becomes something else, or the team simply starts over on a new concept. If nobody knows about it, you waste some time, but if you are already public with it, you also add shame on your name. You end up spending a lot of energy to justify yourself to a lot a people that don’t matter that much, and your reputation goes down. Easier to crash down a credibility than it is to raise one. Even if you have very strong creations in you port-folio, you aren’t protected from this.
Talking about a personal project
So I imagined that C³ would be different. It is a personal project, not some block buster anyway. Following the creative adventure of my husband helped me renewing my love for programming, and push myself learning new stuff. I love writing, why not write about it? Most comments, from friends or on the blog, have pushed us forward in our reflection, shaping the project into something better.
When I started, I never anticipated any problem writing about anything. My husband didn’t agree with me. Many of the concepts we were talking together were early into development, and subject to change. “Won’t people judge us if they see we are changing our mind all the time?” Not only do I think it is normal for ideas to change, I believe it is in the nature of great project to iterate on them. I am fascinated by the creative process. This is exactly what I wanted to talk about: how a project evolve, how the vision refine itself, ideas that shape themselves with the various challenges, new discoveries that add themselves to the big picture.
I was seeing myself as some kind of journalist, I though it would be obvious that I was following a creative process. But my enthusiasm led me to write a lot about C³ in a descriptive and somewhat “selling” way. I cannot claim neutrality, I care for my husband, I care for his project. No matter how I try, my words become some kind of marketing involuntarily.
I first become aware of this when my former schoolmate Michel talked about C³ as vaporware. I was disappointed at first, I though I had failed to make it clear that this was the documentation of the process, and not an actual reveal. Now I realize that this is impossible, as soon as you start talking about something, it is a reveal.
Compromise for the best of both world
So comes the dilemma, either I just don’t care about it and continue talking about it. Too bad for those who think we don’t have credibility because we don’t publish anything. They should know that creating a programming language takes time. Or I start writing behind closed door, showing my stuff only to chosen people. Closing ourselves from potential feedback and suggestions.
All this may seems obvious from the outside, but it wasn’t for me. But now that I am aware of all this, I cannot unseen, and have to take a decision. C³ is an ambitious project and we will need all the credibility, and hype we can get when the time comes. How can I keep from creating unnecessary expectation, raise my credibility while getting maximum feedback at the same time? I also want to keep on writing and drawing for the fun of it!
I don’t have a simple answer for this, but I do think of a few approaches on the subject that I feel wouldn’t interfere with the project while attracting constructive feedback.
First thing, I should go back to my primary idea of documenting the creative process. As a manager, I develop a strong knowledge of this in my day job, and I choose that way because I have a passion for it. Talking about challenges, how we overcome them, methodology and tips are interesting things to share. By nature they apply to various types of projects, thus it can reach a wider audience. This is also a nice way to get feedback on how to face certain situations. All this without really talking about the nature of the project itself.
I also realized that when we get challenged, it is more about our view on a certain topic, than how it really translates in the C³ design. Our opinions are shaped by our experience, I find it interesting to challenge my conclusions and seek advice from people that have a different background than me. I am very confident in my beliefs, but there is nothing like a good fight to improve them and make them stronger. I feel I should continue talking about our opinions, without going deeper on how it translates into the project.
As we will approach release, I will want to be as transparent as possible, describe with great details how things work, and why so, but only when the design on those aspects are complete. This is necessary to build a relationship based on trust, especially if we go open source and and want people to contribute. For now, things are evolving too quickly to spend energy on describing publicly something that is destined to change.
And then I cannot turn my back on this long article, exhaustive description of the project, a first draft documentation. I think it is necessary to write this in order for the project to go forward at an optimum pace. But now I realize I don’t have to publish these, they have to be written for ourselves, to clarify our vision into words. Maybe we can use them in focus tests. So no pressure to publish everything I write as soon as it is complete, leave space for iteration in the writing as well. The world can wait.
February 7th, 2010 at 3:16 pm
Hi Alex and MissTick.
I think I understand how you feel. Aiming to design a revolutionary language is a big dream and watching it evolve is potentially a lifetime activity. And I should admit it, I thought designing one was way easier than it really is. The hardest part is that a good language requires a heavy iterative process in the design phase unless you are willing to make mistakes that may be very hard to undo later. I know because the same happened to me.
Something that frustrated me about your posts is that the level of detail decreased over time (instead of increasing, only one post shows code and it was one of the first ones, btw I also use the keyword ‘type’). There could be many reasons: fear (someone stealing your idea is always frightening), lack of time (both of you work) or you may be still in the iterative process (my language changed almost every week when I was at it).
When I told my friends I was designing a programming language for my master’s thesis, many were sceptical (“is this really needed?, isnt this easy?”). It was not until I presented a list of the problems I was willing to attack that they understood that I was trying to hit a hard problem. I assume you have your own list as well and already have some key insights for their solutions, but if only brief sentences (at twitter) or only some problems are presented (ex. unifying functional and imperative paradigms), the kind of feedback you may receive can only be either “It would be nice!” or “I don’t consider that a problem” or none at all, leaving people to think they are either following someone’s potentially revolutionary project or just being distracted.
Its scary the amount of things Stepanov knows. Some of my key “discoveries” were already known by Stepanov or indirectly addressed a problem pointed by him, even if mentioned only briefly (one sentence long without apparent importance). Of course, that doesn’t mean we can’t innovate because Stepanov exists.
In my case, I’m still not disclosing my language design because I need time to finish implementing (couple of months away hopefully), because I still don’t have a name for it :( and because of fear. So I understand any decision you may take (hey! those are our babies!). I will continue to follow your project and hope to see interesting stuff in the near future.
February 7th, 2010 at 8:56 pm
A programming language isn’t a game. With a game, if you don’t make it a hit in the few months following release then it’ll never be a hit. Technologies moves on and it’ll eventually get forgotten.
On the other hand, a programming language is something that starts small and get better known over time. That’s because you can’t start a super big project in an all new language: you’ll have too many things to rebuild from scratch. So adoption starts with small projects and as you build libraries as part of those small projects the language and the ecosystem that developed around it becomes more suitable for bigger and bigger ones.
I won’t tell you what to do, but I think “marketing” is not what you want at this stage. It’s hard to do marketing for a programing language if you don’t already have something great built with it anyway. What you need most is to discuss the specifics with a group of people with different expertise willing to help you spot and correct mistakes at an early design stage. There is a lot to learn from this kind of feedback. But you have to share you ideas for that to be possible.
February 8th, 2010 at 10:07 am
I knew that the word “marketing” would not be received positively by some people, mostly the open source crowd. This is unfortunate because the term only describes the way we communicate about a “product”. If we choose to be completely transparent and open, it is still a marketing choice. I said that and Marie-Eve added a little note about open source but I guess that was not enough.
The fact that it is Marie-Eve and not me that does this blog is the manifestation of the fact that I am 100% dedicated to the technical aspects of this project. My hesitation to write more about my progress is that I’m still not sure how I will bring this project to the world. My goal is to make it sustainable and be able to work on this for a long time. I would obviously prefer to share everything with the world but I fear it could also limit my options to make this my living.
Don’t get me wrong: right now I’m more balanced toward an open source model where my income come from something else than the language itself. But please admit that this is a case where I won’t get two “first impressions” even if my goal is to please very different audiences…
February 8th, 2010 at 12:26 pm
Rodrigo: Thanks for sharing your experience. We are indeed in a similar situation! I am probably too much in a rush to reach industry-ready material. Lately, my opinion was that C3 is mostly an incremental improvement over C++ and that I already had the theoric knowledge to make it work. But now I realize that the key features maybe need much more thinking. Maybe going back to university to get a master degree would be a better investment of my time…
February 8th, 2010 at 8:35 pm
I just want to note that I have nothing against the word “marketing”. To me marketing means you’re promoting something you want to sell to people, people to try, discuss it, etc. That’s a perfectly fine thing to do. But right now I see almost nothing to discuss so it’s a little boring.
So my take is that if it’s too early to disclose some of your thoughts from time to time, then you can’t really do marketing at this point.
February 9th, 2010 at 8:21 pm
You guys are fantastic, thanks for you input! I’m sorry if it took me a while to respond, the site went so slow yesterday that is was almost down and it took me a while to fix it.
@Rodrigo You are so right about many things. Alex is iterating a lot on ideas right now, perfecting them in his mind or on his whiteboard. I also believe that some discoveries cannot come by thinking alone, you must get your hand into it at some point, making mistakes, learning from them. A good balance of both is probably the best way. We are going to a conference on the subject in a few weeks, I’ll make a post about it if I learn interesting stuff.
I wish I could write more about everything, it just that it change so much all the time. Most of the examples in the early posts are no longer correct. Many basic concepts stays, but the way they are implemented into the language design changes a lot. There is also my own lack of knowledge, I don’t have the programming skills my husband have, so while I am learning one of his basics inspirations, he already find 10 more he wants to show me. I don’t think we are driven by the fear of getting our ideas stolen, on the contrary, being very transparent have always brought me more. The real challenge is not in the ideas, but in making them a reality. You can have a nice picture in your head, but painting it on a canvas is far more difficult.
Stepanov is definitely an inspiration for us, Alex always call STL his masterpiece, ah! There have been so much papers on so many interesting subjects, by so many smart people in the past years. I want a kindle to read them all! lol!
@Michel Yes, a programming language is something that evolves over time, mostly because an increasing crowd or people come to contribute to it. But if you miss attracting those early adopters, well early, chances you never will. Marketing is not the art of forcing people to spend money on stuff, here is definition I prefer “the activity, set of institutions, and processes for creating, communicating, delivering, and exchanging offerings that have value for customers, clients, partners, and society at large.” Selling your ideas, your dreams, is marketing even if done in the purest of intention.
Showing a project too early would be like showing a rough sketch, most of the beauty is inside the creator’s head, he has to start putting details if he wants to receive constructive feedback. Otherwise, comments will only state the obvious. At the point we are at, I don’t think I can write details of the language and get constructive feedback, howerver, we do consult people around us. Easier to achieve a good explanation verbally. I’m having a lot of fun starting a conversation “What if…?” and just hear the debate.
I feel it is too early to talk about the specification of the project, and “sell” our dream, this is exactly the point of the whole article. Still I feel I can keep the blog alive and have fun writing about other things that are related to our project without getting in implementation details.