Programadores ótimos X médios - Último artigo do Joel Spolsky

Acho que vocês estão esquecendo só de uma coisa: “relativizar”.

Por exemplo na Índia, existem tantos programadores, que a regra lá é essa. Os projetos são sempre inchados, as pessoas são super especializadas, etc. Analista fazem análise… e programadores programam. Sem choro nem vela. Parece que nos países de primeiro mundo, também existe uma divisão clara entre programadores e analistas, como descreve a reportagem do Guilherme sobre a experiência que ele teve na Alemanha.

Para a maioria dos problemas de TI de hoje a complexidade é pequena, mas a dimensão pode ser bastante grande. Daí a idéia de fábrica de software, a última palavra em “comodities” e o CMM 5.

Mas, não existe nenhum processo que faça uma pessoa medíocre vencer uma partida de xadrez com o Kasparov. Assim como existem problemas na informática realmente difícies… (alguns exemplos: BI, otimizações, CG) Em geral, quanto mais inteligente um programa é mais difícil é escrevê-lo, não só pelo problema em si, mas pela dificuldade em encontrar pessoas capacitadas.

Neste aspecto acho que o brasileiro tem uma vantagem. Nós somos acostumados a fazer de tudo. A ser analista programador dba e admin. Temos uma versatilidade e pensamos que isto é a coisa mais normal do mundo. NÃO É! E acho que precisamos encontrar nosso próprio caminho e não seguir o caminho do CMM 5 + mão-de-obra escrava. É certo que a produtividade média do brasileiro é bem maior que a do indiano (considerando que temos uma política de profissional (CLT) bem paternalista). Mas não devemos simplesmente desconsiderar o CMM; precisamos entender onde se aplica e por que e daí criarmos a alternativa nossa.

Seu amigo é o Fred Brooks? :mrgreen:
Pra quem não entendeu, a frase é dos ensaios reeditados neste livro:

Onde tambéme stá o artigo original que diz: No Silver Bullets.

¬¬

Chega a doer (…)
Quer dizer que eu sou um louco varrido, fora da realidade, alucinado. :frowning:

Eu não sou o dono da verdade, se eu estou errado o que eu posso fazer?? (Sem machucar blz!!)

Enquanto ao ler é programar mais … isso serve para todos :).

Ponto positivo:

Puxa vida, isso deve estar sempre bem claro … acho até que eu exagerei nas minhas palavras mas concerteza o trabalho em grupo é a melhor solução. E engana-se quem pensa que so programador resolve o problema, e preciso alguem que sabe inclusive de administração.

Voltando ao tema principal do topico eu gostaria de dizer o seguinte. O Senhor J mencionou um fato que N Teorias Administrativas ja provaram, vocês podem perceber que a figura do dito GENINHO sumiu do mapa, nem se fazem mais filmes dos ditos cujo :). Ele estava certissimo falando de trabalho em equipe, eu quiz complementar que somente programadores não resolvem e nem têm tempo suficiente para resolver tudo de um projeto. Eu não culpo ninguem afinal voces se formaram para ser cientistas da programação e estarem sempre em busca de melhoria nos codigos.

Pena … que pelo que li, a grande maioria so quer entregar o projeto, se funcionou otimo. Lembre-se que muita das vezes o cliente nem sabe mecher com computador direito, muita das vezes aquilo tudo é tao diferente que está otimo. O que eu quiz pregar é que precisamos nos unir (um gerente cuidaria bem disso), e analises bem feitas com uma equipe de programação unida vai proporcionar muito mais aos seus clientes. Esse é o seu diferencial. Buscamos ser diferentes, a mesmisse seus concorrentes também pode fazer!! Quantos aqui não fazem a mesma coisa que voce?? Quantos aqui programam java??

Conto.

Era uma vez um Senhor chamado David, um “João ninguem” que está em apuros financeiramente. Resolveu virar camelo, e gastou seus ultimos tostoes montando sua humilde barraca, tirou o da boca da familia o sustento do dia :(. O cara simplismente inovou, buscou não somente entregar ao seus clientes sua mercadorias, mas tambem uma forma de faze-lo querer sempre os seus produtos. Era com muita satisfação que ele incrementou suas vendas com um toque de simpatia, alegria. Esse notorio fato fez dele uma figura muito conhecida é hoje sua banca vende ate pela internet. Ele é consagrado pelas grandes multinacionais e sempre e convidado para dar palestras motivacionais. O cara não quiz somente vender, ele aplicou a tudo isso formas, estrategias, riscos e muitos outros requisitos que formam muito bem controlados.
(Recordo que a historia era mais ou menos assim)
http://www.bancadodavid.com/

Um Zé bombinha uma vez me disse. Eu não quero mais sair de porta em porta fazendo esse meu serviço, sinto que preciso ir mais alem. Não quero mais ser um zé bombinha, eu sou impulsivo, aplico preços pela direção do vento, forneço um serviço tao comum que se meus clientes PENSAREM BEM eles podem comprar o remedio e misturar na bomba e fazerem o serviço eles mesmo. Através desse pensamento (E é pensando que evoluimos) o senhor zé resolveu aprimorar mais. Contratou um profissional para realizar o serviço de jardinagem enquanto ele fazia o serviço do zé bombinha. Depois ele contratou um profissional para realizar serviços mais tecnicos como esterelização de ambientes. Hoje o ze bombinha ganha muito muito mais fazendo o mesmo serviço :).

(…)

Etica profissional é uma coisa que precisamos sempre ter em mente.
É claro que eu não ia escrever isso ao pé da letra né. Interprete e me diga se não é a mesma coisa? Detalhe … a etica profissional envolve 3 pontos fundamentais. Eu so mencionei o ponto de vista tecnico (conhecimento tecnico) porque era o mais inerente ao caso.

É muito fácil juntar uma galera do mesmo lado e pisar em cima. Precisamos sair dessa inercia e começar a olhar para os lados. Buscar … buscar …o quê?? porque?? será??

Obs: Não tente pegar o topico pela metade, leia tudo antes de PUM PAH TIBUM, SPLAT.

Onde? Aqui, Aqui ou Aqui?!? :shock:

Vamos recapitular … ninguém disse que não existe analista que presta, existe (posso ser só eu que nunca vi um)!

Assim como existe a necessidade de análise do problema … mas essa análise não pode e não deve ser feita por alguém apenas com esse fim já que ele não poderá adicionar nada as próximas etapas ESSENCIAIS ao resultado final … tem que have um balanço das forças e compreensão que só existe resultado final com código/

Pois é isso que fazemos no forum, ninguém aqui está te batendo. Pergunta pro Richard o que é discutir sobre CMM :wink:

Acho que já temos argumentos suficientes pra ler, reler e pensar … cada um segue sua linha mesmo de qualquer jeito.

Só quer entregar o projeto?

Acho que você ainda não entendeu. Ninguém aqui está dizendo que é só entregar e pronto, o que quase todo mundo está dizendo é que análise não é uma coisa que deva acontecer uma vez e pronto. Você não pode simplesmente pegar o cliente disse uma vez, montar uma análize perfeita e entregar pros programadores fazerem um sistema perfeito. Isso simplesmente não existe.

Não devem existir “fases” no desenvolvimento, todo deve ocorrer junto o tempo todo. Nós devemos estar o tempo todo em contato com o cliente, devemos estar o tempo todo corrigindo falhas ou adicionando novas idéias a análize, devemos tentar melhorar tudo o tempo todo!

Você entrega uma análise “perfeita” na primeira tentativa? Eu duvido.

Na boa, quem precisa sair da inécia é você que ainda acredita em “ideais” que são da época do nascimento da computação e já foram mais do que comprovados como errados. Dê uma olhada em métodos ágeis, como Extreme Programming e tente ter um relacionamento mais respeitoso com os “programadores”, você vai ver como isso pode ajudar no seu trabalho.

Onde? Aqui, Aqui ou Aqui?!? :shock:

[/quote]

Ih, contou o segredo deles! :lol:

Na verdade essas ideias nao nasceram com a computaçao. O papel de analsita foi criado para tentar analisar o problema antes de sair codificando como um louco, so que no decorrer ele foi se especializando demais, a ponto de acreditar que o codigo eh algo futil, documentaçao e o que vale. Eu ouvi isso aos doze anos de um analista.

Dez anos depois, as cosias mudaram. Muitas empresas simplesmente ignoram a divisao ee stao voltando para uma versao do metodo nike (lembra disso, linhares?) “Just do It”, so que eles exigem que voce faça um pouco diferente: documente e especifique como um doido, depois programe. O que o cliente quer e o de menos.

Quem le bastante sabe que em 99% dos livros de grandes autores nao-ligado a RUP ou UP ou outra metodologia engessada (e mesmo nos mais recentes destas) as pessoas pregam os valores ageis. E interessante que mesmo livros muito antigos ja faziam isso antes de se ter um termo “agil” para invocar.

Essas pessoas sao os grandes pensadores do software, e seguem estes principios. O Joel e um caso excelente, ele ja trabalhou na Microsoft e em lugares onde se pensa da maneira antiga (quem acompanha lsitas internacionais de agile sabe que a MSFT esta mudando de perfil, dando MUITO apoio a agilidade, inclusive com seminarios online gratuitos sobre o tema) e quando abriu sua emrpesa, ele colocou o que acredita nela. Convido a dar uma olhada nos artigos de gerencia dele.

Existe sim um analista. A principal tarefa dele e ajudar ao cliente no que ele quer, e em muitos casos ser o “cliente interno” (um proxy pro cliente). Ele escreve requisitos, responde pergutnas e avalia o que e produzido.

Dai para a frente, tudo e projeto.

Trunk, o que um analsita faz exatamente para voce que um programador nao faz? O que capacita este analista a fazer isso?

Pois é, sabe que esse ainda é o pior problema que eu tenho pra explicar XP, todo mundo sempre diz que XP prega “faça e pronto” (como o pessoal falou lá no Java-BR). Mas a galera tá começando a entender, já consegui converter um pessoal daqui da universidade a trabalhar com testes unitários e as coisas estão indo bem melhor do que eu imaginava, até mesmo pra mim :mrgreen:

Só falta convencer os professores que seria ótimo a cadeira de “Análise e projeto de sistemas” ser feita com XP ou pelo menos falasse tanto de XP quanto eles falam de RUP 8)

Ta bom, eu sou um lunatico mesmo :). Pelo menos tem alguns que embora acanhados seguem a mesma ideia.

[quote=“smota”] Vamos recapitular … ninguém disse que não existe analista que presta, existe (posso ser só eu que nunca vi um)!
[/quote]
Acho que descobri o porque!!

Eu pensei porque esses caras acham isso tão atrasado. Me lembrei de alguns fatos e fui fazer uma garimpagem. Acessei o site do mec (www.mec.gob.br) para saber quantos cursos oficializados de sistema de informação existem. Ate hoje foram devolvidos 28 universidades. Tirando as que usam o nome mas que na verdade é administração não passa muito de 15. Algumas que eu acessei os dados comprovei que nem chegaram a formar turmas.

Está explicado porque programador acaba tendo de fazer tudo mesmo!

Ai veio outro estalo e lembrei de uma reportagem feita pelo programa Fantastico um tempo atraz. Estavam eles falando mais uma vez sobre o desemprego e estavam eles mostrando uma parede em São Paulo onde é afixado vagas de emprego. Logo pela manha fica um monte de gente nessa parede verificando as vagas. Por sorte do destino pegaram um cara que estava tentado logo uma vaga de analista. :slight_smile: Acompanharam o cara e talvez por estar sendo acompanhado por uma camera o contratante acabou cedendo uma chance para o individuo. Coisa em, ai frusta mesmo … olha onde voces vão procurar analistas :).

Ai, ja ouvi uma coisa que acho meio ficção que agora até faz um certo sentindo levando em conta o que o amigo rodrigousp disse.
Em relação ao que é proposta la fora gasta mais ou menos dois anos para chegar no brasil. Se for verdade ta explicado tambem! (leia o ultimo tipo do rodrigo).

AHHHhhhh, Mauricio Linhares …
Musiquinha do Detonaltas para voce:
(…)É a dúvida entre o que é realmente bom e o que é realmente ruim
Porque o certo pra você pode não fazer o mesmo efeito em mim
E se tratando de habitantes do mesmo planeta isso pode ser fatal
É a escolha entre seguir com o bem sem saber direito o que é o mal

Chega desse assunto!! \0/ <0> .

Detonautas? Blergh! :oops:

Mas dê uma olhada em XP e métodos ágeis, os livros são pequenos, se não ajudar também não atrapalha :thumbup:

[quote=bejeto]

Discordo!
Se ele tem produtividade igual a qualquer um, é porque ele é um bom programador.
Então, na teoria, ele terá facilidade de conseguir emprego, pois é um bom profissional, só precisa achar alguem que queira pagar o valor dele ao invés de contratar outro estagiário e lhe ensinar tudo de novo.[/quote]

O problema é que hoje em dia o estagiário serve basicamente de bode espiatório, o contrato pode ser desfeito a qualquer instante, não precisa ter carteira assinada, quando demitido, o empresário não precisa pagar fundo de garantia, e mais uma série de coisas…

Bom, se este gerente for tão brasileiro como eu e qualquer um aqui, ele vai aprender a mecher na raça, assim como muitos outros milhões de brasileiros!
:wink:

Sim, no país de Alice no Páis das Maravilhas isso é perfeitamente possível!

Trunks, o fato é q isso varia muito de equipe para equipe. Se isso fosse real, e se as pessoas realmente trabalhassem em equipe, não haveriam tantos softwares ruins por ai!
Eu digo isso pq trabalhei em uma equipe, e tem algum pedaços de software desenvolvidos por alguns integrantes que eu fico resolvendo bugs nestes códigos até hoje. Enquanto alguns programadores fizeram um bom serviço, um outro foi lá e fez de qualquer jeito.

Por isso Trunks, é que eu concordo plenamente com o que foi escrito no artigo. É melhor 1 programador bom, do que 3 medianos.

Eu ainda vou além, sou mais 4 programadores bons, do que 6 programadores bons e 1 médio! (a não ser que este programador mediano fosse esforçado e autocrítico!!!)

[quote=Trunkset]
Esse é o seu diferencial. Buscamos ser diferentes, a mesmisse seus concorrentes também pode fazer!! [/quote]
humm… é de programadores assim que eu gostaria de trabalhar! É exatamente estes que o autor do artigo se referiu como o programdor bom. E este tipo de perfil que para ele vale mais a pena do que 3 programadores medianos!

Humm… Programar em java, qualquer um programa, mas poucos programam que nem eu! Apesar de inexperiente, sou sempre autocrítico, e estou sempre de pouco em pouco tentando fazer melho o que faço!

Se todos os programadores fossem iguais, não precisariamos mais de programadores, bastaria um idiota que ficasse dando control C + control V para ficar copiando código de um lado para outro!

Abraços!
Thiago Senna

uma coisa é certa…

O artigo de otimos x bons eu achei meio sem sentido. É chover no molhado discutir isso…

Já o artigo do Phillip é realmente muito interessante !!!

Money, Moral, Burnout

Dos três eu achei Burnout o mais difícil de resolver.

Mas um problema mais foda ainda, que o cara não fala é:

Freedom: Poder fazer as coisas da sua maneira, sem ter um gerente centralizador e pentelho no seu ouvido a cada nova linha de código que vc escreve.

[quote=bejeto]uma coisa é certa…

Nem sempre, “Trazer novas pessoas pra um projeto atrasado, só faz com que ele atrase mais ainda”.

[quote=saoj]Freedom: Poder fazer as coisas da sua maneira, sem ter um gerente centralizador e pentelho no seu ouvido a cada nova linha de código que vc escreve.
[/quote]

Se cada um fizer “à sua maneira”, não estão trabalhando em grupo.

[quote=“Mauricio”]
Se cada um fizer “à sua maneira”, não estão trabalhando em grupo.[/quote]

Cada pessoa do grupo pode fazer a sua parte a sua maneira. Não que não devam discutir sadiamente as questões, mas eu decido como eu vou fazer a minha parte.

Se as minhas decisões não estão de acordo com a filosofia ou metodologia da empresa, então algo está errado. Melhor arranjar outro emprego…

[quote=saoj]Se as minhas decisões não estão de acordo com a filosofia ou metodologia da empresa, então algo está errado. Melhor arranjar outro emprego…
[/quote]

Aí sim :mrgreen:

Mas eu ainda acho que existem muitas coisas que devem ser acordadas, como ferramentas de build, servidores de deployment, controles de versão, padrão de documentação, não acho que isso deva ficar a cargo de cada um não.

Por isso que eu gosto do Maven, já padroniza um bocado :lol:

Tudo pode ser feito a maneira que o programador se sinta a vontade.
Acho errado impor usar uma ferramenta para build específica sendo q o cara pode produzir o mesmo resultado com a sua própria.

O correto em uma empresa grande, é se padronizar, para ser mais fácil dar manutenção.

Cada um fazer a sua maneira pode ser bem complicado se não houver acordos. Isso cheira a macorronada com churrasco.

Tudo isso que vc falou eu concordo que tem que padronizar. Coisas que não concordo e que já briguei com a diretoria:

:arrow: IDE (gosto muito do Jext)
:arrow: Cliente CVS (gosto muito do Tortoise)