Categorias
Carreira

Carreira Programador – Sou júnior, pleno ou sênior?

Trabalhar com desenvolvimento de software, ser um programador, requer muito mais do que conhecer uma linguagem de programação e alguns pacotes, exige diversas habilidades do ser humano. Agilidade, flexibilidade, criatividade e diversas outras. Isso não se consegue da noite para o dia.

O que tenho notado ultimamente em muitos profissionais é a pressa de chegar até o nível mais alto dos cargos. Se tornar um sênior o quanto antes, mesmo tendo apenas dois ou três anos de experiência no mercado de trabalho.

Em parte, isso é culpa das empresas que simplesmente estão desesperadas por programadores e oferecem cargos e salários super altos para pessoas com pouca experiência. Não que ter altos salários seja algo ruim ou que ter um nome bonito para o cargo no Linkedin seja um problema.

A verdadeira questão é a confusão que isso pode causar quando se tem alguém com poucos anos de experiência sendo a referência de uma equipe.

Sim, um programador sênior é uma referência para todos os outros membros de sua equipe. E o bom programador júnior é aquele que sabe que “ser o menos inteligente da mesa” é algo essencial para o seu crescimento.

Não existe uma regra para se definir quem é sênior ou quem é júnior, isso vai depender do plano de carreira de cada empresa.

O que existe é uma regra importantíssima para os programadores em qualquer nível de carreira, iniciantes ou experientes: Jamais pare de aprender!

“Tá, mas como eu vou saber que nível estou?” – Leitores

Como depende de cada empresa, fica complicado saber. Para dar uma ajuda vou mostrar uma listinha…

A lista

Aqui vai uma tradução de uma lista muito interessante que o DHH, criador do Rails e founder/CTO do Basecamp, publicou em uma conversa no twitter esta semana.

Essa lista faz parte do Basecamp Employee Handbook, o manual do funcionário do Basecamp, e clarifica um pouco sobre as competências que cada programador deve ter dentro da empresa para ser júnior, pleno ou sênior.

Lembrando que cada empresa define o que acredita ser o melhor para cada nível. Eu gostei e me identifico muito com o conceito deles. Por isso estou publicando aqui.

Programador(a) júnior

  • O trabalho é cuidadosamente revisado com substanciais idas e vindas.
  • Tem domínio dos recursos básicos da linguagem, mas pode ainda não ter familiaridade com algumas estruturas avançadas.
  • Tem problemas ocasionais para seguir padrões e compreender abordagens dentro das bases de código existentes.
  • Trabalha principalmente com escopos mais bem definidos e em problemas de rotina.
  • Costuma ter menos de 2 anos de experiência como programador profissional no domínio específico.

Programador(a) Pleno(a)

  • O trabalho é revisado com a necessidade ocasional de mudanças na implementação.
  • Compreende os padrões e abordagens estabelecidos nas bases de código existentes com facilidade.
  • Trabalha principalmente em funcionalidades ou problemas individuais com escopo claro e bem definido.
  • Costuma ter pelo menos 2-5 anos de experiência como programador profissional no domínio específico.

Programador(a) Sênior

  • O trabalho não precisa necessariamente ser revisado, mas a abordagem geral pode ser.
  • Totalmente capaz de desenvolver sozinho funcionalidades importantes do conceito inicial até a entrega (ao lado de um designer).
  • Pode fornecer feedbacks importantes sobre o trabalho de programadores plenos e juniores.
  • Especialização profunda dentro de pelo menos um ambiente de programação.
  • Proficiência básica em pelo menos um ambiente de programação adicional.
  • Costuma ter pelo menos 5-8 anos de experiência como programador profissional no domínio específico.

Eles ainda possuem um nível de Lead Programmer e um de Principal Programmer, que poderiam ser definidos como níveis de líder técnico, gerente de equipe e diretor(a) de departamento.

O que me chamou muito a atenção nesta lista é que o conhecimento técnico de uma linguagem faz diferença em cada nível, mas não é a única coisa a ser levada em conta. Lembre-se disso!

O que achou da lista? Deixe sua opinião nos comentários.

Nos vemos na próxima.

Categorias
Carreira

Carreira Programador – Quanto ganha um programador?

Essa é para quem está começando ou quer começar na área de desenvolvimento de software

Existe uma visão distorcida da realidade desse profissional de tecnologia da informação que escreve códigos e desenvolve sistemas.

Um Analista de Sistemas em início de carreira, por exemplo, tem salário médio de R$ 4,2 mil. Em três anos, sua média salarial pode chegar a R$ 7 mil. Com mais de dez anos de experiência, sua remuneração alcança R$ 17 mil. Isso sem falar nas possibilidades de especialização: um profissional de TI no Brasil com mestrado recebe o piso salarial médio de R$ 9,2 mil e um Diretor Técnico e de Operações do mercado de tecnologia pode ganhar até R$ 50 mil. Fonte: Terra em 22/12/2016

Início de carreira com mais de quatro mil reais e em apenas três anos já estar ganhando sete mil… essa não é a realidade da maioria dos profissionais de TI que conheço. Eu tenho mais de 10 anos de carreira e ainda não cheguei perto dos 17 mil… o que é uma pena!

Quem sabe essa matéria levou em conta apenas aqueles que trabalham em regime PJ e não os que tem carteira assinada… de qualquer forma, não me parece algo tão realista.

Pessoalmente me preocupa que essa visão seja disseminada e possa levar pessoas a buscar essa área apenas pela possibilidade de ganhar muito dinheiro, algo que não acontece com tanta frequência.

Vamos começar pelo começo: Não existe apenas “o programador”, assim como não há apenas “o médico” e “o advogado”.

Existem diversas áreas de programação como desenvolvimento mobile, backend, frontend, o faz-tudo (chamado de full stack por quem quer ser chique), etc.

Além das áreas, ainda existem as tecnologias específicas. As linguagens de programação, os sistemas operacionais, os frameworks, as metodologias de desenvolvimento… tudo isso conta para saber quanto vai faturar um desenvolvedor.

Outro ponto importante é em qual cidade você vai trabalhar. Existe uma probabilidade maior para o programador ganhar mais se morar em alguns polos de tecnologia do país, principalmente em São Paulo, graças à lei da oferta/demanda. Muitas empresas precisando de profissionais e nem tantos disponíveis. Isso não quer dizer que não existam programadores ganhando pouco nessas cidades…

Para finalizar, mas não se limitando a isso, o tipo de empresa em que o programador trabalha também influencia, e muito, no seu salário. Startups, fábricas de software, pequenas empresas de desenvolvimento, agências, grandes bancos, etc.

Que tal alguns “estudos de caso” para exemplificar. Começando pelo mais comum…

Um programador júnior trabalhando em uma startup, provavelmente um full-stack, ganha um salário mediano ou até abaixo do mercado.

E um de quem pode estar faturando legal.

Uma empresa em que o produto é um aplicativo, por exemplo, que tem uma VC investindo milhões. Sendo um sênior em uma equipe de desenvolvimento iOS… Sim, esse daí deve estar ganhando muito bem, para os padrões brasileiros.

Esses são alguns pontos que gosto de levantar toda vez que alguém me pergunta quanto ganha um desenvolvedor de software.

Obviamente estes são pontos de vista que obtive durante anos como andarilho nesse mercado e podem diferir de outros profissionais tão ou mais experientes.

Qual o seu ponto de vista? Deixe seu comentário.

Publicado originalmente no Medium.

Categorias
Crônicas Tecnologia

Ser um Programador Ninja…

…ou Programador Rockstar ou Mago da Programação…


Este texto foi originalmente publicado no Medium. Leia a versão original clicando aqui e recomende se você gostar.


Alguns bons anos atrás, costumava ser cool ver uma vaga de emprego com a expressão “programador ninja” ou algo do gênero. Mostrava que a empresa era maneira, joinha e que tinha aquele ambiente de trabalho diferentão.

“Buscamos um programador ninja”

Hoje, a coisa é um pouco diferente. Quando vejo uma vaga que busca um programador ninja ou um mago da programação, eu já desconfio.

O problema não é a expressão em si, que hoje em dia é brega e não pinta mais a empresa como “diferentona”. O problema é que ela costuma vir com uma lista absurda de exigências…

O cidadão tem que comprovar anos de experiência em diversas linguagens de programação, tem que gostar de programar em seu horário livre (?!) e, às vezes, é um diferencial, se não obrigação, que o camarada tenha projetos paralelos.

Ou seja, o cara não tem que ser um programador… Ele tem que programar de tudo e o tempo todo. Se tiver vida pessoal, não serve para mago da programação.

O ninja-mago-rockstar da programação

Por algum motivo essas empresas acreditam que é preciso ser apaixonado pela programação para ser um bom profissional. E para demonstrar isso tem que ter aqueles projetos paralelos e, quem sabe, uns commits no seu Github nas madrugadas de sábado.

O que não percebem é que quem programa por prazer não necessariamente vai gostar de trabalhar no seu projeto de gestor administrativo ou de vendas. Hobbies que viram trabalho nem sempre são tão prazerosos. E isso não é tudo…


Nesta semana eu li um texto aqui no Medium chamado Programming Doesn’t Require Talent or Even Passion (Programar Não Exige Talento ou Mesmo Paixão). Eu recomendo a leitura para qualquer um que trabalhe na área.

Nele o autor fala que nunca antes uma habilidade foi tão mitificada como a programação.

“Você não precisa apenas ter talento, você também precisa ser apaixonado para se qualificar como um bom programador.”

É exatamente o que pedem nessas vagas de programador Rockstar dos dias de hoje.


Exemplo de uma vaga postada na lista Python BrasilNo texto citado, o autor ainda traz uma série de grandes nomes da área, como os criadores dos frameworks Rails e Django e da linguagem PHP, por exemplo, que demonstram claramente não serem grandes amantes da programação e muito menos gênios da magia do desenvolvimento de software.

“Na verdade eu odeio programar, mas eu amo resolver problemas.” Tradução da citação de Rasmus Lerdorf, criador do PHP.

Eu trabalho nessa área há cerca de treze anos e não tenho receio em dizer que os melhores profissionais que encontrei não eram grandes magos dos códigos. O que realmente importa nessa área é a entrega. É conseguir resolver os problemas apresentados de forma objetiva e simples e, quase sempre, em um curtíssimo espaço de tempo.

Um bom profissional da programação não precisa ser um gênio, um monstro, um ninja, um hacker… ele precisa saber resolver problemas e ter a capacidade e humildade de aprender o que precisar para atingir esse objetivo.

Além disso, esse mito atrapalha todo mundo que está envolvido ou quer se envolver na área.

“O mito do ‘programador gênio’ é extremamente perigoso. Por um lado, ele deixa o limiar de entrada muito alto, assustando um monte de aspirantes a programador. Por outro lado, também assombra os que já são programadores, porque isso significa que se você não é um mago na programação, você é ruim… …Programação é só um monte de habilidades que podem ser aprendidas e não exigem muito talento, e não é vergonha nenhuma ser um programador mediano.” Tradução livre de parte da citação de Jacob Kaplan-Moss, criador do Django.

Eu consegui aprender a programar, e nem sequer gostava disso…

“Depois de muito tempo percebi que eu tinha ficado melhor em programar e continuava sempre ocupando vagas em empresas nessa área, entretanto, sempre querendo sair para ‘trabalhar com o que gosto’.”

Esse é um trecho de um texto que escrevi em 2014 falando sobre a minha relação conturbada com a programação. Eu passei anos procurando trabalhar em outra área, porque realmente não gostava de programar.

O que mudou isso em mim foi conhecer o Python. Passei a curtir a simplicidade e objetividade de escrever códigos com essa linguagem. Hoje eu gosto do que faço. De vez em quando eu até programo por diversão no meu horário livre.

Eu não consigo me enxergar como um bom programador, mas sei que consigo atender as expectativas de quem me contrata. Resolvo os problemas e faço as minhas entregas. E isso me deixa orgulhoso do meu trabalho.

Não somos ninjas, gênios ou magos, somos profissionais da área de desenvolvimento de software. É isso que temos que ser das 9h as 18h, ou em qualquer que seja seu horário de trabalho, o que fazemos fora disso diz respeito somente a nós mesmos.

Quer ter projetos paralelos? Ama programar? Ótimo.

Mas se você gosta de nadar, andar de bicicleta, jogar futebol, passear com seu cachorro, ficar com sua família ou dormir por horas e horas no seu tempo livre, você continua sendo um programador.

Não é isso que vai definir sua qualidade como profissional.

Pode ser também…