So, given: the development team is a little over 50 people. We are mainly engaged in web development with all sorts of integrations, personal accounts and e-commerce. Recently, however, about 20% is mobile development. There is also a separate compact team writing in Dart / Flutter.
Objective: to prepare as many programmers from the core team as possible for mobile development tasks.
The main mobile stack we used before are React.Native and Flutter. Portability is important to us, they buy it. Both platforms have proven themselves worthy for developing business applications. There are known limitations and complaints from developers, but this is a topic for a separate article ("There are only two types of programming languages: those that people swear at all the time, and those that no one uses" Bjarne Stroustrup).
For example, Flutter apps turn out to be sexier and snappier (than React.Native), but when it comes to widgets , you have to write in native. Historically, we have more reactants (it is quite easy to switch from web React to React.Native), but Dart / Flutter developers are rare animals.
We already had experience in developing projects within the framework of hackathons (free oldies HelpDesk , Huizhin , PlanningPoker and a couple more feats). But practice has shown that taking an unfamiliar technology within the framework of a hackathon is a disastrous business. Half the time will be the IDEs tweaking.
I decided to make an internal competition with money and prizes for the first three places. The judge should have been the same experienced, compact team that had already eaten the dog on Flutter. It remains to choose a not very difficult project. It is desirable that it has some other practical meaning. I will say right away that not everything went smoothly, inexperience in such matters affected.
We decided to reincarnate Squarespace.Note, which its developer stopped supporting at one point. This is an "idea catcher" that you open, write a note to yourself and send it to your todushnik or e-mail. Yes, the idea of sending messages to yourself looks rather strange at first glance, but this is before getting to know the principles of GTD.
An internal competition was announced. The project was named SingularityNote. We gave the developers a design, a backlog, a technology stack (Dart + Flutter or React.Native) and all the competition cases: rules, jury and prize fund.
The only remaining Squarespace. Note we accidentally found on an old iPod docking station, where testers are charging their mobile phone zoo.
What are we writing
The task is simple: for 3 New Year weeks (the competition was held at the very beginning of 2020), make a minimalist note editor with the ability to send a note to SingularityApp, email or Evernote.
Features of the competitive application:
- a note can be sent to your SingularityApp , Evernote or by mail (+ setting their binding, + icon states depending on the sending settings),
- you can attach an image from the device gallery or a snapshot of a camera to a note,
- functions - minimum. All manipulations with notes - with one swipe:
- Send a finished note? Swipe up.
- Delete? Swipe down.
- See all sent notes? Swipe right.
- Change settings? Swipe to the left.
- And changing the theme when you shake your phone.
- interface language - ru / en, depending on the user's location,
- for each sent note in the list you can see: the beginning of the text, the date of creation, where it was sent,
- if the note could not be sent (for example, there is no Internet), it becomes gray, and when you tap on it, it is re-sent,
- advertising banner for our related project.
Technology stack and evaluation criteria
According to the conditions, the project could be carried out for:
- React Native (React + Redux (preferred) / Mobx (steam locomotive).
- Dart + Flutter (BLoc pattern must be used).
The aesthetic side was assessed by the art director. Usability and smoothness of interfaces - tester. Code quality - experienced programmers in mobile development.
To be eligible for the competition, an app must:
- contain mandatory features (without them, the project is not considered, disqualification);
- be fully functional and cover the entire work chain (except for items marked as “desirable” in performances);
- be developed on one listed technology stack;
- be developed exclusively outside working hours;
- and no cooperation with the jury.
How it was
Four development teams decided to participate. Start on January 4th. On the way, one team merged. The rest on January 27 submit their work to the jury for evaluation. Evaluated by two parameters:
- Cultural code. There should be no "game" in the code, and it can be easily maintained (from 1 to 10 points),
- Usability. Implementation quality. Application stability (from 1 to 10 points).
Judging is open. The app with the most points wins.
What then
And then we finalized what needed to be finalized and sent the application to the official Google Play and App Store. We drew and laid out the landos.
-
, . Android, iOS. iOS — , Evernote ( PRO- Evernote), QR- .
:
- , .
- , .
:
- , . , .
- It took a lot of time to polish and fine-tune even the decision that was taken for the first place. The project was shelved because there was so much work to do with these corona viruses that it was not up to it at all.
- Hackathons are fun stuff. But the competition requires a lot of effort and discipline.
I don’t know if we will be able to find a balance between practical benefits and the thrill of development next time, but we’ll feel it. If someone has experience how to combine business with pleasure, I will be glad to receive feedback.
You can see everything here
google play
eepstore .