Introdução
Cumprimento a todos, meu nome é Kirill, sou gerente de produto ou engenheiro, organizador ou capataz e técnico, ou talvez nenhum, sinceramente não sei quem sou de profissão, mas em um período relativamente curto consegui formar uma equipe desenvolvimento, instaladores, designers que, por sua vez, conseguiram implementar um grande produto no campo da IoT. Neste artigo, gostaria de compartilhar com vocês os erros que cometemos no desenvolvimento de produtos e os erros nas áreas legais e contratuais de desenvolvimento de produtos.
Então, tudo começou a partir do momento em que deixei o cargo de engenheiro de projeto de equipamentos para elevadores, e com a formação de tecnólogo em engenharia mecânica, consegui um emprego em uma grande construtora da cidade, como administradora de sistemas de coleta automatizada de medidores e controle de fornecimento de meios térmicos a apartamentos, como Casa inteligente em um prédio de apartamentos. Naquela época, o desenvolvedor tinha os seguintes requisitos:
- Contabilizando todos os dispositivos de apartamento
- Controlar o fornecimento do meio térmico de acordo com o princípio do termostato
- Análise de consumo
- Alarmes e avisos
- Interface para a gestora com todos os objetos
- Interface residente
As casas foram construídas grandes, com 20-25 andares de altura, com uma média de 280-300 apartamentos por seção. Naquela época, a incorporadora tinha cerca de 10 dessas casas e
, com os trabalhos iniciados, a primeira coisa que fiz foi descobrir como funcionam os dois sistemas já implantados nas obras do cliente. Eram dois sistemas completamente diferentes: desde os protocolos de transmissão entre o servidor e o equipamento de campo (alguns têm CAN-bus, os segundos têm Modbus RTU e TCP), até a própria arquitetura da aplicação (alguns têm software autoescrito implementado na nuvem, o segundo tem SCADA para cada objeto com computadores locais).
Mas uma coisa que esses caras uniram, ambos eram fabricantes de seus próprios equipamentos (blocos, controladores, gateways), que vendiam a preços absurdamente altos, seus equipamentos não tinham certificados, esses. documentação, e não havia possibilidade de intercambialidade. Assim, quando o dispositivo falhava, e isso acontecia muito, tínhamos que comprar o equipamento deles por um preço inflacionado. E mais alguns momentos desagradáveis no trabalho com esses camaradas.
Atualizar o aplicativo em termos de funcionalidade era impossível e não porque o preço era muito alto, mas porque eles não podiam / queriam / sabiam calcular o custo da revisão, e não precisavam disso. Eles tinham uma empresa construída para manter e substituir seus dispositivos.
Pagamos por software o tempo todo, mas qual software? Licença, compra de software sob contrato, desenvolvimento de software? Existe apenas uma resposta para todas as perguntas - "Nosso software, escreva cartas."
Na verdade, todos os fatores acima levaram ao fato de eu sugerir montar uma equipe de desenvolvedores e cortar algo semelhante nós mesmos, mas utilizando equipamentos de fábrica disponíveis no mercado do país e da Europa.
Primeiras decisões e acordos
E então eu vim negociar com minha gestão - diretor # 1. Ele se ofereceu para montar uma equipe para o desenvolvimento de um ciclo completo de desenvolvimento de produto - design - instalação - start-up - operação. Para começar, concordamos em terceirizar um desenvolvedor de back-end - Lech e terceirizar uma equipe de desenvolvedores e designers da web. Os custos para mim e para Lyokha foram tão pequenos que é uma pena até pensar nisso, mas arrisquei por cinco motivos:
- , , , .
- ! .
- .
- , .
- , .
MVP
Para comemorar, compramos o primeiro controlador Siemens Modicon MT221 com ModBus TCP a bordo, durante quatro dias escrevemos um programa nele na linguagem de Diagrama Ladder, em que, ao fechar os contatos, o registro muda de 0 para 1, testamos usando o programa Modbus Poll (grosso modo, cliente Modbus TCP ), e aqui Leha diz:
“No departamento, fomos ensinados que tais tarefas são resolvidas usando sistemas SCADA”
Ao que eu respondi:
“Leha, você tinha que lutar contra o mal, não se juntar a ele.”
Decidimos fazer isso - Lech está tentando encontrar o SCADA e recuperar dados do controlador e armazená-los em algum lugar, e vou tentar escrever um programa em Java, eu estava apenas fazendo cursos Java Elementary naquele momento (meu professor dos cursos sabia que eu tentaria código ...).
E, como resultado, Lech recebeu dados do controlador via ModBus TCP primeiro, mas bloqueou seu computador com uma tela azul por causa de 4-6 SCADs no computador. E com a ajuda do Java e 5 linhas de código, retirei os dados, Lesha gostou e mergulhou no mundo do Java e posso dizer com orgulho que ele se tornou um especialista muito bom.
Pelo que me lembro agora, em 10 de março de 2018, iniciamos o primeiro projeto. Tivemos 6 meses para escrever um programa, criar um design, liberar a documentação do design, instalar e inicializar.
Entrei completamente em design, seleção de equipamentos e topologia de rede, instalação e design (eu mesmo fiz o primeiro projeto no AutoCAD, e na primeira vez puxei cabos na instalação), e Lech assumiu tudo relacionado ao servidor, voltar e DB.
Muitos não acreditaram no nosso sucesso e não nos estabeleceram tarefas específicas, soava mais ou menos assim:
- retire os dados dos contadores
- exibir em algum lugar
Inicialmente, tivemos uma visão de como isso deveria funcionar. Descrevemos nossos requisitos mínimos para o que queremos alcançar:
- temos que coletar leituras de medidores de calor, medidores de água fria e quente, medidores elétricos
- receber dados de todos os sensores de temperatura localizados em apartamentos
- controlar a temperatura do apartamento usando este sensor e as configurações que o inquilino definirá
- o inquilino deve ter sua própria conta pessoal, na qual o usuário inquilino receberá dados sobre seus apartamentos: gráficos de leituras, feedback da administradora, controle de temperatura
- os administradores devem ter um aplicativo da web com todos os dados do sistema, alarmes, usuários e análises
Em 1 mês, tentamos todas as soluções prontas que encontramos em 20 páginas de pesquisa do Google. Cada solução teve 1 ou mais dos seguintes problemas:
- sem autenticação dividida
- não há como criar uma API segura para os dados coletados
- design dos anos 90
- desempenho ruim
- baixo nível de personalização da lógica de backend
- preços inaceitáveis para a solução da tarefa selecionada
Meu instinto nos disse que, se usássemos um desses sistemas, não seríamos melhores do que nossos concorrentes. O que nos levou por um caminho diferente, um caminho lindo. Pegamos o caminho de escrever nosso sistema e produto na melhor linguagem do mundo, Java ou EasyModbus. E quando modificamos ligeiramente o código e forçamos o console a relatar um pressionamento de botão para nossa alegria, simplesmente não havia limite. No caminho para casa, não conseguimos nos acalmar e conversamos sobre quantas oportunidades isso poderia nos dar! Criaremos nosso próprio SCADA com um belo aplicativo da web e uma casa inteligente. Naquela noite, traçamos planos para o ano seguinte. Mas tudo ainda estava pela frente ...
Começamos pequenos e, um mês depois, tínhamos o software controlador de temperatura escrito em FBD pronto. Nossa pilha de back-end era Java 8 + MySQL. Logo, as classes estavam prontas para funcionar com nossos controladores livremente programáveis. Um mês depois, testamos com sucesso um monte de nosso back-end e um gateway que interrogava medidores de calor usando o protocolo M-BUS. Aprendeu como trabalhar com MySQL. Começamos a escrever todos os dados recebidos no banco de dados. Para ler leituras de medidores de eletricidade via interface RS-485 (PLC não era adequado para nós), fizemos um protocolo de engenharia reversa a partir dos dados iniciais do monitor da porta USB.
Nossa experiência de programação naquela época era de alguns meses, olhando para ele agora - sangue está saindo de nossos olhos. MAS esse código de merda funcionou - é um milagre. Somos caras muito motivados e lutamos pelo conhecimento com uma força terrível. Tivemos muita sorte e todas as dificuldades apareceram aos poucos: os primeiros problemas com multithreading e banco de dados - e descobrimos c3p0 para nós mesmos, uma grande quantidade de dependência - aprendemos a trabalhar com maven, problemas de desempenho ao ler o banco de dados - e não sabíamos disso tais índices, cada bit de informação recebido foi aplicado no projeto.
Para mostrar às autoridades a seriedade de nossas intenções, montamos um estande que demonstra o trabalho do nosso sistema em toda a casa. Tínhamos 20 controladores de temperatura, 150 sensores de temperatura, 60 medidores de calor (o máximo que pudemos), 2 gateways MBus, um roteador e 16 roteadores. Nós apenas crimpamos o cabo FTP por 2 dias. Com isso, o estande é montado, o software é configurado, o mock da interface web é lançado - o diretor vem para assistir à obra.
Primeira posição
Tudo assobia, bobina, clique, resolve tudo instantaneamente, os logs são executados, os dados dos dispositivos são coletados corretamente. Colocamos o designer Vova, o administrador do sistema Yura e 3 instaladores em nossa equipe. O processo de desenvolvimento, design e instalação ocorreu em paralelo. Enquanto os caras perseguiam as paredes e colocavam os cabos, o designer fazia projetos e diagramas de conexão para eles, enquanto as placas eram instaladas, e testávamos novos recursos nelas, enquanto o software estava sendo desenvolvido - o rack do servidor estava sendo montado.
Como resultado, demoramos meio ano para que 144 apartamentos fossem integrados ao sistema e os primeiros usuários a quem entregamos pessoalmente os códigos QR de registro. Mas não queríamos parar por aí, nossa tarefa final era criar uma plataforma IoT aprimorada para BMS, e depois ela vai se expandir para a integração de objetos técnicos (caldeiras, pontos de aquecimento, portas traseiras e instalações de produção) e casas inteligentes.
Passamos o ano seguinte refatorando nosso MVP e adicionando vários recursos. Desta vez tínhamos um plano, uma arquitetura, ambições ainda maiores e sangue novo - contratamos 2 alunos. O primeiro aluno, Yarik, trabalhou no backend de nosso produto, e o segundo, Sashka, trabalhou no Arduino e em outros computadores de placa única para uma casa inteligente.
Focamos ativamente no mercado de UD e BMS: conversamos com clientes em potencial, fomos a exposições, nos comparamos com concorrentes. Em algum momento, percebemos que o que criamos é um fenômeno para o mercado ucraniano, e nenhum dos concorrentes em potencial pode fazer algo semelhante ao que podemos oferecer. Temos um sistema BMS escalável e personalizável, com um poderoso sistema de reconhecimento e administração de alarmes, com API, com drivers para os medidores mais populares na Ucrânia, podemos adaptar a qualquer cliente. Queríamos sair de nossa empresa e seguir por conta própria.
Primeiro sucesso e imediatamente uma panela na cara
Então, nos primeiros pares de sucesso, já estamos implementando 3 objetos (no momento são 2 caldeiras, 4 pontos de aquecimento, 4452 unidades de medidores diversos, dados de 1164 apartamentos), está tudo bem, as aplicações não estão espalhadas, o equipamento se comporta muito bem, instalação em altura, está tudo bem, eu e a equipa estamos à espera de prémios e bónus ... mas em vez disso só “Egegey galera, grandes companheiros, OBRIGADO!”.
Aí começou o seguinte: não tem dinheiro, não financia, mas o produto tem que ter continuidade, é preciso desenvolver a marca, instruções, etc. ... Para ser sincero, ficamos surpresos com o sucesso (e para nós foi um grande sucesso, os caras um engenheiro mecânico e um metralhador de educação implementaram um sistema bastante grande) , continuamos, entramos em greve, choramingamos, mas continuamos a cortar…. Ao mesmo tempo, eles otimizaram constantemente o sistema para hardware, buscaram descontos e otimizaram topologias para reduzir custos.
Como resultado, o diretor nº 1 deixa a empresa do desenvolvedor, eu saio com a equipe também, nosso produto permanece nos sites antigos, não há sites novos, mas para onde ir? O que fazer? Ficamos tão presos na rotina de desenvolvimento que perdi o momento do campo certo (quem possui o quê, de quem software, quais direitos de uso do software), promoção e outros momentos tão necessários para o sucesso do produto. Abandono todos os momentos associados ao desenvolvimento e me jogo na pesquisa de mercado, tentando encontrar clientes, e entendo que nosso produto é muito específico para desenvolvedores, nem todo mundo precisa dele - todos os desenvolvedores têm um slogan, feito com menos dinheiro - têm mais dinheiro.
Então meu diretor aparece e se oferece para criar uma empresa cujos fundadores serão ele e seu sócio, mas ao mesmo tempo, supostamente minha equipe e eu estamos em sua metade da empresa (50%), de acordo com os acordos NÓS (ele, eu e a equipe) decidiremos tudo o que diz respeito desenvolvimento do produto, para aceitar como e para onde nos mover (bem, entre nós, meninas, isso não aparece nos jornais em parte alguma). Concordo em desespero, digo para a equipe, gente, encontramos um investidor, blá, blá, mas não estamos entre os fundadores, e pela primeira vez ganhamos salários minúsculos (bem, como uma startup, como me falaram), reduzimos os custos o máximo possível (bem, uma startup que dura dois anos, nada inicializável). Os caras da equipe falaram: “Talvez não seja necessário, tudo cheira estranho.”, Mas estou queimando (tenho dívidas com a caixa de salário, um segundo filho e outras despesas), entendo que devo continuar a qualquer custo.
Conheço o diretor número 2, e entendo que algo não está bem, como poderia ser de outra forma. Algumas reuniões e percebi que o diretor # 2 nos anos 90 era um programador do exército e queria muito se realizar nessa área, ele começa a nos desenhar diagramas com o local do despachante, com o servidor 1C, jogar palavras bonitas, inserir a palavra API em todos os lugares, ordem Branding e faias da marca “tão necessários neste momento”.
Fomos financiados o mês todo pelo diretor 1, muito obrigado a ele, e com o diretor 2 havia um mercado, supostamente ele tinha um cliente gostoso que está pronto para começar a trabalhar.
Nós resistimos por um mês, ou melhor, eu resisti. Só me comuniquei com os diretores nº 1,2, pois meu objetivo era proteger minha equipe de suas reuniões constantes, tentativas constantes de jogar algumas tarefas e outras burocracias. Sempre ouvi do diretor nº 2: “O que você está fazendo? O que você está fazendo? ”, Respondemos:“ vimos o modelo de domínio, testamos LoRa Wan, pesquisamos o mercado em termos de formadores de opinião e o canal de venda de produtos, projetamos painéis para acidentes e avisos ”, nenhuma pergunta construtiva foi recebida em resposta. Desconfiança e desconforto eterno, como você pode continuar a criar um produto legal.
Na verdade, nenhum cliente não apareceu, e em uma das reuniões o diretor nº 2 me disse: "Kirill, não me importo com o quanto você move este projeto, você vai fazer o que os dois diretores vão te dizer", levantei-me e respondi: "Senhores, boa sorte ”apertou a mão deles e saiu.
Sentimentos e equilíbrio
Muitas pessoas conhecem essa sensação quando você faz um trabalho, se entrega ao máximo, se coloca uma parte de si mesmo e não obtém o retorno adequado, embora tenha sido, mas simplesmente se escondeu de mim e dos caras. Você continua fazendo este trabalho, embora entenda que não recebe dinheiro por isso, mas não pode desistir porque desistir é o mesmo que pegar e partir para outro país de amigos e familiares, tirar e se separar de uma parte de algo grande , significativo. Não desistimos, começamos a queimar, começamos a entender que não poderia continuar assim. Isso é muito doloroso.
Agradeço ao Diretor nº 1 por todas as suas deficiências e vantagens, ele acreditou em nós e nos apoiou, vou me lembrar disso e sempre vou apoiá-lo também. Com o passar dos anos, minha equipe e eu nos tornamos pessoas muito próximas e não consigo expressar em palavras, só entendo que, se tivermos que nos separar, vou sentir falta deles de todo o coração e daqueles momentos.
Conclusões e conselhos
As conclusões que tirei:
- Não conhecendo o vau não vá para a água, principalmente quando a questão é monetária. Verifique tudo, conte, calcule o fluxo de caixa, não se engane na quantidade de trabalho e, o mais importante, na tecnologia e na agilidade de sua aplicação. Por mais estranho que seja falar com a equipe, e não se esqueça da estratégia, que seja crua, não volumosa, mas é necessária.
- , . , . , , , .
- . .
- , . , .
- , , , , , , .
- , , , . 90% .
- , №1 2, , , . , , , , 5 , . , , ( , ). — .
- .
Agora estamos vendo uma nova plataforma, expandindo a funcionalidade (adicionando "homecracy" e serviços para residentes, ferramentas analíticas e uma interface de gerenciamento e sala da caldeira mais sofisticada), adicionando novos dispositivos e dispositivos de medição.
Ao mesmo tempo, procuramos cliente e investidores. Difícil, muito trabalho e sem recursos. Vamos lançar o site um dia desses.
Paz e sucesso a todos!
Continuação da série de artigos:
"Casa inteligente" em cada apartamento de um prédio de apartamentos, ou o nosso MVP