Executando verificação de segurança...
2

Usar Git e Github como workflow de trabalho para códigos closed source faz sentido?

Estou em uma discussão na minha empresa atual e esbarrei na dúvida se faz sentido usar o workflow do GIT para códigos closed source.

Se alguém puder tirar minha dúvida!

Carregando publicação patrocinada...
3

O Git é flexível o suficiente para permitir uma variedade enorme de workflows diferentes. Existem alguns mais comuns, listados na documentação oficial, cada um com seus prós e contras, e situações em que são mais adequados que outros. E nada impede que vc crie um próprio, ou adapte um dos existentes para as suas necessidades.

Inclusive a decisão de hospedar os projetos no GitHub (que permite repositórios privados) ou em qualquer outro serviço similar (GitLab, Bitbucket, etc) são alternativas que devem ser discutidas e adaptadas para cada contexto.

Aliás, existe também a possibilidade de vcs terem seu próprio servidor. Por exemplo, vc pode ter sua instância do GitLab, instalada na infra-estrutura da própria empresa, assim vc tem controle total sobre ela (a desvantagem é que será mais uma coisa pra vcs cuidarem, e é algo que deve-se discutir se vale a pena).

Enfim, são inúmeras opções. Não se apegue a um workflow e/ou serviço específico. Discuta as necessidades do seu time, e veja qual a alternativa mais viável e que seja adequada ao seu contexto.

2

Obviamente! o git é uma ferramenta de versionamento de codigo, ponto. Por "acaso" foi adotado no open source, mas isso não quer dizer que se o código é fechado não precisa usar o git, git hoje é o melhor sistema de versionamento de códgio, qualquer base de código que não usa o um sistema de versionamento, está sujeita a problemas de trabalho em equipe, perda de codigo e outros...

1

Sobre o Git: se a sua empresa não achar que faz sentido então você está em uma empresa de amadores.

Sobre o Github: depende do que será utilizado.

Utilizar o sistema de issues e PR faz muito sentido para a organização do projeto, além de funcionar também como uma documentação do projeto. Se for para utilizar as ferramentas de CI/CD então vai ajudar muito na produtividade. Óbviamente não existe apenas o Github para isso, também existe o Gitlab e outros. Não necessáriamente você precisa ter um repositório aberto no github para utilizar essas funcionalidades, basta ter um repo fechado e compartilhar o acesso com o pessoal da empresa (aí depende se todos vão ter acesso para criar commits direto no repo principal ou se vão trabalhar com forks). Um exemplo disso é o próprio Tabnews, que inicialmente nasceu como um projeto fechado para os membros do Filipe Deschamps.

1

Muito obrigado! Vou dar uma olhada no Gitlab como um ponto de argumentação. Não necessariamente precisa ser hospedado no Github e dessa opção eu não sabia.

1

Para mim, faz total sentido. Utilizando metodologias como Git Flow o próprio git cria um fluxo de trabalho muito bem organizado. Outro ponto é que as issues criadas no github, por exemplo, servem como ducumentação.

Também garante integridade de implementação entre a equipe. Sinceramente, acho loucura desenvolver software sem a utilização do git, mesmo para casos de um único dev.

Temos opções mais complexas com o Bitbucket e o Jira, onde você vincula os commits ao card da tarefa, tendo assim uma rastreabilidade enorme.

1

Muito obrigado! Vou dar uma olhada no GitFlow e puxar discussão sobre o workflow da empresa novamente, agradeço demais a explicação.

1

Faz total sentido usar toda e qualquer ferramenta necessária. E por que não faria?
A não ser que sua empresa seja daquelas que são loucas por tudo live software livre a todo custo... Mas aí nem faria sentido ela desenvolver um software closed source.

1

É uma ferramenta que não é do conhecimento do gerente de equipe. Eu em meus estudos paralelos a empresa conheci a ferramenta mas só utilizei com repositórios no Github.

Quando introduzi a discussão para trazer o workflow para empresa travei no ponto dele dizer que não teria o controle sobre o projeto na Web.

Mas já to dando uma olhada no Gitlab que acho que casa perfeito.

1

Usar o GIT não só faz sentido como é ESSENCIAL ao meu ver por alguns motivos:

Segurança

Com o GIT (e GitHub) propriamente configurado, você consegue proteger um branch principal de forma que só o administrador pode autorizar uma modificação nele, seja um merge, seja um push comum, seja um forced push (o mais perigoso de todos, pois permite reescrever a história)

Histórico

Um repositório git bem utilizado, com títulos de commit bem padronizados (veja sobre Conventional Commits) permite criar um histórico do seu codigo que tem inúmeras utilidades, como por exemplo descobrir quem fez determinada alteração, quando e porquê. Ou até mesmo permite alguem entender toda a trajetoria daquele projeto, e estudar só pela leitura dos commits.

Colaboração

Um dos pontos mais fortes do git, é a colaboração. Você pode ter duas pessoas alterando o mesmo codigo, a mesma linha.

Em equipes pequenas, ou codigos pouco alterados, não é uma vantagem tão grande, mas se você tem duas ou três pessoas trabalhando ativamente no projeto, é indispensável (lidar com isso manualmente é tipo: "ei, salva o arquivo X pra eu alterar aqui!")

Enfim, há inúmeras vantagens, seja codigo aberto ou não. E que fique claro, o GitHub não é a mesma coisa que git. GitHub é um serviço, assim como o GitLab e outros. Você consegue usar o git sem um serviço como o GitHub, mas é extremamente recomendável principalmente para iniciantes.

Não se acanhe em insistir isso com seu chefe, um dia ele vai te agradecer.

1

Sem dúvidas o Git é essencial, para qualquer desenvolvimento que não seja um dever de casa!

Mesmo trabalhando no código do meu mestrado, que eu fiz completamente sozinho, e closed-source, o Git se mostrou indispensável.

O Git é uma ferramenta de versionamento de código, acima de tudo. Isso é essencial para te dar segurança de fazer qualquer modificação no seu código, sem correr o risco de quebrar algo que já está desenvolvido. Se deu problema, é só voltar para um commit anterior. Se você quer testar alguma modificação grande, é só criar uma branch nova. Se tiver mais pessoas trabalhando também, só criar branches separadas.

Eu já peguei código de amadores que estavam tentando montar uma empresa para fazer dinheiro de forma rápida, sem querer entender sobre o mercado de desenvolvimento. O desenvolvedor (que era idolatrado pelos colegas que não entendiam de desenvolvimento) seguia a filosofia de criar uma cópia do código toda vez que ele fazia algo e continuava funcionando. Era literalmente um main_v8f_threads_fun.py.
Ele desenvolveu o código inteiro em um arquivo só. Nunca haviam nem ouvido falar em testes unitários. Havia duplicação de código por todo lado. Código altamente acoplado, funções com milhares de linhas (ferindo o SRP), sem nomes expressivos para variáveis ou funções... O resultado é que nem ele conseguia fazer alterações no código que ele criou, e não queria que ninguém mais mexesse no código, pois tinha medo de parar de funcionar o que ele já tinha feito.

Sugeri o Git, expliquei as vantagens, ele não quiseram. Disseram que o foco era conseguir ter algo funcional o mais rápido possível, que esse tipo de coisa viria depois. Eles não entendiam o conceito de débito técnico que eu tentava explicar: "se a gente fizer o código bem feito, a gente vai ter algo funcional bem mais rápido"... Eles não confiavam nisso. Eu pulei fora dessa roubada em menos de um mês, e a empresa fechou pouco tempo depois.

Quando se trabalha com Git você nunca perderá o que foi feito (se você fizer commits frequentes). Se aparecer um Bug de uma versão pra outra você pode fazer um diff entre versões para encontrar o bug de forma mais rápida. Você pode refatorar seu código continuamente, pois se der merda, é só voltar pra algum commit anterior. Você não precisa ficar guardando código comentado no meio do seu código funcional, porque "pode ser útil de novo no futuro" - se precisar daquele código, ele estará no commit anterior ao que o removeu.

Enfim. Se sua empresa não quiser usar o Git, eu recomendo pular fora assim que aparecer outra oportunidade, pois ela não sobreviverá muito tempo. Não tem como desenvolver software de forma competitiva sem Git.

Sobre o Github (ou Bitbucket, ou outras alternativas), ele ajuda na colaboração, e ajuda a manter um backup do seu código em nuvem também. Se estiver trabalhando sozinho, ainda é bom para evitar ter que ficar copiando repositório para um HD externo para manter backups. Se houver mais do que um desenvolvedor no projeto, então essa solução na nuvem se torna essencial.

0

Faz todo sentido do mundo e quase todas as empresas que já trabalhei ou já usavam ou migraram para o GitHub.

Git é indispensável.

Eu vi algumas pessoas aqui falando sobre GitFlow, não caia nessa! A própria pessoa que inventou o gitflow não concorda mais com essa prática. Você precisa aprender sobre trunk-based development, é o jeito mais moderno para desenvolver aplicações nos dias atuais.

Saiba mais sobre como times de alta performance desenvolvem projetos hoje em dia aqui: https://www.youtube.com/watch?v=oNmcX6Gozg0

Se quiser aprender mais sobre programação web moderna, acesse o site: https://menthor.io/

-5
1

Entendo, o Git pode ser usado de forma unificada, achei que pelo nome era somente integrado ao GitHub. Enfim, vivendo e aprendendo.