Aqui está uma série de artigos publicado pelo guru de usabilidade Joel Spolsky. Alguns artigos eu estou traduzindo e disponibilizando neste site. Se você quiser ver os originais em inglês visite Joel on Software - Archive ou a versão em português: Joel sobre Software.

Design de Interface para Programadores – Um livro sobre design de interfaces, para aqueles desenvolvedores de software em que todo o processo é um pouco de mistério. Nove capítulos estão disponíveis neste site. Uma versão mais longa está disponível em livro pela Apress.

Capítulos: 1 2 3 4 5 6 7 8 9

Outros Tópicos de Design de Software

Software na década de 1980, quando usabilidade foi "inventada", era tudo sobre interação computadores-humanos. Muitos software ainda são. Mas a Internet nos trás um novo tipo de software: software que é sobre interações humanos-humanos. Quando você está escrevendo software que serve de mediador entre pessoas, depois de você acertar na usabilidade, você tem que acertar na interface social. E a interface social é muito mais importante. A melhor Interface do Usuário no mundo não salvará nenhum software com uma interface social inadequada. Não é apenas usabilidade.

Look for coding conventions that make wrong code look wrong. Getting the right information collocated all together in the same place on screen in your code lets you see certain types of problems and fix them right away.

Especificações Funcionais sem Dor – Uma série de artigos para escrever especificações funcionais. “Engenheiros de software que mergulham no código sem escrever uma especificação tendem a pensar que são pistoleiros legais, atirando da aresta do telhado. Eles não são. Eles são terrivelmente improdutivos. Eles escrevem código ruim e produzem software inferior, e eles ameaçam seus projetos assumindo desnecessários riscos gigantescos”.

Parte 1: Por que se preocupar?
Parte 2: O que é uma especificação?
Parte 3: Mas... Como?
Parte 4: Dicas

Trabalhando no CityDesk – Uma série de artigos sobre o processo de criação do produto mais importante de minha companhia, o software de gerenciamento de conteúdo CityDesk.

Parte: 1 2 3 4 5

Desenvolvendo uma Equipe – Como construir uma equipe de desenvolvimento de alto nível.

- Uma coisa importante a lembrar sobre entrevistas é isto: é muito melhor rejeitar um candidato bom que aceitar um candidato ruim. Um candidato ruim vai custar um monte de dinheiro e esforço e vai desperdiçar o tempo das outras pessoas arrumando todos os seus bugs. Se você tiver alguma dúvida entretanto, Não Contrate. O Guia de Guerrilha para Entrevistas.

- A idéia era que você receberia um grande bloco de acrílico do tamanho de um dicionário quando o seu produto fosse entregue. Isso deveria, de alguma maneira, dar a você um incentivo para trabalhar, sabe, porque se você não fizer o seu trabalho -- nada de acrílico pra você! Incentivos Considerados Prejudiciais.

- Seria de se pensar que, depois de toda aquela mania de Qualidade dos anos 80, com todos os tipos de certificação de "qualidade" sem qualquer significado como a ISO-9000 e expressões de efeito como "Seis-Sigma", os gerentes de hoje em dia deveriam entender que ter produtos de alta qualidade faz sentido em termos de negócios. De fato, eles entendem isso. Muitos conseguiram colocar isso em suas cabeças. Mas eles ainda propõem uma série de razões para não se utilizar testadores de software, todas elas erradas.

- Há centenas de milhares de programadores por aí, e você pode contrata-los, se você sabe como. Este artigo é sobre a “perspectiva do programador” em como achar pessoas e convence-las para trabalhar para você.

- Como você recompensa programadores? Parte um de três em como criar um efetivo e justo sistema de compensação.

- Comentários da compensação dos programadores.

- Política de compensação final da Fog Creek Software.

O Teste do Joel - Eu inventei meu próprio, altamente irresponsável, teste medíocre, para medir a qualidade de uma equipe. A grande vantagem é que ele requer mais ou menos 3 minutos. Com o tempo economizado, você poderá até fazer um curso de Medicina.

- Então por que ninguém faz cronogramas? Primeiro, é porque é realmente um saco. Segundo, ninguém acredita que vale a pena. Para que ter tanto trabalho elaborando um cronograma se ele não vai estar atualizado? Eis uma maneira simples e sem sofrimentos de fazer cronogramas que realmente dão certo.

- Se você escrevendo código, mesmo em um grupo de uma só pessoa, sem um banco de dados organizado listando todos os bugs conhecidos no código, você simplesmente irá entregar código de baixa qualidade. Acompanhamento de Bugs Indolor.

- Uma compilação diária é uma compilação automatizada, diária, completa da árvore do código fonte. Compilações Diárias são suas Amigas.

- Comer sua própria comida de cachorro é o esquisito nome que nós da indústria dos computadores damos ao processo de efetivamente usar nosso próprio produto. Eu tinha esquecido como isso funcionava, até um mês atrás, eu levei para casa uma cópia do CityDesk (pensando que estava a 3 semanas do lançamento) e tentei construir um site com ele.

- Como um desenvolvedor de software, consertar bugs é uma coisa boa. Certo? Não é sempre uma coisa boa? Não! Consertar bugs somente é importante quando o valor de ter o bug consertado supera o valor de conserta-lo. Difícil e imbecil conserto de bugs.

- Este site deveria ser sobre gerenciamento de software. Mas às vezes você não tem o poder para criar mudanças em sua organização pela via executiva. É óbvio que se você é um programador peão na parte mais baixa do totem, não dá para sair baixando ordens para que as pessoas comecem a criar cronogramas ou cadastros de bugs. De fato, mesmo que você seja um gerente, você provavelmente descobriu que gerenciar desenvolvedores é como cuidar de um rebanho de onças, só não é tão divertido. Apenas dizer “façam assim” não faz as coisas serem feitas assim.

Uma Filosofia de Gerenciamento – Administrando seu time da maneira do Joel

- Na Microsoft, se você é o Gerente de Programa trabalhando na estratégia de macros do Excel, mesmo se você só está na empresa faz seis meses, não importa - você é o DEUS da estratégia de macros do Excel e ninguém, nem mesmo o empregado número 6, pode atravessar o seu caminho. Ponto Final.

- Imagine que seu objetivo de sua empresa de software não seja resolver um problema específico, mas estar apto a converter dinheiro para código através de programadores.

- Ninguém na Juno possuía alguma coisa, eles apenas trabalhavam nele, e diferentes camadas do gerenciamento alegremente metiam o bedelho em tudo, dando ordens a torto e direito em um estilo que eu comecei a chamar de gerenciamento bater e correr porque os gerentes tender a aparecer sem serem anunciados, dar algumas ordens tolas para como eles exatamente queriam algo feito, droga, sem pensar nada sobre o assunto, e sair da sala para todos os outros pegarem os pedaços. Comande e Conquiste e a Manada de Coquinhos.

- Um programador codificando a todo vapor está guardando zilhões de coisas em sua cabeça de vez: tudo de nomes de variáveis, estrutura de dados, APIs importantes, nomes das funções que ele escreveu e chama muito, até o nome do subdiretório onde ele guarda o código-fonte. Se você mandar aquele programador para Creta para umas férias de três semanas, ele vai esquecer tudo. Mudança de Tarefas Humanas considerada prejudicial.

- A combinação nada-é-simples-como-parece e redução de risco pode apenas levar você a uma conclusão: Você tem que projetar as coisas antes de implementa-las.

- Cinco Mundos: nem todo desenvolvimento de software é igual.

O manual do CTO – O que os gerentes de alta tecnologia precisam saber.

- Há uma razão misteriosa que os programadores sempre querem jogar o código fora e começar tudo de novo. A razão é que eles acham que o código velho é uma bagunça. E aqui está uma observação interessante: eles estão provavelmente errados.

- Quando eu sento para arquitetar um sistema, eu tenho que decidir que ferramentas usar. E um bom arquiteto apenas usa ferramentas que podem ou ser confiadas ou podem ser consertadas. De outra maneira você será Up the Tata sem a roupa de bailarina.

- Quando você vai muito longe, no sentido de abstração, você fica sem oxigênio. Algumas vezes pensadores espertos apenas não sabem quando parar, e eles criam essas figuras de alto nível absurdas, em volta do universo que são todas boas e benéficas, mas verdadeiramente não significam nada. Não deixe o astronauta de arquitetura assustar você.

- Se você não acredita em mim olhe para a Next e a Be... você pode construir o melhor computador no mundo com uma arquitetura matadora, mas se você não rodar Microsoft Excel, ninguém quer um.

- Quando você está trabalhando em um time realmente bom, com grandes programadores, o código dos outros, francamente, é lixo cheio de erros, e ninguém mais sabe como lançar o programa a tempo. Na defesa da síndrome do Não-Inventado-Aqui.

- Você quer seu compilador e seu ambiente de desenvolvimento sejam o mais estrito possível; você quer que ele literalmente gere valores de retorno aleatórios para o Global Size então você não entra no hábito de contar algo que não ficará em todo lugar; você quer usar configurações internacionais francesas no Windows 2000 chinês com um esquema de cor absurdo, teclado DVORAK, trackball, modo VGA 640x480, e grandes e feias fontes em seu sistema de desenvolvimento então você tem que lembrar de escrever o código que ajuste para todas essas coisas.

- Uma razão que as pessoas são induzidas para reescrever todo o código-fonte do zero é que o código original não foi projetado para o que está fazendo. Foi projetado como um protótipo, um experimento, um exercício de estudo, uma maneira de ir do zero para IPO em nove meses, ou um demo único. E agora ele se tornou uma grande bagunça que é grágil e impossível de adicionar código, e todos choramingando, e os velhos programadores saíram em desespero e os novos que são trazidos não podem entender o código então eles conseguem convencer de alguma forma a gerência a desistir e começar todo de novo enquanto a Microsoft assume seus negócios. Hoje deixe me contar uma história sobre o que você poderia ter feito.

- “Eu não sei o que está errado com minha equipe de desenvolvimento”, o CEO pensa consigo. “As coisas estavam indo tão bem quando começamos este projeto. Nas primeiras semanas, o time trabalhou que nem doidos e tinham um ótimo protótipo funcionando. Mas desde então, as coisas parecem ter ficado muito lentas. Eles apenas não estão mais trabalhando duro”. Ele escolhe um motorista de Callaway Titanium e manda o caddie buscar uma limonada gelada. “Talvez se eu despedir um punhado de retardatários eu os incentive!” O segredo do iceberg, revelado.

- Como você escolhe uma data de lançamento?

- Você é um desenvolvedor de software. Eu também. Mas nós podemos não ter os mesmos objetivos e requisitos. De fato há vários diferentes mundos de desenvolvimento de software, e diferentes regras se aplicam a diferentes mundos.

- Aqui estão algumas dicas para fazer um beta test de um software planejado para uma grande audiência – o que eu chamo de “shrinkwrap”. Eles se aplicam para projetos open source ou comerciais; eu não me importo se você ganha em dinheiro, olhos, ou reconhecimento dos seus companheiros, mas eu estou focado em produtos para muitos usuários, não projetos de TI internos. Doze Dicas para Fazer um Beta Test.

- Eventually, Isabella’s became a fabulously profitable and successful restaurant, not because of its food, but because it was debugged. Just getting what we programmers call “the edge cases” right was sufficient to keep people coming back, and telling their friends, and that’s enough to overcome a review where the New York Times calls your food “not very good.” Read on in my Foreword to the book Painless Project Management with FogBugz.

Estratégia de Software: O Grande Panorama – Ok, você está conduzindo uma empresa de software. Como você faz as decisões estratégicas para vencer?

- Construindo uma empresa? Você tem uma decisão muito importante a fazer, porque ela vai afetar tudo o que você faz. Não importa o resto, você deve descobrir em qual campo você está e ajustar tudo de acordo, ou você vai ter um desastre em suas mãos.

- Se você está no negócio de criação de plataformas, você provavelmente vai sofrer do que é conhecido geralmente como o problema da galinha e o ovo. Ninguém vai comprar sua plataforma até que há bom software que roda nele, e ninguém vai escrever software até que você tenha uma grande base instalada. Ooops.

- A melhor maneira de eliminar as objeções das pessoas para mudar para seu produto é facilitar a volta ao produto. Ninguém quer trocar para um produto que vai eliminar sua liberdade no futuro.

- Atomz.com está esperando a alcançar o que eu chamo de “stealth lock-in” Eles nem querem que você perceba que você está se tornando dependente em um serviço. No futuro, quando você estiver “viciado”, eles podem começar a cobrar você por um pacote, e você vai pagá-los apenas para evitar o custo de trocar.

- Há várias grandes razões para o bloatware. Número 1, se os programadores não tiverem que se preocupar sobre como o código deles é grande, eles podem lança-los o quanto antes. E isso significa que você tem mais recursos, e recursos que vão fazer sua vida melhor (quando você os usa) e normalmente não machucam (quando você não os usa). Bloatware e o Mito 80/20.

- Microsoft esmagando a Netscape poderia ter sido planejado como um aviso severo de Kleiner Perkins para ficar fora de seu jardim; muito como as ameaças infantis de Marc Andreessen para substituir o Windows foram aterrorizantes, foi mais aterrorizante ver que John Doerr parece ter perdido o medo da Microsoft que é vital para a dominância da Microsoft na indústria de software. Uma resenha da Estratégia Competitiva de Michael E. Porter.

- O problema aparece quando você não pode pensar em nenhum recurso novo, então você coloca o clipe de papel e depois tira o clipe de papel e tenta cobrar as pessoas nas duas vezes, e eles não estão caindo nessa. Software Bom Leva Dez Anos. Acostume-se a isso.

- Muito de meus dias são como isso: (1) chego no trabalho (2) checo o e-mail, navego na Internet, etc. (3) decido que eu posso ir almoçar antes de começar a trabalhar (4) volto do almoço (5) checo o e-mail, navego na Internet, etc. (6) finalmente decido que eu tenho que começar (7) checo o e-mail, navego na Internet, etc. (8) decido de novo que eu tenho mesmo que começar (9) carrego o maldito editor e (10) escrevo código sem parar até perceber que já são 19:30.
Em algum lugar entre o passo 8 e o passo 9 parece ter um bug, porque não é sempre que eu consigo transpor esse abismo.

- Pensando sobre o princípio microeconômico dos complementos, percebi algo interessante sobre software de código aberto, que é o seguinte: a maioria das companhias que estão gastando grana alta para desenvolver código aberto fazem isso porque é uma boa estratégia de negócios para elas, não porque de repente pararam de acreditar no capitalismo e se apaixonaram pela liberdade de expressão. Carta estratégica V.

- Se você quer que uma plataforma seja bem sucedida, você precisa de adoção massiva, e que isso significa que você precisa de desenvolvedores para escrever os programas. A melhor maneira de matar uma plataforma é dificultar para os desenvolvedores escreverem software. Na maior parte do tempo, isso acontece porque as empresas de duas uma: não sabem que eles tem uma plataforma (eles acham que é um aplicativo) ou eles ficam gananciosos (eles querem todo o lucro para eles).

- Quando a Apple lança um produto, eles tendem a surpreender muitas pessoas, até mesmo os mais devotos observadores da Apple que gastam os últimos meses revirando o lixo em One Infinite Loop.
A Microsoft, por outro lado, não consegue parar de falar sobre produtos que são mero vislumbres nos olhos de alguém. Alpha testers fora da empresa estavam usando .Net três anos antes de ser finalmente lançado.
Então, quem está certo? Você deveria falar sem fim sobre seus produtos ainda em desenvolvimento, na esperança de criar um murmurinho ou você deveria segurar até você ter algo pronto?

- Há certas hipóteses fundamentais sobre fazer negócio no mundo do [Venture Capital] que faz [venture capital] uma má combinação com empreendedorismo. E desde que empreendedores que criam os negócios que os VCs financiam, isso é um grande problema.

- A maioria dos gerentes de software sabem o que um bom escritório seria e eles sabem que não o tem e não podem tê-lo. O escritório parece ser uma coisa que ninguém acerta ou ninguém pode fazer algo a respeito. Tem um contrato de aluguel de dez anos e quando a empresa se muda a última pessoa que qualquer pessoa pergunta sobre como projetar o escritório é o gerente do time de desenvolvimento, que descobre o como será seu novo cercado de engorda de gado, uh, cubículo, pela primeira vez na segunda-feira depois da mudança.
Bom, é minha própria droga de companhia e eu posso fazer algo a respeito, então eu fiz.

- Escrever código não é produção, não é sempre arte (mas pode ser), é design. Design é uma área nebulosa onde você pode agregar valor mais rápido que você agrega custo. A revista New York Times vem falando de como o iPod e como a Apple é uma das poucas empresas que sabem como usar um bom design para agregar valor. Mas como eu tenho falado bastante sobre design, eu quero falar sobre arte por um minuto: o que é e como você a reconhece.

- Há duas forças opostas dentro da Microsoft, que eu vou me referir a, um pouco de exagero, como grupo do Raymond Chen e o grupo da MSDN Magazine. Como a Microsoft Perdeu a Guerra da API.

- Você acabou de lançar seu último software de organização de fotos. Através de algum mecanismo que será deixado como um exercício ao leitor, você conseguiu deixar as pessoas saberem sobre ele. Talvez Walt Mossberg escreveu uma resenha com elogios exagerados no Wall Street Journal. Uma das maiores questões que você estará perguntando é "Quanto eu deveria cobrar pelo meu software?"

Discurso bombástico e elogios exagerados – No qual eu lamento e reclamo sobre algo ou outra coisa que me enfureceu, ou elogio (mais raro) algo até os céus.

- A estratégia do REALBasic deveria ter sido seduzir os desenvolvedores do Visual Basic para Windows com a expectativa de um port para Macintosh barato. Mas seu desejo de ser politicamente-correto-Macintosh vai custar uma fortuna em negócios potenciais.

- Microsoft Ficou Louca, uma crítica da publicidade espalhafatosa rodeando o .Net.

- Em julho de 2000, eu dei um furo de reportagem uns 18 meses antes dos experts, observando com amplo alerta os riscos do sistema Big Brother Passport da Microsoft. Emitindo passaportes faz da Microsoft um país é o mais popular artigo de todos os tempos no Joel sobre Software.

- Alter-Joek usou meu dinheiro para se inscrever no último e excitante serviço: “Internet sem fio”, também conhecido como WAP, da Verizon Wireless (cria mestiça da BellAtlantic, GTE e AirTouch). Este é um serviço que deixa você “surfar” na “internet” no seu telefone celular. Hmmm.

- O número de coisas estúpidas acontecendo aqui excede minha limitada habilidade de grok tudo de uma vez. Eu estou um pouco desarmado em como é fraco a idéia de negócios do CueCat.

- Netscape 6.0 tem sido uma excelente ilustração de muitos de meus argumentos que eu fiz no Joel sobre Software nos últimos 6 meses. Infelizmente, geralmente é uma ilustração do que não fazer.

- Uma resenha do The Ricochet Wireless Modem, R.I.P.

- O plástico transparente não serve para nada exceto imitar os envelopes da FedEx que tem o mesmo plástico para guardar o manifesto do correio, como aquelas pequenas borboletas que tem um marcação forte em uma tentativa de convencer os comedores de borboletas que eles mesmo são fortes, mesmo que eles não podem ser menos forte se eles fossem vestido como Julie Andrews em sapatos de salto cantando “My Favorite Things”. Quantas Mentiras Você Pode Achar Em Uma Mala Direta.

- Se você quer ter sucesso no ramo de softwares, você tem que ter um grupo de gerenciamento que entende completamente e adora programação, mas eles tem que entender e amar negócios também. Encontrar um líder com fortes aptidões nos dois lados é difícil mas é o único jeito de fazer um desses erros fatais que o Rick cataloga amorosamente em seu livro. Então, leia-o, cacareje e se tem um estúpido administrando sua empresa, deixe seu currículo impecável e comece a procurar por uma casa em Redmond.

- Meu prefácio para o excelente novo livro de Mike Gunderloy, Coder to Developer.

Coisas Interessantes Aleatórias

- Eu tirei uma licença por conta própria em 1995 e outro em 2000. Eu acho que elas foram formidáveis.

- Contrato de Sigilo Que Você Nunca Deve Assinar

- Auto-motion no Excel

- Preso atrás de uma escrivaninha? Clareie seu monitor um pouquinho com essas imagens digitais de alta resolução que eu tirei no verão em East Hampton.

- Não é pra chover na parada de todos, mas há três importantes idéias da ciência da computação que são, francamente, erradas e as pessoas estão começando a perceber. Ignore-as por seu risco.

- Uma coisa que a arsDigita fez muito, muito certo foi a coisa de voz pessoal. A maior coisa que eu penso sobre a Fog Creek é como manter a voz pessoal e se nós podemos faze-lo, eu devo um grande dívida a Philip Greenspun.

- Pergunte ao Joel

- Pensando sobre coisas chatas do primeiro ano da ciência da computação como strcat e malloc verdadeiramente funciona tem dado a você novas ferramentas para pensar como decisões arquitetônicas e estratégicas de alto nível que você faz para proceder com tecnologias como XML. Voltando às Raízes.

- Em Abril de 2002, a Fog Creek Software planeja uma futura migração para o .NET

- Se você acha que você está trabalhando em um projeto impossível? Isso não é nada comparado ao Napster, onde a corte exige que você faça coisas tecnologicamente impossíveis e a maior parte do seu tempo é gasta em “depoimentos, declarações, testemunhos e reuniões muito freqüentes com a RIAA e os técnicos experts da Corte”. Eddie Kessler, Vice-Presidente de Tecnologia no Napster explica.

- Você não pode dirigir rápido quando está chovendo, mesmo ainda que seu carro tenha limpadores de pára-brisa, faróis, um teto e um aquecedor, tudo que protege você de se importar sobre o fato que está chovendo (eles abstraem o clima), mas veja, você tem que se preocupar com a aquaplanagem (ou hidroplanagem nos Estados Unidos) e algumas vezes a chuva é tão forte que você não pode ver muito à frente então você tem que ir mais devagar na chuva, porque a chuva nunca pode ser completamente abstraída, por causa das Leis das Abstrações Avariadas.

- Lord Palmerston: A questão Schleswig-Holstein é tão complicada que apenas três homens na Europa entenderam. Uma delas foi o Príncipe Albert, que está morto. A segunda foi um professor alemão que ficou doido. Eu sou o terceiro e eu esqueci tudo sobre ela. Programação se tornou muito difícil.

- Para isolar e simplificar todo acesso para o banco de dados do CityDesk, todo código do banco de dados vai para um conjunto de classes chamado classes de entidade.

- Eu mudei Joel sobre Software para um novo servidor, em um centro de colocation operado pela Peer 1 Network. No processo de encontrar uma nova casa e te-lo funcionando e rodando eu aprendi relativamente um pouco sobre como funciona a hospedagem de websites, então eu pensei em descrever um pouco disso aqui e no processo fornecer um vislumbre Por Trás dos Bastidores.

- Construindo Comunidades com Software

- Este pode ser, possivelmente, o artigo mais fora de tópico que eu já fiz aqui. Mas eu tento escrever apenas sobre coisas que eu sei e recentemente eu aprendi muito mais sobre imóveis que eu jamais precisaria saber. Encontrando um Escritório em Nova York.

- Então eu tenho um comunicado a fazer: se você é um programador trabalhando em 2003 e você não sabe o básico de caracteres, conjunto de caracteres, codificações e Unicode e eu te pegar, eu vou te punir fazendo você descascar cebolas por 6 meses em um submarino. Eu juro que vou.
O Mínimo Absoluto que todo Desenvolvedor de Software Absolutamente, Positivamente Deve Saber Sobre Unicode e Conjunto de Caracteres (Sem Desculpas!)

- Por favor, não use cartas de apresentação que você copiou de um livro. Se você escrever “Eu entendo que a posição também requer um candidato que é orientado a detalhes e trabalha em equipe, trabalha bem sobre pressão e é apto a se relacionar com pessoas em todos os departamentos da firma” então no máximo, as pessoas pensarão que você é um artista com papo furado e na pior das hipóteses, eles pensarão que você não nasceu com a parte do cérebro que permite você construir seus próprios pensamentos e idéias. Faça Seu Currículo Ser Lido.

- Sobre //comentário: os melhores ensaios sobre melhor software de 2004

- Most college students, fortunately, are brash enough never to bother asking their elders for advice, which, in the field of computer science, is a good thing, because their elders are apt to say goofy, antediluvian things like "the demand for keypunch operators will exceed 100,000,000 by the year 2010" and "lisp careers are really very hot right now." I, too, have no idea what I'm talking about when I give advice to college students.

Hosted by www.Geocities.ws

1