
Today I want to talk about creating your own projects, and how this differs from creating projects for customers. If possible, I will illustrate my story with an example of the creation of my social microblog
Rubik .
Projects for Uncle
When you create a project for a customer, you, by and large, do not care if the project will be commercially successful. Does the customer want a new social network? You are welcome. And about the fact that the next social network is not needed by anyone, and that creating it today is simply ridiculous, you modestly keep silent. Customers often do not understand that most of the features that they want will never really be in demand. Somehow I happened to run into a project that from the outside looked like a regular directory of sites. To create a similar directory would have gone a week. But in fact, the volume of this project was more than one hundred thousand (!) Lines.
What there just was not: and CRM, and site builder, and heaped statistics. All these components of the system united one thing - they were turned off as unnecessary.
Projects for yourself
A distinctive feature of any project is that it is used by people. Otherwise, this is not a project, but a set of sources. Somehow in my youth I decided to write a blog hosting site. I wrote three months, I implemented a bunch of features. When added - first tried to run it on a virtual server. This “farm” was so slow that in an hour of attempts I realized that to host only a few blogs I would have to rent a dedicated server or rewrite everything from scratch. Both options were unreal. But even if everything started up normally, I would most likely have problems attracting users. As a result, 3 months of life went down the drain.
')
This could have been avoided and the loss of time could be minimized if I used the technique of the zero prototype, which I will discuss later.
When creating a project “for yourself” it is very important to understand whether the project will be in demand. This can only be understood by trial and error. The faster you try, the faster you will draw conclusions in which direction it is worth developing the project and whether it is worth it. You can speed up the process by going through the following steps.
Idea
First of all, you should have a project idea. Forget about domain, name, design. It is not important yet. What is important is how you imagine your project.
My idea was to create a social blog about Ruby. Here it should be noted that social blogs I call all habra-like projects, where each user can post, and the rest evaluate his “creativity”.
purpose
Now you need to understand what problem your project solves. And for this you need to abstract from the implementation. For example, I defined the goal of my project as “to enable Ruby developers to share useful information”.
Features
In the next step, write down all the features you would like to see in your project. Do not hesitate, the more the better. As a result, you will most likely get an impressive list, the implementation of which will take more than one person-month.
We cut features
And now the interesting begins. You should re-read the goal of your project, and then begin to delete features, one by one. As a result, you should be left with only the most key features, without which your project will lose its meaning. There should be a number of features that can be implemented in one day. In my case, I had to abandon comments, add-minus posts, karma, tags. It was necessary to refuse even authorization and, therefore, editing posts.
As a result, I have left:
- adding a post (anyone can add, no authorization);
- list of posts;
- view post.
At this feature ends.
Zero prototype
After we cut the features, we proceed to the creation of the zero prototype. A null prototype must be created in one day. By evening, everything should work. Sloppy, through the ass, but work. Another day can be given to bring the appearance of your project in order. Your zero prototype is ready and you can (and should) start using it.
When the zero prototype is created, interesting things can come to light. For example, in my case, it turned out that I simply would not pull writing full-fledged posts for my social blog. It is clear that the first time, while the project is not unwind, only I would have to write them.
I guarantee that in any project you will discover interesting things that you have never guessed.
In my case, I had to slightly correct the idea of ​​the project, replacing the blog with a microblog. But the goal remains the same. After correcting the idea, I had to go through all the steps first. After creating the second zero prototype, it turned out that I could write posts in the microblogging regularly and without problems.
Prototype
When you have decided on what specific idea you will implement, proceed to the creation of a prototype. The prototype should be solid, ready to use. In the prototype, you add only the most important features, without which the use of your project by real users is inconceivable. The implementation of the prototype should take you one, maximum two (if the project is difficult) weeks. I had features in the prototype: authorization, work with posts, work with comments.
Prestart
When your prototype is ready, it's time to deploy it on the server. There may be all sorts of surprises that should be eliminated as far as possible. After successful deployment, ask your friends to test your application. There will be bugs that you did not notice with a stare. Critical bugs need to be fixed. In my case, I got a serious bug with authorization.
Launch
This is where the real life of your project begins. If the project is interesting for users, it will be successful. If not, arm yourself with a new idea and return to the first step;)
I have already launched
my project and even
opened the code . Now it's your turn.
UPDATE:Once again I explain. There is a
zero prototype . It is done in one day, solely for use by the developer, and for running ideas. And there is a
prototype that becomes the very first public version of your project.
Zero prototype, just for you and your friends. Accordingly, my mistake is not that I did not include the screening of html-tags in my zero prototype, but in that I gave here a public link to it. I apologize to all those who had to close the browser with all the tabs, because of the script inserted by some imbitsilom - I also got caught. Now shielding is added.
I will answer all lovers of design. I do not urge to write govnokod. I'm just talking about the fact that you do not have to bother much on scalability and architecture. We need to create something working. Make sure that it is claimed by users. Collect feedback. And move forward.
About the simplicity of my project. In the comments, it was noted that they say my project is simple and you can write it in a week, but with a complicated one it will not work. Guys, how do you know what was the project before cutting features? What you see is a prototype running in production. In my original project there was nothing: wikis, a database of vacancies and summaries, public profiles of developers, forums, blogs, polls, etc. But that was before I started cutting features and left only the most important, the key.
I am not aware of examples of web applications for which it would be impossible to create a zero prototype in one day. Even for a search engine, you can create a zero prototype. Do you have examples of real applications that do not fit this technique?