Работал в Yandex, Mail.ru, занимался мобильной разработкой
Увлекаюсь социальными танцами
Полтора года назад сделал прототип ивентного сервиса для знакомых фестивалей
Dmitry Melnikov
Работал в Yandex, Mail.ru, занимался мобильной разработкой
Увлекаюсь социальными танцами
Полтора года назад сделал прототип ивентного сервиса для знакомых фестивалей
How to build a modern software product / service / pet project
With minimal resources
From a mobile developer perspective
How to reuse mobile dev knowledge
Discuss non-technical considerations
Give a review of a modern tech stack
Shortcuts for a mobile developer
Pragmatic choice of technologies
With limited resources in mind
Party
Pet project
Startup
Business
Молодым и активным просто нравится тусоваться, поэтому такие хакатонные команды, как правило, останавливаются на процессе, не заботясь о результате (продажах).
Для многих Pet project – монотонно убывающая функция, потому что интерес пропадает на моменте, когда новая технология изучена и опробована. А вдохновения от реальных пользователей нет.
Некоторые изначально исходят из идеи стартапа. Мои друзья делают сервис PaaS с гибридным клаудом, распределенным
Gistroll / Educa
В 2014 он уволился и пошел в бизнес-инкубатор Яндекса. Сделал платформу для опросов и квизом, она взлетела и они собрали 1М пользователей за полтора месяца. Но заработали с этого всего какие-то десятки тысяч $
Потом переделали её в сервис обучения английского. И дела были оч хорошо – 40К юзеров, 1К платящих. Он это финансировал сам и потратил кучу денег. В итоге в 2015 грянул кризис и он всё свернул, отказавшись от инвестиций. Как он говорил, когда своих денег почти не осталось, то как-то странно было брать деньги и вливаться в историю на 5-10 лет. Типа по дешевке купил MBA.
Сейчас он делает бизнес SQLhabit.com
Vision is a foundation
Если есть видение (vision) того, какой ты хочешь получить результат, то вспомогательные средства не нужны. Четкий, ясный вижн всё делает сам.
Основа успешного стартапа – это рынок, для которого он делает продукт. Если хороший рынок, то "нормальная" команда добьётся заметного успеха. Если плохой рынок, то не спасет и "суперкоманда", нацеленная на кратный рост (и все такое прочее).
Курсы, тренинги, хакатоны – это хорошо, но как косметическая припарка, не более.
Dmitry Tarasov, Chaos Control founder
Если есть видение (vision) того, какой ты хочешь получить результат, то вспомогательные средства не нужны. Четкий, ясный вижн всё делает сам.
Основа успешного стартапа - это рынок, для которого он делает продукт. Если хороший рынок, то "нормальная" команда добьётся заметного успеха. Если плохой рынок, то не спасет и "суперкоманда", нацеленная на кратный рост (и все такое прочее).
Хакатоны, курсы, тренинги – это хорошо, но как косметическая припарка, не более.
https://www.facebook.com/tarasov.dmitriy/posts/10159432210848782
Rusprofile
Crunchbase
История про Go Here, которые не понимали что они делают и зачем. Рынок исследовали натуралистически, не изучая как зарабатывать и сойдется ли экономика.
Для моего случая топовые игроки в РФ имеют оборот > 500 млн ₽ в год.
История про почти пустой рынок Egoistica из-за его нелегального состояния (Market Research недоступен). И я все время основателю советовал общаться с потенциальными пользователями, чтобы было понимание надо это кому-то или нет.
В идеале провести presales.
Forms your product vision
Helps to build roadmaps, milestones, etc…
Проверка боем нужна, это формирует продуктовое понимание. Становятся очевидными пути развития, roadmap и прочее.
❤️ designers
Без красивой обертки – никуда. Держитесь толковых дизайнеров и иллюстраторов. Лучше вести с ними дружбу, холить и лелеять, чтобы потом в нужный момент они помогли. Ресурсов платить по $500 за логотип у вас может не быть.
Один из самых сложных процессов без ресурсов – подбор команды.
Заметно легче начинать с рядом единомышленников, причем желательно разнонаправленных. Особенно внимательно смотрите на те области, где у вас меньше всего компетенций. Для разработчиков это, как правило, продажи, маркетинг и прочее.
Сложность в том, что и с самим собой бывает непросто договориться. А уж с другими голодными людьми и подавно.
Ads
Cold emails / calls
Sales Navigator (LinkedIn)
Круг заинтересованных знакомых закончится довольно быстро. Еще до того как вы начнете работы над продуктом, вам нужен план, что и как вы будете продавать.
Проработайте четкий алгоритм где и как вы будете брать клиентов, потому что больших бюджетов на контекст может не быть.
B2B: Sales Navigator (Linked In) B2C: холодные рассылки/звонки по заранее сформированному списку потенциальных клиентов
Read as: no resources
Все время держать в голове Limited resources. Нельзя импульсно потратить инвестиции (сбережения) на то, что не даст результат.
Правило 1000 дней, после которых вероятно начнутся реальные заработки (от https://popmechanic.io/)
Backend (API)
Storage
Static landing (SSG)
Admin console (SPA)
Web front (SSR)
CDN
Mobile clients
…
Backend (API)
Storage
Static landing (SSG)
Admin console (SPA)
Web front (SSR)
CDN
Mobile clients
…
"Full stack" now means you can:
Dear recruiters, if you are looking for:
That's not a Full Stack Dev. That’s an entire IT department.
© Giulio Carrara, Software Engineer
At Google, most engineers are too snooty to do mobile or web programming. “I don’t do frontend”, they proclaim with maximal snootiness. Steve Yegge
At the top of Snoot Mountain sit the lofty Search engineers writing in C++, which is considered cooler than Java, which is cooler than Python, which is cooler than JavaScript.
And Search is cooler than Ads, which is cooler than Apps, which is cooler than Tools, which is cooler than Frontends. And so on.
Who will steal Android from Google?
At Google, most engineers are too snooty to do mobile or web programming. “I don’t do frontend”, they proclaim with maximal snootiness.
There’s a phenomenon there that I like to call the “DAG of Disdain”, wherein DAG means Directed Acyclic Graph, which is a bit like a flowchart.
At the top of Snoot Mountain sit the lofty Search engineers writing in C++, which is considered cooler than Java, which is cooler than Python, which is cooler than JavaScript.
And Search is cooler than Ads, which is cooler than Apps, which is cooler than Tools, which is cooler than Frontends. And so on.
Programmers love to look down on each other. And if you’re unlucky enough to be a Google mobile engineer, you’re stuck scuffling around at the bottom of several totem poles with everyone looking down on you.
server(s)
cache
microservices
OpenAPI / GRPC / QUIC
100% test coverage
🍒 bit operations
We need {X}, despite {Y} being a much easier alternative, because when {Z}, it will make our lives easier.
Where {Z} is an event that might happen sometime in the far future.
We need {X}, despite {Y} being a much easier alternative, because when {Z}, it will make our lives easier.
Where {Z} is an event that might happen sometime in the far future.
Here’s some examples:
We need {X}, despite {Y} being a much easier alternative, because when {Z}, it will make our lives easier.
Where {Z} is an event that might happen sometime in the far future.
Here’s some examples:
We need to use a Kubernetes & Docker based solution for our infrastructure, despite a single large server being a much easier alternative, because when we will need to scale it up to 11, it will make our lives easier.
We need a distributed design for our data processing, despite a centralized solution being a much easier alternative, because when a customer demands 5 9s of uptime in the SLA, it will make our lives easier.
https://blog.cerebralab.com/Stop_future_proofing_software by
We need to hire a team of developers and build in-house software, despite wordpress and shopify being a much easier alternative, because when our customer base grows to 100 times what it is now, it will make our lives easier.
We need to use an inheritance based design for our types, despite composition being a much easier alternative, because after 5 years of codebase growth, it will make our lives easier.
We need to write this code in C++ and have a materialized views based caching layer, despite a Python script that queries Postgres directly being a much easier alternative, because when our data volume increase by a lot, it will make our lives easier.
The problem here is twofold:
The problem here is twofold:
I hate code, and I want as little of it as possible in our product.
Jack Diederich
The problem here is twofold:
I hate code, and I want as little of it as possible in our product.
Jack Diederich
Too much "convention over configuration"
DI, DAO
Simple and polished
AnySimpleApplicationServer<T>
There are lots of alternatives (Ktor / Vapor / Perfect)
SQLite is a self-contained, file-based and fully open-source RDBMS created by D. Richard Hipp in 2000.
Does it work at all under load? Yes, with WAL
Sqlite has 10x more test code than source code:
≈1200 tests vs ≈120 source files | 80 Mb test code vs 8 Mb source code.
Even some distributed solutions are based on SQLite:
ORM upside down: not sources → SQL, but SQL → sources
*.sq
files with SQL and named queries
It generates typesafe Kotlin APIs from your SQL statements. It verifies your schema, statements, and migrations at compile-time and provides IDE features like autocomplete and refactoring which make writing and maintaining SQL simple.
SQLDelight does slightly less than a mature ORM. But less is more.
Can be used in iOS and Android with KMM.
And even on a JVM backend with different RDBMS (MySQL, PostgreSQL, HSQL, SQLite).
Strapi | strapi.io
Contentful | contentful.com
Directus | directus.io
Strapi | strapi.io
Contentful | contentful.com
Directus | directus.io
or even 😳
Google Drive CMS | drivecms.xyz
)
It covers all platforms at once
It's a whole new world
Node - a JavaScript runtime built on Chrome's V8 JavaScript engine
NPM - the package manager for Node.js
Webpack - a module bundler
Vue | React | Svelte
Is good enough
<!DOCTYPE html><html lang=en><head> <meta charset=utf-8> <title>Single page application</title> <link href=/js/app.93487a00.js rel=preload as=script> <link href=/js/chunk-vendors.25dcdeb2.js rel=preload as=script></head><body> <div id=app></div> <script src=/js/chunk-vendors.25dcdeb2.js></script> <script src=/js/app.93487a00.js></script></body></html>
Pros
Cons
Jekyll / Hugo
Next.js / Gatsby
Nuxt.js / VuePress
Modern forms
based on chat bots | without backend | with notifications
Pre-rendering | Decoupling | serving directly from CDN
Web server
Load balancer
SSL termination
Reverse proxy (router)
Rate Limiter
HTTP cache
Mail proxy
Docker nginx-proxy + acme-companion
*.somehost.com
user1.somehost.com
DNS-01 challenge
To isolate their app from its environment
Container is an isolated process on a host
Image is a isolated filesystem for a container to work with all deps, configuration, scripts, etc
version: '3.7'services: api: image: username/eventsheep-api-image:${VERSION_API} container_name: eventsheep-api-${VERSION_API} volumes: - data:/data environment: - BUILD_TYPE=release restart: always
Digital Ocean
AWS
Russian alternatives
Object storage with a built-in CDN for images & files
Digital Ocean Spaces
AWS S3
Russian alternatives
$$$
mdv.eventsheep.com/cross-platform
Task | Time, months |
---|---|
MVP backend refactoring | 0.5 |
Diving into Vue | 0.5 - 0.75 |
CSR SPA admin console | 2.5 |
SSR web client | 1.5 |
Deploy | 0.5 |
Wildcard certs | 0.5 |
CMS | 1.5 |
Linkify, Markdown, YouTube | 1 |
Landing | 1 |
Forms | 1.5 |
It's a challenge
Requires knowledge and experience
Assumes investments
You're on your own
Inspiring & encouraging
Knowledge boost
Like a child
Valuable
Работал в Yandex, Mail.ru, занимался мобильной разработкой
Увлекаюсь социальными танцами
Полтора года назад сделал прототип ивентного сервиса для знакомых фестивалей
Keyboard shortcuts
↑, ←, Pg Up, k | Go to previous slide |
↓, →, Pg Dn, Space, j | Go to next slide |
Home | Go to first slide |
End | Go to last slide |
Number + Return | Go to specific slide |
b / m / f | Toggle blackout / mirrored / fullscreen mode |
c | Clone slideshow |
p | Toggle presenter mode |
t | Restart the presentation timer |
?, h | Toggle this help |
Esc | Back to slideshow |