Sejam bem-vindos, querido Khabravchane. Durante muito tempo, escrevi um artigo aqui sobre mim e meu projeto. Neste artigo, gostaria de contar minha história da origem da ideia do projeto. E também escreva sua história do desenvolvimento de pontos de vista sobre o desenvolvimento de software em geral. Talvez até eu seja capaz de transferir parte do conhecimento com base em meus muitos anos de experiência como programador. Vamos lá!
Sobre mim
Vou falar um pouco sobre mim. Meu nome é Alexander, trabalho como programador há mais de 10 anos. Tive que resolver problemas em várias áreas de negócios, como bancos, comércio eletrônico, projetos de estruturação de dados, analisadores e outras tarefas do setor empresarial.
O objetivo deste artigo é mostrar uma das facetas do mundo do desenvolvimento de software e, possivelmente, abrir uma nova porta de oportunidade para outros programadores. O que quero dizer com esta afirmação?
Estágios de desenvolvimento do programador
Certamente, você já leu artigos sobre os estágios de desenvolvimento dos programadores. Na minha opinião, todo programador passa por estágios de desenvolvimento em sua carreira profissional.
Eu defini esse caminho de desenvolvimento para um programador em 5 etapas:
- A primeira etapa é quando você é um estudante ou ainda é novo na programação. Você só gosta de ver o resultado do que programou, seja uma janela com o botão "Hello" ou um analisador de dados que analise e estruture.
- O segundo estágio é quando você já escreve integrações complexas e usa estruturas avançadas. E você gosta do fato de ter dominado outra ferramenta.
- O terceiro estágio é quando você começa a descobrir a melhor forma de projetar estruturalmente o aplicativo. E você é louco pelo fato de ter dividido corretamente a lógica em componentes.
- O quarto estágio é o estágio do deus do desenvolvimento de software. Você entende todas as etapas anteriores e gosta de criar um sistema para montar e entregar todos os módulos de aplicativos em um único instalador conveniente e automatizado.
- O quinto estágio é o mais triste. Você entende que sua coisa favorita não traz mais essa euforia anterior e apenas faz tudo na máquina. Então chega o momento de você simplesmente criar seu produto e levá-lo ao mercado, resolvendo o problema de alguém ou simplesmente melhorando algum tipo de fluxo de trabalho.
Ideias de nascimento e morte
Como você provavelmente já entendeu, esses estágios são baseados na minha experiência pessoal. Portanto, talvez alguém tenha uma experiência de desenvolvimento completamente diferente. E não declaro que seja de outra maneira. Além disso, falaremos sobre o 5º estágio de desenvolvimento e o que fazer em seguida.
Uma vez uma ideia muito interessante caiu na minha cabeça. Antes disso, é claro, fui por uma semana e pensei em que tipo de serviço eu "cortaria". E, sério e deliberadamente, decidi fazer algo grandioso.
A idéia era criar uma plataforma, de fato um site, que permitisse a todos contar aos outros sobre suas habilidades em algo em que ele se destacava em relação aos outros. Por exemplo, um pescador ávido, quer compartilhar sua experiência sobre como capturar poleiros ou carpas corretamente. Ele cria um evento nesta plataforma com a data do seminário e coloca um vídeo promocional ou apenas uma descrição do seminário. Outros usuários votam de maneira interessante ou não, ao coletar um certo número de votos, o evento é aprovado pela plataforma ou rejeitado devido à falta de votos no suporte. Além disso, a pessoa que postou este evento tem a oportunidade de definir o valor para participar deste seminário. O proprietário desta plataforma foi obrigado a organizar totalmente este evento. Assim, tendo uma pequena comissão sobre a venda de ingressos. Aqui está a monetização finalizada.
Já consigo ouvir em seus pensamentos: "Sim, já é, por que fazer a bicicleta novamente?" Mas faz sentido, voltarei a esta afirmação. É claro que, no final, a ideia se transformou dramaticamente em outra, mas sem a tarefa principal, eu não teria visto esse problema.
Apenas um CMS
Surgiu então a questão de qual tecnologia fazer tudo isso. Sem pensar duas vezes, comecei a olhar o CMS existente e outras plataformas para a montagem rápida desse tipo de projeto. A solução era tal que eu usava algum tipo de mecanismo para trabalhar com dados e apenas fazia um focinho na Web para recuperar esses dados via REST. Eu não iria me aprofundar no desenvolvimento completo. No final, eu ainda precisava.
Minha visão sobre desenvolvimento de software
Para cada tarefa, sua própria ferramenta. Eu sempre tento aderir a esta regra no desenvolvimento de software. Outro fator importante é a divisão da lógica em áreas tecnológicas de responsabilidade. Para mim, os limites claros da integração entre diferentes tecnologias são importantes. Em outras palavras, eu gosto quando o front-end é separado do back-end, por exemplo. Ou seja, da palavra "completamente". Ou existem módulos, integrações estruturalmente dedicados e tudo isso funciona de forma independente. Agora é chamado de microsserviços.
Eu acho que é mais fácil organizar o trabalho no projeto, dividindo os desenvolvedores em equipes de acordo com sua competência.
Isso é tudo! Eu decido fazer uma nave espacial
Com base na experiência, pensei que precisávamos de uma ferramenta que nos ajudasse a formar designs de páginas a partir de blocos prontos e conectá-los aos dados e serviços dessa plataforma diretamente do navegador. O critério principal não era uma programação estritamente especializada para cada tarefa. Tudo deve ser abstrato e como construtor.
Depois de passar duas semanas procurando algo semelhante e experimentando dois CMS gratuitos -
Drupal e
Wordpress (tentei usá-los como um mecanismo de integração de gerenciamento de dados e API REST). Mas nenhum deles satisfez meus requisitos. Por isso, decidi escrever meu CMS com "blackjack e prostitutas".
Tecnologia
A próxima pergunta a ser resolvida foi a escolha de uma pilha de tecnologia para implementação. Sem pensar muito, certamente preferi fazer tudo em
Java . Só era necessário decidir quais estruturas seguir. O critério na escolha de estruturas foi este - para não demorar muito e usar apenas as partes necessárias da ferramenta (mais tarde, me arrependi um pouco da escolha). Para criar a interface do painel de administração, selecionei uma estrutura AJAX pouco conhecida de Taiwan -
ZK Framework . Eu gosto da abordagem MVVM, e seu componente AJAX (agora eu já considero isso um sinal de menos). Como você não precisa escrever toneladas de JS para monitorar a relevância do estado da interface do usuário na página (no momento encontrei uma alternativa melhor).
Que tipo de pilha de tecnologia eu recebi como resultado:
- ZK Framework (MVVM)
- Java (EJB)
- Jax-rs
- Mongodb
- Wildfly
Bem, vá em frente!
E fui direto para esse projeto, enquanto trabalhava em projetos por um salário. O tempo para o meu projeto era principalmente à noite e nos fins de semana, às vezes, em algum lugar em que conseguia ganhar tempo no meu trabalho principal, eu trabalhava lá também. No processo de trabalho no projeto, o princípio da implementação mudou várias vezes. O modelo de dados também passou por muitas modificações. Paralelamente, contei aos amigos dos programadores no que estava trabalhando, me ofereci para ingressar no projeto e começar a trabalhar juntos. Infelizmente, continuei fazendo esse projeto sozinho. Como resultado, passei 3 anos para obter uma versão funcional da funcionalidade pretendida.
Sozinho no campo não é um guerreiro, ou ...
Então eu ainda queria criar uma equipe. Comecei a registrar meu produto como uma startup em um dos aceleradores de negócios. Mas ele não terminou sua inscrição, tendo parado no estágio "Sua equipe".
Eu sempre disse aos meus amigos que trabalhavam na área de TI (tecnologia da informação) ou na área de TI.
No final, consegui encontrar
o mesmo cliente potencial
louco para o meu produto. Ele, como eu, decidiu fazer o seu produto, mas ele não é um programador. E ele precisava de uma plataforma para seu produto. Eu decidi, aqui está! Eu nem precisava me oferecer para usar meu CMS, fui solicitado a criar um site nele. Livre, é claro. Foi minha chance de experimentar meu CMS em desenvolvimento real. E você sabe, fiquei agradavelmente surpreendido, mas meu CMS lidou com essa tarefa 100%. Sim, é claro, trabalhei em muitas coisas durante o processo de montagem, melhorei-as e simplesmente “consertei” bugs. Mas, no final, eu fui capaz de puxar com flexibilidade todos os designs e modelos para as páginas, conectar e integrar dados e serviços de fontes de terceiros.
E os suíços, e os ceifeiros, e o cara
A partir desse momento, percebi que você precisa desenvolver seu conhecimento na área de marketing e ler livros sobre como construir seus negócios. No processo, participei desse produto em uma hackathon do
MongoDB , recebi parcialmente a reação do público a esse produto. No social. as redes responderam e até compartilharam minha mensagem sobre o que fiz no CMS. De acordo com os resultados do hackathon, certamente não recebi um único prêmio, mas fiquei satisfeito por ter participado.
Enquanto esperava os resultados do hackathon, ainda fiz duas tentativas de "conectar" meu produto a eventos de promoção de investimentos. Após o que eu já vi uma resposta animada da platéia. O que me trouxe uma ótima experiência.
Resultado
O que no momento eu tenho:
- Um certo MVP (produto viável mínimo) que cobre a funcionalidade:
- padronização flexível
- armazenamento de arquivos
- modificações rápidas do modelo de dados
- integração com serviços REST
- gerenciamento de funções e usuários no MongoDB
- Experiência na apresentação de um produto de TI e na reação do público.
- Parceiros no trabalho em produtos de TI, motivados a resolver problemas apenas para a ideia.
- E um grande roteiro para desenvolvimento adicional de produtos. No momento, na pilha de tecnologia, concebi um processamento enorme e quase uma mudança completa dessa pilha de tecnologia. Além de extensões de funcionalidade.
- Deixo a ideologia em implementação da mesma forma.
Conclusão
E agora voltarei aonde comecei. Há sempre uma razão para criar seu produto, mesmo que todos ao seu redor digam
"sim, já fizeram, fizeram tudo antes de você" . Chamo essas pessoas de palavra inglesa
Naysayer , uma vez que ouvi essa palavra de Arnold Schwarzenegger em um de seus discursos motivacionais.
Várias maneiras possíveis de desenvolver um produto:
- Dê para código aberto
- Junte-se a produtos relacionados
- Reúna uma comunidade de pessoas tão loucas quanto eu que cria seus produtos e tenta comercializá-los.
Aqui está o vídeo promocional oficial:Aqui está o site oficial de demonstração do CMS:MastermindCMSPS: Gostaria de me desculpar pelo uso frequente de "americanismos" no texto. A gíria do desenvolvedor é muito cheia deles. Se eu parafraseasse tudo em sinônimos russos, teria perdido o estilo narrativo compreensível e atmosférico para os colegas do workshop.
Espero que você tenha gostado da minha história e alguém a ache útil. Tenha um bom dia produtivo!