Quer colaborar com o Job4Dev?

Que bom!

Veja como em http://job4dev.com/contribute

Alguns meses depois

Dizem por aí que  uma boa premissa para se criar um produto novo é partir de uma necessidade pessoal. Eu já devo ter mencionado isso em algum lugar neste blog. No caso do Job4Dev, foi assim. Na verdade, mais do que uma  necessidade, o Job4Dev teve como ponto de partida uma frustração: os sites de empregos brasileiros de empregos voltado para o mundo TI eram um amontoado de mais do mesmo.

O exercício é simples: entre nos 3 principais sites de empregos, e conte a porcentagem de vagas oferecidas por consultorias de TI, na maioria sem nome, sem projetos definido, sem plano de carreira, sem grandes desafios, cujo único objetivo é fazer outsourcing de recursos de programação. São a grande maioria.

Nada contra este tipo de trabalho. Existe a demanda, e existe gente que se interessa em desenvolver. Ótimo. O problema é que quando olhava estes sites, tinha a nítida impressão de que o mercado brasileiro se resumia a isso. E olhando à minha volta, percebia que meus colegas e outros profissionais bons em geral não passavam nem perto destes  sites, preferindo usar listas de emails, contatos pessoais e o bom e velho networking.

Job4Dev foi desenvolvido tendo como objetivo de oferecer alternativas, captando vagas de várias fontes, filtrando o material e disponibilizando apenas aquilo que julgamos interessante.

E devo confessar que, depois de alguns meses no ar, o retorno e o resultado me surpreendeu. O site ainda tem muito a crescer, mas temos conseguido um fluxo regular de vagas, feedbacks muito bons de usuários e empresas. Isso me confirma uma coisa: o mercado brasileiro talves esteja longe do ideal, mas existem sim boas opções de empresas que procuram profissionais diferenciados, que desenvolvem projetos interessantes. E estas empresas estão carentes de espaços adequados de divulgação.

Filtro por Estado no Job4Dev

Mais uma funcionalidade muito requisitada por fãs do Job4Dev da minha rua: filtro por estado. Pedido atendido: agora é possível filtrar as vagas por estado e/ou por palavra chave.

O sistema foi feito de forma a minimizar o impacto no cadastro. Assim, o formulário continua o mesmo, apenas com um campo de localização: escreva a sigla do estado em algum lugar, e o Job4Dev se encarregará de fazer o resto.

Esta funcionalidade ainda não está no RSS ainda, mas seguindo a filosofia “Release Fast, Release Often”, deverá estar disponível em breve.

job4dev.com.br no ar!

Acabei de configurar o domínio job4dev.com.br, que irá funcionar em paralelo ao domínio job4dev.com. Com isso espero melhorar os resultados nas pesquisas Google (afinal, agora temos um domínio genuinamente brasuca). Ajudem a divulgar a nova marca!

Job4Dev + Twitter

Na sexta feira entrou no ar uma nova funcionalidade do Job4Dev: integração com o Twitter. Para quem não conhece o Twitter, acho que a melhor explicação que eu posso dar é o texto da página inicial do próprio site:

Twitter is a service for friends, family, and co–workers to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What are you doing?

Resumindo tudo: é um microblog. E qual o interesse do Job4Dev por um microblog? Simples: mais formas de divulgação. O Twitter permite o envio de mensagens através de Google Talk, Jabber, Live Journal, RSS e SMS, além do próprio site.

Temos agora um usuário job4dev no twitter, que pode ser acessado através da URL http://twitter.com/job4dev: para onde todos os anúncios de vagas aprovados serão enviados a cada meia-hora, e divulgadas em tempo real para todos os usuários do Twitter que cadastrados na nossa rede de contatos. Simples e eficiente!

PS: Gostaria de aproveitar para dizer que o RSS do Job4Dev no Google Reader anda meio problemático ele não é atualizado desde o início de abril. Estamos tentando corrigir isso o quanto antes.

Job4Dev Potiguar

O Job4Dev ganhou um aliado no Rio Grande do Norte: Mayron Cachina, entusiasta do projeto e programador, adicionou o logo do projeto e um widget com nosso RSS em seu blog
Cachina’s Programming Blog (tarefa muito fácil para blogs que, como o Wordpress, possuem widgets de RSS).

Além disso, ele irá ajudar a divulgar a marca em Natal, entrando em contato com empresas e cadastrando vagas locais. Espero que isto marque o início da popularização do site em regiões fora do eixo Campinas - São Paulo.

Gostaria de agradecer publicamente ao Mayron pelo apoio. É muito gratificante perceber que nossos projetos atraem o interesse de empresas, profissionais e estudantes de todo o país.

Nova versão do Job4Dev no ar

Disponibilizei ontem a mais nova versão do Job4Dev, que eu considero como sendo o segundo major release desde que o projeto entrou no ar, no dia 3 de dezembro de 2007.

Para aqueles que utilizam o  sistema apenas para buscar vagas, as diferenças são poucas: busca no site usando o motor do Google e algumas pequenas modificações no design (na maioria dos casos, correções para o IE).

A maior mudança será sentida por aqueles que cadastram vagas no sistema. Uma das grandes reclamações, recorrentes, era de que uma vez cadastrada a vaga, era impossível editar e fazer pequenas correções. O fluxo de trabalho era simplificado ao extremo, e o feedback para o usuário era mínimo. Além disso, eu não tinha controle algum de quem cadastrava vagas.

Com estes pontos em mente, resolvi adicionar um sistema de controle de usuários: todos aqueles que desejarem submeter vagas no site deverão se cadastrar no sistema. Com isto eu consigo oferecer os seguintes serviços:

  • Cada usuário poderá ver suas vagas publicadas, rejeitadas, removidas ou aguardando aprovação.
  • O usuário poderá editar e modificar uma vaga criada por ele. Caso a vaga já tenha sido publicada, ela será colocada em estado de espera e submetida para nova aprovação.
  • Vagas removidas (com data de publicação superior a 30 dias) poderão ser republicadas pelo autor a qualquer momento.
  • O usuário receberá emails notificando modificações no status de suas vagas.

Além disso, o formulário de submissão de vaga foi redesenhado e ganhou uma nova interface para adicionar palavras-chave, inspirada no site del.icio.us.

Casa de ferreiro…

A bruxa estava solta no final de semana. Passou pelo Job4Dev e apertou o botão FODA-SE SISTEMA (uma variante do botão FODA-SE Rubinho, muito usado pela Ferrari).

Na sexta, o sistema de markdown parou de funcionar. Sem mais nem menos. Nada foi mexido no sistema. Ele funcionava, e depois deixou de funcionar. Foi resolvido: era uma simples questão de path. Mas mesmo assim eu pergunto: como alguém ainda pode dizer que a computação é uma ciência exata?

Tá bom, provavelmente este vai ser mais um daqueles bugs misteriosos cujo computador é o primeiro a levar a culpa (”eu tenho certeza que funciona, não tem como não funcionar, a culpa é deste micro lazarento que não sabe nem processar um if decentemente”), e que depois a gente percebe que a culpa é do desenvolvedor. Esta constatação em geral é seguida por um “Ahhhhhhhh..”

Logo em seguida, um erro de operação (famosa problema de interface cadeira-teclado) fez com que a base de dados fosse pro beleléu. E obviamente, em casa de ferreiro espeto de pau: isto aconteceu logo depois de eu escrever um post sobre a importância do backup. E obviamente eu não tinha um backup local configurado. OBVIAMENTE.

Não querendo esperar o pessoal do webfaction encontrar o backup no meio de toneladas de arquivos, tomei duas decisões:

  1. Restaurar os anúncios mais importantes/mais recentes na mão e aproveitar pra fazer uma limpeza geral no sistema.
  2. Montar um sistema de backup local. Os mais astutos perceberão que o post sobre o pgpass foi fruto desta tarefa.

Estamos no ar novamente, e agora com um sistema muito mais rápido, estável, confiável e a prova de manipulações desastrosas.

Preview no Job4Dev

Mais uma singela porém importante novidade no Job4Dev: agora o sistema mostra um preview do anúncio para que o usuário possa validar o texto e a formatação produzida pelo markdown antes de confirmar a submissão.

Tag cloud no Job4Dev

Atendendo ao clamor popular, coloquei no ar ontem um sistema de tag cloud no Job4Dev.

A primeira versão está bem simples: lista de tags ordenada por nome, com o número de anúncios em que a tag aparece do lado. A próxima versão, que deve sair em breve, será del.icio.us like, diferenciando as mais populares das menos populares pelo tamanho da fonte.

De grão em grão…

Markdown no Job4Dev

Acabou de sair do forno!

O formulário de cadastro de novas vagas do Job4Dev agora aceita o uso de markdown para formatação de texto. Para quem não sabe, markdown é um padrão de codificação simples de texto para geração de HTML. É muito usado por wikis e afins.

Exemplos de marcação markdown:

  • *texto em itálico*
  • **texto em negrito**

O parser do texto e geração do HTML ficou a cargo da lib Python Markdown.

Getting Real: desenvolvendo o Job4Dev

True artists ship“, artistas de verdade produzem.

Esta frase, atribuida ao Steve Jobs, me foi dita pelo Raphael. Confesso que ela mexeu comigo. Sempre admirei pessoas que desenvolvem seus projetos computacionais, e fazem deles coisas interessantes. Eu estou numa fase de tentar transformar os meus projetos em coisas reais. Se eles estão se tornando coisas interessantes, é outro papo. O primeiro foi este blog, que com muita perserverança está se transformando em um repositório de textos bem interessantes. Depois, coloquei no ar a JuiceLib, que está num processo bem lento de desenvolvimento. Falta tempo e ajuda. E eu trabalho por lotes….

Mas daí, veio a idéia do job board. O interessante neste caso é que este lance do jobboard, antes de ser um projeto de desenvolvimento, era algo que me martelava a cabeça. Me frustrava não encontrar no Brasil um jobboard que me desse prazer de visitar. E depois de um tempo de maturação, cheguei à conclusão de que se ele não existisse, eu teria que criar um. Lembrei de um cara chamado Richard Stallman que não encontrou nenhum editor de textos com os recursos que ele procurava, e daí ele escreveu o Emacs. Citando uma outra referência mais moderna, o livro Getting Real do pessoal da 37 Signals:

A great way to build software is to start out by solving your own problems. You’ll be the target audience and you’ll know what’s important and what’s not. That gives you a great head start on delivering a breakout product.

Muito bem. Eu tinha um problema a resolver. Resolvi atacá-lo de frente. E de quebra, poderia me aprofundar mais em Python. Restava definir o resto do meu ambiente. O editor seria o Emacs, por ser extremamente versátil, ter uma quantidade incrível de ferramentas úteis e poderosas, e ser bem leve. O banco de dados escolhido foi PostgreSQL, por ser um banco free, de ótima qualidade, com portes para Linux, Windows e Mac (ambiente primário de desenvolvimento) e pelo fato de eu ter trabalhado com ele por muito tempo.

O mais difícil foi definir um framework/lib de desenvolvimento web. Comecei avaliando o Turbogears. No início achei interessante, mas por vários motivos não gostei de como ele evoluiu. O Raphael tentou me convencer a me usar o web.py, uma lib bem leve de desenvolvimento web, que eu acabei não escolhendo por achar a doc bem fraquinha. Daí eu descobri o Django, que possuia uma documentação bem completa, um conceito bem legal de oferecer muitos recursos para minimizar a parte CRUD do sistema e um ótimo case de implementação: o site washingtonpost.com.

O desenvolvimento se deu em 3 grandes blocos de trabalho.

O primeiro foi a parte de design de base de dados e entidades, além de primeiros contatos com o ambiente de desenvolvimento. Demorou 3 dias mais ou menos. Boa parte da demora foi pelo fato de eu estar descobrindo o Django ao mesmo tempo que fazia o design da solução. Neste ponto, eu sabia muito bem o que eu queria obter, e sobretudo sabia o que eu NÃO queria! Citando mais uma vez o Getting Real:

Sometimes the best way to know what your app should be is to know what it shouldn’t be. Figure out your app’s enemy and you’ll shine a light on where you need to go.

O segundo bloco de trabalho foi a integração com o design gráfico. E nesta fase aconteceu uma coisa interessante. O Raphael fez um design que se encaixou perfeitamente naquilo que eu tinha em mente. E ao mesmo tempo ele tinha feito uma versão funcional do board em web.py. Rolou então uma competição saudável: roubei o design dele, e durante alguns dias desenvolvemos o mesmo sistema em ambientes diferentes e em paralelo. O que um fazia, o outro corria atrás para fazer melhor. Um impulsionou o outro. Nesta fase, foram feitas as telas principais, o sistema de submissão, e o primeiro RSS. Foram dois ou três dias de trabalho bem intenso, e confesso que fazia muito tempo que não me divertia tanto escrevendo um software. O meu deadline era segunda feira dia 26 de novembro. Neste dia tínhamos um demo rodando.

Foi aí que veio o terceiro bloco de trabalho. Chamamos amigos e conhecidos para serem beta testers. A meta: colocar o site no ar, para o público, com domínio próprio e tudo mais no dia 3 de dezembro. Nesta semana, várias pessoas testaram o sistema, acessando a listagem, as páginas de anúncios, submetendo anúncios novos e sobretudo reportando bugs e mais bugs. Este era o objetivo. Nos final de semana anterior à minha data limite de “lançamento”, passei horas e mais horas escrevendo código, debugando, testando.

No dia 3, o Job4Dev estava no ar. O Log4Dev ganhou um irmãozinho, e eu ganhei mais um filho. Como disse anteriormente, fazia muito tempo que não tinha tanto prazer em fazer algo relacionado a software. Não pela complexidade do sistema em si, mas pelo fato de ter uma meta a ser alcançada, e de produzir um sistema pequeno, leve, eficiente e útil. E sobretudo de ter a sensação de ter gerado algo que pode ser útil para resolver um problema real.

Log4dev, você ganhou um irmãozinho: Job4Dev

Vivemos num mundo acelerado.

Vivemos num mundo acelerado, fruto do trabalho de profissionais como nós. Responsáveis pelos gerenciamento e distribuição de informação e conhecimento. Conhecimento esse que é usado para gerar mais tecnologia, mais informação, mais eficiência, melhores resultados, maior produtividade, economias mais diversas e problemas mais complexos a resolver.

E, ironicamente, um desses complexos problemas que passam pelas cabeças dos executivos é: como encontrar mais profissionais para trabalhar e produzir soluções de qualidade? Quem contratar para ajudar a desenvolver mais soluções?

As tecnologias mudam, as empresas mudam, os projetos mudam. Mas a necessidade de profissionais qualificados e capazes de mudar permanece. Queremos encontrar uma solução para esses problemas. Queremos aproximar profissionais diferenciados e competentes com empresas que sabem qual o valor esses têm. Queremos oferecer um serviço para empresas que possuem um planejamento para a expansão dos seus quadros, e não as que tratam um profissional como uma peça substituível, um commodity que se obtém facilmente, que acha que profissionais que são
entusiasmados com o seu trabalho vivem apenas pensando nos números do Hollerith.

Sites que servem como imensos classificados para anúncios de oportunidades existem, e não são poucos. E esses já se mostraram falhos, não funcionam bem. As empresas que mereceriam destaque por ter políticas e ações honestas vêem seus anúncios diluídos no meio de toneladas de outros anúncios de empresas que apenas indicam “Vaga para Programador. Obrigatório conhecimento em XYZ.”

Profissionais competentes e que possuem boa formação tampouco utilizam esses serviços: eles já arrumaram uma forma de estabelecer alguns contatos e acabam indo trabalhar em empresas onde tiveram alguma indicação. O networking é muito mais valioso do que uma série de certificações e cursos que sirvam para mostrar que o potencial candidato realmente tem conhecimento em XYZ.

A solução parece estar, então, em encontrar algum equilíbrio entre “permitir uma visibilidade a um público refinado” e “alavancar o poder do networking”. Como fazer isso? Oferecendo espaço gratuitamente para empresas que possuem reputação no mercado. Provendo um meio onde profissionais que estejam trabalhando em uma empresa possam mostrar as vantagens de se trabalhar com ele. Permitindo que as pessoas discutam entre si, com sua rede de contatos e com outros, quais oportunidades podem ser interessantes, quais mercados estão mais aquecidos, quais empresas fazem jus a sua reputação. Filtrando a informação para que ninguém se afogue num mar de ruído.

É sabido que um profissional de qualidade só fica desempregado quando quer, ou por um grave acidente de percurso da empresa em que ele trabalha, pegando-o de surpresa. Não seria bom ter um sistema onde as empresas pudessem dispor suas vagas gratuitamente, e que apenas profissionais que estão buscando acompanhar as tendências de mercado?

É sabido que um profissional de qualidade busca saber quais são os benefícios extras que a empresa têm a oferecer. Cursos de especialização, oportunidade no exterior, empresas em rápida ascenção e com possibilidade de crescimento em curto tempo… não seria bom ter um serviço onde fosse possível saber mais da empresa (contado por quem trabalha nela), além da vaga e de um email de contato?

É sabido que um profissional de qualidade é capaz de se adaptar às novas tecnologias e adotar novos processos rapidamente. Não seria bom ter um serviço onde o profissional possa ter uma idéia de qual é o tipo de atividade da empresa e qual é a base da tecnologia utilizada, mas sem se sentir preso a requisitos burros, como “5 anos de
experiência em .NET 3.0″, ou “conhecimento avançado de ferramentas para XML”?

É sabido que um profissional de TI conhece e usa tecnologias e ferramentas modernas para comunicação. Não seria bom ter um sistema tivesse um sistema de RSS razoavelmente inteligente? Isso é bom para pessoas que estão buscando emprego, pois serão sempre notificadas de novas vagas; é bom para as empresas, pois a informação pode ser difundida rapidamente para os profissionais; e é bom até para outros bloggers que queiram replicar essas informações em seu site. Por exemplo: se você é um webdesigner que possui um site, você poderia oferecer uma funcionalidade extra, ao listar
apenas vagas que contenham “web” como palavra-chave. Não seria um recurso útil para levar a informação de uma forma filtrada, aprimorando o foco?

É com esse espírito e com esse design que estamos colocando no ar Job4Dev. É esse tipo de sistema que estamos colocando no ar, e pretendemos prosseguir seu desenvolvimento, acrescentando funcionalidade e inteligência.

O sistema é simples:

- Qualquer empresa pode publicar um anúncio em nosso site, gratuitamente. Basta acessar a página de cadastro e colocar as informações que são importantes para que um profissional que queira se candidatar a vaga: nome da empresa, uma descrição das atividades da empresa, qual o trabalho a ser desempenhado na vaga em oferta, etc.

- O anúncio será listado e ficará no ar durante 30 dias.

- Não vamos trabalhar com empresas que não indiquem o nome. Com isso, queremos evitar anúncios de consultorias e
headhunters. Queremos justamente eliminar as barreiras, não oferecer ferramentas para pessoas que atuam como intermediários no processo.

Achamos que a qualidade de um projeto começa com a contratação de profissionais de qualidade, que tem que ser encarados como peças chave no processo de desenvolvimento e não como digitadores de luxo facilmente substituíveis. E isto começa por um bom sistema de seleção.

Não pense que estamos trabalhando nisso por mera filantropia, ou porque gostamos tanto de tecnologia que gastamos até nossos fins de semana desenvolvendo aplicações web. Estamos trabalhando nesse serviço para que possamos também colocar em prática alguns dos princípios que defendemos no blog: a importância do design; tratar um computeiro como
muito mais que um digitador de luxo; a agilidade no processo de desenvolvimento de sistemas web; os novos mecanismos de trabalho numa economia digital; e buscar atenção às novas tecnologias mas não se deixar escravizar por elas e muito mais.

Sem contar que o mercado têm suas surpresas, e nunca sabemos quando vamos precisar de um emprego, ou quando vamos precisar contratar alguém, não é mesmo?