Sobre o .NET, a vantagem sobre desktop Java é o menor tempo de desenvolvimento como falei nos posts anteriores do tópico.
5% foi uma estimativa generosa, na realidade acho que desktop linux não passa de 3%. Mas o número exato não é tão importante, o importante é que é uma fatia pequena do mercado, desktop linux é um nicho bem específico.
Mas obviamente nenhum software mora num vácuo, e todos tem requisitos então se parte dos requisitos for rodar GUI linux então faz com outra coisa. Até mesmo com .NET e Xamarin
Se não for, então digamos que cobrir a maior fatia possível do mercado mantendo um custo baixo é a melhor opção. Hoje em dia tu cobre isso no desktop com .NET + WinForms na minha opinião, como mencionei nos posts anteriores.
Então já que tudo é tão vago e flexível que “depende”, que tal desenvolver seu sistema todo em assembly? Só depende do desenvolvedor. Nem sei porque você esta discordando de mim já tudo depende
No mais, falo considerando gente proficiente nas tecnologias. Não precisa nem entrar no mérito de metricas de pontos de função / hora que existem, mas tenta criar um projeto desktop simples de “video locadora” da vida em JavaFX e com o setup que recomendei e vê qual é mais produtivo.
A faça me rir, ninguem aqui tem culpa se você demora uma eternidade pra desenvolver um programinha em JavaFX para locadora.
E’ vamos ver quem é mais produtivo, que disputar comigo, Eu programo em JavaFX e você em NET vamos ver quem termina primeiro e qual roda melhor em multi plataforma ?
Não to dizendo que eu demoro, nem com bobagenzinhas de fanboy. Multi-plataforma nem é requisito de OP é só preconceito seu cara, porque não gosta do “Window$”.
Eu to dizendo pra você que se duvida do que digo, não precisa acreditar, vá lá e teste por conta própria. As bibliotecas de componentes para WinForms são excelentes e não existe comparação com as existentes para Java.
Você tá com a cabeça cheia de teoria, na pratica Windows é portador de virus, travamento e NET em mult plataforma não presta.
Cansei de tanto desenvolver vacina pra Windows.
Programo em Java SE mais esse com a imagem abaixo foi desenvolvido em Django acho que gastei um mês para terminar ele, eu tenho o mesmo sistema em Java SE e gastei uns 6 meses para desenvolver é um sistema de fretamento.
O Negócio é que o pessoal daqui tem um amor eterno por Java, gosto do Java foi minha primeira linguagem mais acho que devemos procurar por algo mais produtivo e não se prender a uma única tecnologia para o resto da vida principalmente linguagem de programação.
Bom . não sei se foi a pessoas como a mim que você está se referindo. Mas já passei por Fortran, Assembly, C/C++ (ainda programo nelas), Cobol (programei bastante tempo tambem), Pascal e Object Pascal, Clipper, JavaScript, HTML esse nem conta né sem falar de Angular e outras coisinhas que apareceram por ai e Java.
Todas tem seus pontos fortes, e em Java pela organização, segurança, bibliotecas, comunidade envolvida, sem duvida pra mim Java tem seu destaque e sou bastante produtivo em Java e me atende desde micro até macro.
Você demorou seis meses pra desenvolver em Java, mas usou o que exatamente
Swing, JavaFX, SWT enfim ?
Troca Java por Python é o mesmo que trocar uma Ferrari por um fusquinha.
O problema é que quando alguém defende o Java, já associam que a pessoa nunca teve outra experiência, seja acadêmica, freela ou qualquer outra coisa.
Você precisa analisar os pontos, você era iniciante? O que você sabia sobre programação? Pra demorar 06 meses pra fazer uma aplicação, não é culpa da linguagem, desculpe… Você pode ter tido muito mais facilidade com o Django pq já entende de programação, depois que vc pega o jeito, o resto é resto.
Assim que eu entrei no fórum, postei o seguinte tópico “Por quê odeiam o Java?” Foi um tópico bastante movimentado, eu estava iniciando ainda. E uma das respostas foi: “Não há nenhuma linguagem melhor que a outra, há linguagens que vc tem mais afinidade, há algumas que fazem algo e há outras que não fazem, você só precisa escolher a que vai melhor te atender” e isso é a grande realidade.
Por mais que existam não só linguagens mas ferramentais de desenvolvimento que se apliquem melhor a uma coisa ou outra, dizer que não há linguagens piores, é patentemente falso, o problema é que quando o povo fala assim não define uma métrica.
Dai fica como o colega ali programador de Ferrari, que quando eu digo que WinForms com Telerik tem baita produtividade pra software desktop ele então retruca que não faz cross-platform.
Sejamos francos, existem motivos claros pelo qual hoje assembly por exemplo se limita a um nicho muito pequeno. Até desenvolvimento embarcado hoje em dia migrou para linguagens mais de alto nível. No geral a produtividade é uma das métricas mais relevantes pra esse tipo de mudança, já que menor produtividade = maior gasto com desenvolvimento.
Já ser cross-platform, possuir homo-iconicidade, ser código aberto ou fechado, ou seja qual for sua picuinha de estimação, no geral pode ou não ser relevante, e isso somente vai depender pura e exclusivamente dos requisitos do sistema.
Já ter maior produtividade é algo que sempre é relevante, e sim produtividade vai depender do nicho. Mas como falei, neste nicho o setup que comentei no começo é na minha opinião o mais produtivo.
E não faz mesmo.
E outra coisa, não confunda linguagem com frameworks, bibliotecas, apis e por ai vai,
Tem um trilhão de otimas soluções em java para dar produtividade para quem sabe programar
A exemplo de demanda para desenvolvimento desktop Windows, dizer que Windows Forms ou WPF não são mais produtivos que Swing ou JavaFx acaba sendo natural associar que nunca teve experiência real com a opção mais produtiva para o mesmo tipo de resultado.
O ciclo de vida do desenvolvimento é composto por fases e a implementação no todo não representa o maior tempo gasto.
Se vc já tinha um sistema, não o reimplementou do zero.
Se já estava em produção não implementou o banco de dados do zero.
Já havia um escopo trabalhado.
Já havia uma lógica trabalhada.
Logo, é natural que a implementação leve menos tempo.
Por exemplo, uma pessoa pode levar um ano para escrever um livro, realizar pesquisas, fazer orçamentos, etc, e um tradutor pode levar 30 dias para reescrever o livro em outro idioma.
Não acho que foi algo excepcional.
Levei cerca de 20 dias para fazer uma aplicação em javaFX e 4 dias para implementar em Android e isso diz apenas que reaproveitei muito do que já havia feito.
No fim:
Eu concordo com a ideia só acho problema igualar os termos “implementação” com “codificação”. Implementação é tudo que não é concepção, nem validão. Implementação é botar o projeto em pratica. E eu também no gráfico que você botou colocaria “desenvolvimento” como todo o processo, planejamento e análise inicial também e desenvolvimento
Enfim, picuinhas semânticas, mas que na minha opinião são relevantes. Por exemplo, quando digo que sou desenvolvedor de software, eu digo isso implicando que toco um projeto de começo a fim, tudo que tem ali no seu gráfico.
E mesmo se igualar “codificação” com “implementação”, tem coisas que são especificadas e projetadas de forma concomitante à codificação, por exemplo, isso acontece em todo projeto até mesmo no unicórnio do waterfall mais minucioso e perfeitamente implementado. Sempre há incógnitas na pratica. Por isso é impossível separar codificação de análise, exceto nos casos mais triviais
Nessa etapa, o sistema é codificado a partir da descrição computacional da fase de projeto em uma outra linguagem, onde se torna possível a compilação e geração do código-executável para o desenvolvimento software.
Fonte:
Isso é confuso, não se deve confundir as fases de um projeto com as fases do desenvolvimento.
Além disso se você é um faz tudo, pode até construir aplicações profissionais, mas o projeto em si não é desenvolvido de forma produtiva.
Um analista de sistemas não deve implementar.
Um gerente de projetos não deve implementar.
Um desenvolvedor não deve fazer a gestão do projeto. Se os papeis se misturam, não é por profissionalismo é por necessidade.
Neste sentido eu posso dizer que você como faz tudo, não é profissionalmente produtivo como desenvolvedor e o motivo é simples:
na natureza, a divisão do trabalho aumenta a produção. Ludwig Von Mises, Ação Humana.
Por exemplo, um médico que não “possui” secretária/atendente produz menos.
Cabe observar que pela lei dos rendimentos decrescentes, aumentar o número de colaboradores de forma arbitrária tende a diminuir os rendimentos e até mesmo a produtividade, conforme apontado na obra indicada e no livro The Mythical Man-Month.
Ao analisar o gráfico é perceptível que a implementação está fracionada entre etapas, num modelo iterativo e incremental, seja no SCRUM, seja no RUP.
Cabe esclarecer que a intenção é demonstrar o esforço demandado na implementação de forma e proporcional as demais atividades como exposto no gráfico, e não o momento ou a etapa em que está sendo aplicada e também visava demonstrar que o rapaz que passou 6 meses para construir uma aplicação em java de certa forma omitiu as demais etapas do desenvolvimento, já que não é só sentar e codificar como deu a entender, mesmo que ele tenha aplicado a metodologia de desenvolvimento conhecida como GO HORSE.
Normal, e as metodologias ágeis são focadas nisso, inclusive o PMBOK se coloca como manual de gerenciamento flexível para atender a mudanças, até Sun Tzu defendia a necessidade de adaptação a mudanças.
No mais, em relação a paradigmas, estudei com um cara “produtivo” em Python que odiava Java, percebi que ele programava melhor de forma procedural e não orientada a objeto, nestes termos, não vai ser produtivo nunca em linguagens orientadas a objetos.
Assim, entendo que há pessoas produtivas com C#, como entendo que há colegas produtivos com Java.
Entendo também que programadores ruins não são produtivos em linguagem alguma e que não há uma linguagem melhor que a outra, mas sim uma mais adequada que a outra e para linguagens no mesmo campo de atuação a fluência do programador é o fator determinante tendo em vista a grande quantidade de frameworks disponibilizados para ajudar no desenvolvimento.
Exato, tudo isso ai inclusive PMBOK e Rational são concepções arbitrárias e inventadas. A final, não foi Deus que desceu e deu uns mandamentos extra ai pra ajudar no desenvolvimento de software
Dito isso, o que eu falei não contradiz em nada o Rational, tanto é que até no titulo que você citou:
Que é exatamente o que eu falei, desenvolvimento é todo o processo desde a ideia, planejamento, execução, validação e não sei qual mais estágios tu queira botar ai. Tudo isso é desenvolvimento, não só a codificação como achei que você deu a entender antes.
Isso quando você esta seguindo esses padrões. Veja bem, os padrões de processão são criados para o desenvolvimento de software, e não o contrario, é possível criar um software sem seguir nada semelhante a RUP, PMBOK ou a metodologia que você quiser. Pode ficar um lixo ou não dai é outros 500.
Mas
Concordo mas o que eu falei vai além disso. Não é incognitas em relação a requisitos é incógnitas do tipo a biblioteca que foi atualizada para a versão 2.5 que é essencial pra implementar a “Funcionalidade B” agora deu conflito XYZ e bugou a “Funcionalidade A” e não da pra reverter sem perder “Funcionalidade B”.
Esse tipo de coisa por mais minuciosamente que seja projetado o sistema, mesmo fazendo diagrama dos algoritmos em si, é impossível de resolver exceto na etapa de codificação. Por isso codificação envolve muitas vezes análise.
Discordo plenamente Ninguém considera brainfuck uma boa linguagem. É como falei sem definir a métrica vale tudo, até dizer que “brainfuck o povo usa muito sim, é super produtivo em ser uma linguagem de entretenimento”.
Claro há linguagens melhores que as outras em algumas áreas, o que não implica que “todas sejam iguais” ou non-senses do tipo. Há linguagens que são piores que as outras em quase todas as áreas
Já quando falamos de ferramentas usuais e estabelecidas no mercado até concordo, no geral, as ferramentas que ganham destaque é porque tem algum ponto forte.
Bom, eu acho que em relação ao topico em questão, que é criação de software desktop não da pra comparar. Já fiz software desktop com JavaFX, e com C# + Telerik e DevExpress e a segunda opção da um banho.
No geral no generico, num vacuo irrelevante pro mundo real vale tudo, até dizer que o ideal é fazer tudo em LISP porque é uma linguagem mais pura, tudo é homoiconico, e simples, e outras coisas que não visam atender requisitos reais de aplicações reais pois estamos falando em termos tão mas tão gerais que mal tem a ver com a realidade.
Acho que deu pano pra manga, enfim… minha conclusão:
Como falei, ninguém precisa acreditar no que um desconhecido na internet fala, faça o teste. Mesmo se não manja de C# pega um VS2019, versão trial do DevExpress ou Telerik e tenta faz um projeto pra tu ver como é produtivo pra criar software desktop.
Pro assunto em questão é isso que interessa, você é ou não é mais produtivo com o que sugeri? Se não for, beleza. Já sabe que não presta. Porém pra muitas pessoas, que dominam os 2 ambientes (linguagens e todo o ferramental em volta), o setup que falei é muito produtivo.