Last weekend (October 13 and 14), we and
aishek and two of our colleagues participated in the
Rails Rumble 2012 hackathon. Under the terms of the competition, you need to close the finished Rails application within 48 hours.
I must say that in addition to drinking a box of beer and other fun, we got a really good experience.
We decided to make an application to collect feedback from users, automatically classifying it by type (spam, idea, thanks, etc.), with the possibility of subsequently assigning a message to another system user for further processing.
Based on this formulation of the problem, we decided that our system will have:
- text classifier;
- convenient registration and login system with a minimum set of required fields;
- displaying the structure of possible message assignments to system users
- Geo-information for each message (for a more precise assignment to certain users);
- personal accounts of companies and users;
- public pages of companies;
- extended message status system (decided, not resolved, rejected);
- search for companies and posts;
- internal statistics of submission of messages and activity for company executives;
By the beginning of the competition, we were able to prepare a very general outline of the design and architecture of our application.
')
Chronicle of events
Saturday, October 13
04:00 Getting Started. We share the responsibilities for setting up the server, writing the classifier and layout of the frame. Create a new Rails application and start trying to deploy it.
07:30 The first warmth, on the main page there are broken links, a search field and some text. We start to do authorization. Text qualifier is not ready.
10:00 There is a user registration / authorization, layouts. Started making company profile. Classifier is still not ready.
13:00 Text classifier is ready, users have companies. Breakfast is lunch. Everything is a little shocked, and the first fatigue appears.
14:00 In the classifier of the text there are problem areas, the design of an already-laid application seems disgusting. The cries of “What the de *** oh?” Are heard more and more often. Exactly nothing happens.
16:00 Work got up, decided to go to the store.
17:00 Came from the store and went to bed. This, as it turned out, was a key decision.
20:00 Rise again. For the work!
21:00 Classifier repaired. Began to make a messaging system.
Sunday October 14
00:00 Messages are being submitted, users are working, companies are being created, but there is a persistent feeling that we cannot master all our plans. The interface is still very raw.
02:00 Redesign design, rule bugs
04:00 We decided to go to sleep. According to the results of the first day of work, we had a main page, a user and company profile, the sending and classification of the message worked. There was no public part of the company. In general, the application worked, but the ideal was still very far away.
10:00 overslept. Ate and run for work.
12:00 There is authorization through social networks. One of his colleagues sat away with the words "Do not touch me!" - and took up the appearance of the application.
16:00 Half of the functionality of statistics is ready, it was decided to stop there. Everyone already likes the application (thanks to our colleague) and only now we finally understood what and how it will work for us.
20:00 Appear all sorts of small tasks that are beginning to take more and more valuable time: they made comments to messages, the public part of the company. Performance starts to fall again.
23:00 Decided to go to the store again, freshen up.
Monday, October 15
00:00 Done assign tasks to the user. Started making statistics.
02:00 Ready to mark the comments as the correct responses to messages.
03:00 Convulsive "fix production on the fly."
04:00 The application is running, the contest is over!
findings
They made about half (not more) of what was intended. It took a lot of time to coordinate the interfaces and catch errors. There is a lot of work between a working application and a working application, which is pleasant to use (that is why any assessment should be multiplied by two). After 12 hours of continuous work, the performance drops to zero, do not be afraid to rest - in the end you will do more! It is possible to have time to the target date in only one way - by discarding part of the intended functionality.
Show this paragraph to the manager
Managers would be very helpful to participate in such events. I see his role as follows: this is a person who does not allow programmers to work more than 4 hours in a row; he always knows the priority of the functional, and understands which part of it can be abandoned. The manager also has to manage the degree of “roasting” of the application: in 48 hours (and not only) you will not have time to make the whole project perfect, but some parts should be brought to shine, leave this task to the manager.
That's what happened with us:
http://ideahq.r12.railsrumble.comParticipate in hackathons!
PS If you have any questions about Rails Rumble or our application - feel free to ask them in the comments, I will answer with great pleasure.