thegoodfellas/blogset-br huggingface dataset:
programadores e Como identificar bons programadores.O que voce achou dessa serie de artigos sobre as caracteristicas mais importantes a serem procuradas num programador? Gostaria de citar alguma outra caracteristica? Comente.—* ^ Michaelis - Moderno Dicionario da Lingua Portuguesa. "Autodidatismo" Referencias: Joel Spolsky. "Smart and Get Things Done"
bem sofisticado para a epoca, podendo ate continuar um download interrompido, se necessario. Seu desenvolvimento ocupou alguns meses de trabalho continuo de um desenvolvedor e levou mais de um ano ate que a primeira versao fosse testada em um cliente real. No primeiro teste real, bam! O cliente usava um proxy de internet com um protocolo de autenticacao que nao havia sido previsto. O desenvolvedor dessa solucao nao estava mais na empresa e o problema caiu no meu colo.Ao pesquisar uma solucao pronta que resolvesse essa questao da autenticacao, descobri uma biblioteca que nao apenas poderia cuidar desse problema especifico, mas tambem poderia substituir praticamente todo o trabalho do aplicativo de atualizacao! Entao, propus "jogar fora" o trabalho realizado ate aquele momento e substitui-lo por um novo projeto baseado numa biblioteca de terceiros. Para encurtar a historia, em dois dias eu tinha um prototipo funcional da nova solucao e, em duas semanas, sua versao funcional. Ate onde sei, essa solucao, que ocupou uma pequena fracao do tempo de desenvolvimento da primeira, usando uma biblioteca de terceiros, atualiza milhares de aplicativos ate hoje.Quanto dessa solucao foi resolvida com meu codigo? Talvez cinco ou dez por cento. O codigo principal nao era meu e nao tenho receio algum de admitir isso. Tive sucesso gracas ao trabalho de outros desenvolvedores que tornaram sua solucao disponivel a terceiros. Se essa abordagem tivesse sido utilizada originalmente, teria-se poupado muito tempo e dinheiro.Qual a licao aprendida aqui? Nao defendo que voce utilize uma biblioteca, componente ou framework de terceiros para resolver todo tipo de problema. Da mesma forma, nao defendo que faca o contrario, usando seu proprio codigo para resolver todo tipo de problema. A grande licao e:Aprenda a escrever bom codigo e faca isso quando necessario; mas aprenda tambem a escrever pouco ou nenhum codigo, quando esta a sua disposicao uma solucao adequada, confiavel e pronta para o uso.Pra fechar, segue a traducao do tweet que me serviu de inspiracao para escrever esse artigo:"O codigo que voce escreve te torna um programador. O codigo que voce deleta te torna um bom programador. O codigo que voce nao tem que escrever te torna um grande programador". (Mario Fusco)Que achou desse artigo? Ja teve alguma experiencia relacionada? Deixe seu comentario.— Creditos pela foto do bicho-preguica a Guilherme Jofili.
de que o foco nos usuarios e importante, mas deve ser feito de forma a atender aos interesses de quem paga.Apaixonando os usuariosOutra coisa muito positiva que conseguimos por focar nos usuarios, foi a propaganda gerada por eles, o popular boca-a-boca. Como seu trabalho se tornou muito mais facil, por conta propria, eles recomendavam nosso software para seus conhecidos em outras empresas. Esses, por sua vez, recomendavam nosso software para seus gestores.Voce quer que seus usuarios facam propaganda gratuita do seu software? Apaixone-os pelo seu software.Mas as funcionalidades tambem sao importantes!Sim, claro, as funcionalidades sao importantes. Mas existem as funcionalidades imprescindiveis e as dispensaveis. Partindo do principio que voce sempre vai atender as necessidades imprescindiveis dos seus usuarios, valorize menos as funcionalidades que so servem para encher linguica e foque em proporcionar aos seus usuarios uma melhor experiencia ao usar seu software.O que achou desse artigo? Deixe seu comentario.—* ^ Destaquei nesse artigo apenas questoes diretamente relacionadas a software, mas tenha em mente que aspectos comerciais e de marketing tambem estiveram envolvidos.Para saber mais sobre User experience (Experiencia do usuario) aplicada a Web, veja o livro The Elements of User Experience de Jesse James Garret ou veja o diagrama que deu origem ao livro.
Deixe-o a vontade para responder observe se ele demonstra que tinha genuino interesse pelo que estava fazendo. Programadores apaixonados nao fazem um bom trabalho porque sao pagos para isso, o fazem porque tem prazer nisso. Sao essas pessoas que voce deve procurar. Procure pelo brilho nos seus olhos.Ao mesmo tempo, essa conversa mais detalhada permitira que ele demonstre a variedade e nivel do seu conhecimento tecnico, que devera estar alinhado com o que foi informado no mapeamento de conhecimento.Me mostre o codigo: Como diria Linus Torvalds: Show me the code[2]. Nessa parte final, me certifico de que o candidato sabe nao apenas falar sobre programacao, mas tambem sabe pratica-la. Para isso, solicito que ele resolva alguns problemas simples de programacao na sua linguagem predileta, usando um computador com um editor de textos simples (nao sera preciso compilar o codigo). Os problemas podem ser algo como:Crie uma funcao que receba uma string e retorne uma copia dela com o primeiro caracter em maiusculo;Crie uma funcao que receba um array e inverta a ordem dos seus elementos;Crie uma funcao que retorne a quantidade de arquivos existentes num diretorio (incluindo seus subdiretorios).O primeiro problema e realmente muito facil e espera-se que todos sejam capazes de resolve-lo em poucos segundos. O segundo, dependendo da linguagem, envolve algum conhecimento sobre ponteiros e o terceiro sobre recursao. O codigo de cada solucao dara margem para alguma pergunta ou sugestao e isso deve ser explorado pelo avaliador para que o candidato se mostre capaz de explicar o que fez. Consideracoes de performance e consumo de memoria podem ser levantadas. O candidato deve ter a chance de melhorar seu algoritmo, se assim desejar. Essa troca de ideias ajuda o avaliador e perceber como o candidato raciocina e como reage ao receber uma critica construtiva sobre seu codigo. Apenas lembre de esperar ate que o candidato diga que terminou uma solucao, antes de falar qualquer coisa. O tempo que ele levar para resolver cada problema e a quantidade (ou ausencia) de bugs tambem sao fatores de avaliacao.Consideracoes finaisSe voce esta em busca de bons profissionais, lembre-se de duas coisas: (1) eles sao a excecao e (2) sua empresa nao e a unica opcao deles. Lembrar disso o ajudara a tratar seus candidatos com respeito, desde o primeiro contato. Isso vai desde a forma como voce responde aos e-mails, passando pela flexibilidade de horarios das entrevistas e indo ate a sua pontualidade ao recebe-lo para uma entrevista presencial. Trate os candidatos como voce gostaria de ser tratado, sempre.O que voce acha da forma como as empresas tentam identificar bons programadores? Tem alguma experiencia para contar? Algo a dizer sobre esse artigo? Deixe seu comentario!—Foto: Vladik Myagkostupov no show 'Dralion' do Cirque Du Soleil. Creditos a Sandra Mu/Getty Images AsiaPac. Referencias: [1] ^ Joel Spolsky. "Smart and Get Things Done" [2] ^ Linus Torvalds. "Talk is cheap. Show me the code"
No final de 2009 comecei a prestar muita atencao na area de desenvolvimento de software para dispositivos moveis. Me pareceu um mercado muito promissor, entao comecei a estudar um pouco de desenvolvimento para iPhone (nao havia iPad ainda). Em pouco tempo, comecei a dar uma olhada tambem no Android. Minha experiencia com C me ajudou a tolerar um pouco da esquisitice do Objective-C. E minha experiencia com Java, tornou as coisas bem faceis ao estudar o SDK do Android. Logo, comecei a olhar tambem algumas alternativas que me permitissem desenvolver ao mesmo tempo para iOS (como veio a se chamar o antigo iPhone OS) e para Android. O Android estava crescendo muito e me parecia razoavel investir nas duas plataformas. Entao, fui apresentado ao Appcelerator Titanium Mobile, ainda nos seus estagios iniciais. O Titanium permite criar apps nativas para iOS e Android usando uma unica base de codigo, em JavaScript. Codificar em JavaScript me pareceu muito melhor do que usar ObjC ou Java. E a ideia de nao precisar escrever dois aplicativos para ter um pe em cada plataforma, foi um otimo argumento para estudar esse tal de Titanium.No final do ano passado, abri mao de um emprego de muitos anos para aproveitar uma oportunidade na area de desenvolvimento para dispositivos moveis. E o Titanium e atualmente a ferramenta que mais uso dentre as que estao as minha "maleta". Por ser uma ferramenta ainda pouco conhecida no Brasil, tive o prazer de criar o primeiro grupo de discussao brasileiro focado em Titanium Mobile. Agora, ja com alguma bagagem de Titanium, tenho o prazer de lhes apresentar o Mais que Titanium, o primeiro blog nacional focado no desenvolvimento de aplicativos moveis usando a plataforma Titanium Mobile. De uma olhada nele e, se voce gostar, aguarde os proximos artigos que publicarei por la.Se voce gosta do "Mais que bom codigo", nao se preocupe, ele continuara vivo e com o mesmo perfil. Artigos que nao tratarem de tecnologias ou nichos especificos continuarao sendo publicados aqui. Ja os artigos que tratarem da area mobile, serao publicados no Mais que Titanium.Um abraco a todos os leitores e ate o proximo artigo (aqui ou la)!—Creditos pela foto a Zig Koch do Natureza Brasileira. Todo mundo sabe que mil reais hoje compram menos do que seria possivel um ano atras. Isso acontece por causa da inflacao. Para fazer o dinheiro nao perder seu valor e preciso investi-lo. Conhecimento e como dinheiro. Seu valor tambem diminui com o passar do tempo. E quando se trata de tecnologia, a inflacao e ainda maior, fazendo com que qualquer conhecimento tecnologico que se possua hoje perca drasticamente o seu valor em alguns anos. Se voce nao quer se tornar intelectualmente pobre, precisa colocar seu cerebro para trabalhar. Em outras palavras, precisa investir em conhecimento.Adquira o habito de investirMuitas pessoas so investem quando aparece um dinheiro extra. Similarmente, muitos programadores so aprendem algo novo quando o que ja sabem esta obsoleto. Em ambos os casos, o investimento, de qualquer forma, e valido. Mas, melhor que investimentos grandes e esporadicos sao os investimentos pequenos e
regulares. Faca do investimento em conhecimento um habito.Nao ponha todos os ovos no mesmo cestoSalvo raras excecoes[1], os investidores concordam com a bem conhecida frase acima. O motivo e simples: se todos os ovos estiverem no mesmo cesto e algo muito ruim acontecer ao cesto, todos os ovos serao perdidos. Essa e uma forma simples de ensinar a importancia da diversificacao.Com o conhecimento tecnologico nao e diferente. Seus maravilhosos conhecimentos na tecnologia que paga seu salario hoje lamento dizer um dia serao desprezados pela maior parte do mercado. Investir todas as suas energias nessa unica tecnologia e como colocar todos os ovos num mesmo cesto.Para diminuir seus riscos, diversifique. Aprenda os pontos positivos e negativos da tecnologia que voce usa atualmente, mas nao pare por ai. Aprenda novas tecnologias. Quanto maior o numero de tecnologias com as quais voce for capaz de trabalhar, melhores serao as suas chances de se adaptar as rapidas mudancas que acontecem na nossa area.Nao evite o risco, administre-oSe voce investir apenas em poupanca, seus riscos de perder dinheiro serao pequenos. Porem, basicamente, voce apenas mantera o poder aquisitivo do capital aplicado. Por outro lado, se voce investir apenas em acoes de small caps (empresas de menor porte), as possibilidades de alto lucro serao grandes, mas as de perda total tambem.Com um pouco de bom senso, percebe-se que nenhum dos dois extremos e so bom ou so ruim. E ai que entra a administracao do risco. Muitos investidores dividem seus investimentos entre os de risco pequeno, moderado e alto. Se os investimentos de alto risco perderem completamente seu valor, o investidor nao estara falido. Se, por outro lado, eles dobrarem ou triplicarem de valor, o investidor tera um bom lucro, ainda que nao fique rico por isso. Riscos nao sao ruins, desde que sejam controlados.De forma similar, podemos dizer que as tecnologias atualmente populares e com significativa demanda de oportunidades de trabalho sao os investimentos conservadores enquanto as tecnologias emergentes, mas com bom potencial de crescimento sao os investimento arriscados. Nao e preciso escolher apenas uma das alternativas para investir; e possivel investir em ambas, correndo riscos controlados, sem colocar todos os ovos no mesmo cesto.Compre na baixa, venda na altaPouco depois de a crise financeira estourar nos EUA em 2008, cogitei a possibilidade de comprar acoes de uma small cap que havia ficado em serias dificuldades financeiras. O valor de cada acao estava menos de R$0,10. Era um investimento de alto risco, visto que a empresa poderia falir em pouco tempo. Mas o potencial de ganho era grande, desde que os rumores de que um grande grupo compraria essa empresa e a resgataria da ruina financeira se concretizassem. Bem, eu nao quis correr o risco de perder dinheiro algum com essa acao. E fiz mal. No inicio de 2010 cada acao dessa mesma empresa valia mais de R$25! Se eu tivesse usado mil reais para comprar acoes dessa empresa quando elas valiam R$0,10 e tivesse vendido essas mesmas acoes quando elas valiam R$25, os mil reais teriam se transformado em nada menos que duzentos e cinquenta mil
reais! Essa historia me ensinou a importancia de comprar na baixa e vender na alta.Quando se trata de tecnologia, acontece algo muito parecido. Aprender uma tecnologia antes que ela se torne popular e arriscado. Pode ser que nunca surja demanda para vender o conhecimento obtido. Por outro lado, se essa nova tecnologia se tornar muito popular e houver poucos profissionais aptos para utiliza-la, esses poucos profissionais serao muito bem pagos para vender seu conhecimento.Ajuste seus investimentosO mercado financeiro e muito dinamico. Atentados terroristas, guerras ou mudancas de governo - para citar apenas alguns fatores - geram movimentos bruscos de alta e baixa. Por isso, os investidores precisam estar sempre atentos. Eles podem ate se apegar ao seu capital, mas nunca a forma como ele e investido. Nesse mercado, e preciso ser capaz de abrir mao de um investimento que deixou de ser promissor para aplicar em outro com melhores perspectivas.Nao e diferente na area de tecnologia. Tecnologias nascem e morrem o tempo todo. Outras ficam eternamente moribundas. Nao se pode contar com a sorte de ter escolhido uma ou outra tecnologia com um futuro promissor. E preciso estar sempre atento as mudancas no mercado e as consequentes oportunidades que surgem. Se a tecnologia com a qual voce trabalha hoje esta a cada ano menos solicitada pelo mercado, nao reze para o barco nao afundar, pule. E se um novo mercado ou uma nova tecnologia tem se mostrado cada vez mais promissor, o que voce esta esperando para colocar pelo menos um pe nele?Agora, gostaria de saber de voce: em que voce esta investindo?— Referencias: [1] ^ Max Gunther. "Os axiomas de Zurique". Resenha disponivel aqui. Andrew Hunt and David Thomas. "The Pragmatic Programmer: From Journeyman to Master". Versao em portugues aqui.
Em 2005, os formandos da Stanford University - uma das melhores universidades do mundo - foram brindados com um discurso memoravel de nada menos que Steve Jobs. Seu discurso inteiro merece ser assistido[1], mas quero citar apenas uma pequena frase dele:"A unica maneira de fazer um trabalho brilhante e amar o que voce faz" [1]Jobs contou que os eventos que culminaram na sua demissao da Apple nao afetaram seu sentimento para com o seu trabalho. Ele continuou apaixonado pelo que fazia. Essa paixao o motivou a seguir em frente. Ele entao criou a NeXT, que produziu a tecnologia que viria a se tomar o coracao do Mac OS, e iniciou a Pixar, que produziu o primeiro longa-metragem totalmente feito por computacao grafica - o filme Toy Story. Em uma incrivel virada de eventos, Jobs reassumiu a lideranca da Apple.E uma historia impressionante, e meu objetivo ao utiliza-la e embasar a afirmacao de que talento nao e nada sem paixao.Apaixonados vao mais longePessoas talentosas, mas sem paixao, nao vao muito longe. Nenhuma motivacao externa (salario, estabilidade, status etc) e capaz de produzir efeitos equivalentes a maior de todas as motivacoes internas - a paixao. Isso e verdade tanto para um pedreiro como para um programador.Programadores talentosos e apaixonados nao precisam de estimulo para fazer um trabalho de qualidade; eles o fazem porque sentem prazer nisso. Tambem nao precisam de estimulo para serem criativos; eles simplesmente o sao. Problemas desafiadores fazem seus olhos brilharem. Por outro lado, os que tem talento, mas nao paixao, fazem apenas o suficiente.Ninguem veste a camisa do outroAlguns gostam de contratar aqueles que se comprometem a "vestir a camisa da empresa". Mas a realidade e que nos vestimos apenas a nossa propria camisa. Em outras palavras, trabalhamos pelas nossas proprias realizacoes.Quando se trata de programadores, nao adianta procurar aqueles que serao comprometidos com a empresa. Esse tipo de comprometimento significa apenas que serao funcionarios obedientes e honestos, o que nao tem nada a ver com fazer bom software. Um bom software e feito por pessoas talentosas e comprometidas com o seu proprio trabalho. Esse comprometimento e o que os leva a procurar pelas melhores solucoes para os problemas que a sua empresa enfrenta. E de onde vem esse comprometimento? Nao e da paixao pelo empregador, mas da paixao pelo seu oficio. Portanto, esqueca aqueles que dizem que vao "vestir a camisa da empresa" e procure pelos que, de verdade, sao apaixonados pelo proprio trabalho.Nem tudo sao floresO corolario dos programadores talentosos e apaixonados e a sua tendencia de produzir solucoes mais sofisticadas do que o prazo e o orcamento permitem. Isso, de fato, e um problema para os gestores. Mas e um problema menor e mais facil de ser contornado do que a improdutividade e baixa qualidade do trabalho de programadores sem talento e paixao.Outra peculiaridade e que eles facilmente chegam ao estagio House se nao tiverem uma boa dose de trabalhos que facam bom uso do seu talento e alimentem a sua paixao. Isso e comum acontecer em empresas que pararam no tempo e nao evoluiram tecnologicamente. Se
esse e o caso da sua empresa, e melhor conseguir alguns trabalhos interessantes antes que sobrem apenas cowboys na sua equipe.Pra fechar...Se voce quer fazer bom software, tenha uma equipe talentosa e apaixonada. Sem essas caracteristicas, nao ha metodologia, salario, nem gerencia que faca uma equipe produzir bom software.Esse era o recado sobre Paixao. Volte no proximo sabado e leia o ultimo artigo desta serie falando sobre a terceira caracteristica que considero mais importante. Se preferir, assine meu RSS, siga-me no Twitter ou torne-se seguidor deste blog para ser informado quando for publicado o proximo artigo.Voce concorda que a paixao e uma das caracteristicas mais importantes num bom programador? Deixe seu comentario.— Foto: Equilibristas talentosas e apaixonadas do Cirque du Soleil. Referencias: [1] a b Steve Jobs. "You've got to find what you love" (transcricao)
Nao quero mais saber, nao vou insistir, nao vou arriscar, nao vou dizer.Nunca deu certo, nunca vai dar. Estrela da manha e da noite, la esta quando me levanto e quando me deito, Portadora de luz, brilha no ceu pra eu te ver daqui, inspira-me um pouco mais e tira de mim as palavras que ja ha algum tempo se recusam a sair.Estrela de Tolkien, de Poe, minha...E musa que traz inspiracao. - E tao importante assim, a ponto de nos torturar como voce vem fazendo de uns tempos pra ca?- E, eu acho que seria incrivel!- Tolo, sao apenas joguetes, nao vai acontecer, desista. Sabe que so uma pessoa vai sair machucada disso, sabe muito bem quem e, VOCE SABE QUE NAO VALE A PENA!!!- E, eu sei, eu sei como um sorriso ilumina a noite, sei como um caminhar consegue bailar ao som das conversas, sei como tudo e incerto e que sempre ha esperanca.- Nao aqui, nao agora, nao nessa direcao, voce esta errado de novo e sabe disso, me escute ao menos uma vez. Nao nos atribuem o devido valor, portanto nao tente conquista-lo, apenas aceite e aja de acordo, mostre o quanto vale a consideracao que lhe dao, mostre que e tudo uma equacao, mostre que voce se importa tanto quanto o outro lado, PASSE A SE IMPORTAR TANTO QUANTO A OUTRA PARTE!- Isso seria nada.- Entao que seja, nao existe mais lugar para ser a mudanca que voce quer no mundo, foda-se o mundo, foda-se todo mundo.- Todo mundo nao!- Exato, todo mundo nao, mas algumas pessoas precisam nos perder, e nao e segredo pra ninguem, deixa eu assumir o comando agora, deixa eu ligar o foda-se, deixa eu sair!- So um pouco, so dessa vez.- Mas se funcionar eu quero que voce reconheca que eu estava certo.- Se funcionar eu nao vou dar as caras por um tempinho.- Que seja, trato entao?- Trato!Todd adormeceu enquanto raiava o dia... Da mesma maneira que chegou, aos poucos, com uma certa resistencia, mas desta vez foi indolor. por meus olhos parece outra coisa, parece que e um pouco pra mim, e que ha um pouco daquele dizer sem dizer.Mesmo sendo muito egoista da minha parte, e so porque eu tenho esses impulsos, preciso colocar pra fora, e ocasionalmente chega a parecer uma boa ideia.Seria bom se fosse mesmo... Estamos todos caminhando, cada um em seu proprio ritmo e direcao, compartilhando um pouco da nossa rota com aqueles que compartilham das suas. Juntando cacos para um mosaico, diversas cores, tamanhos, formas, texturas...Diminuo o passo e espero um pouco, fico em duvida sobre quais pedacos levar, e me corroi a angustia de saber que cedo ou tarde deixarei alguns para tras, mesmo os que nao quero abandonar, mesmo aqueles que mudariam tudo, aqueles que eu talvez acabe por quebrar mesmo sem querer, aqueles que estao a juntar seus proprios pedacos... Vejo, verde, vida, fumaca, carros, muitos carros, stress, fuga, clausura, prende, protege, herege, cristao, pagao, fogo, queima, aquece, arde, alimenta, carne, macia, pele, Sol, calor, conforto, sofa, sossego, grama, futebol,
campo, um rosto conhecido, um sorriso, muitas risadas, uma pequena chama que queima a vida e a transforma na fumaca do incenso que perfuma o ar que respiro enquanto a minha mente verte liquida rumo ao inconsciente.