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 – Quer trabalhar em uma startup?

Hoje em dia é comum ver pessoas interessadas em trabalhar nas empresas de tecnologia, principalmente nas startups dessa área.

Existe um certo glamour em trabalhar em uma empresa que tem como proposta mudar o jeito que as coisas são, a tal da “empresa diruptiva”. O conceito de inovação costuma partir de dentro da própria, a partir de sua cultura. Isso atrai profissionais com essas mesmas características.

Uma das coisas que chama a atenção nessas empresas é a liberdade de trabalhar em um ambiente menos engessado e mais focado em resultados do quem em como está o preenchimento do sua folha de ponto. Isso sem falar na menor burocracia interna e nos possíveis pequenos agrados, como doces e bebidas a vontade, além de jogos e outras coisas divertidas.

Ao mesmo tempo que tudo isso é muito atrativo existe também o outro lado da coisa. Nem todas as empresas são tão bem “estruturadas” quanto Facebooks e Googles por aí. Estou falando literalmente de grana. Bufunfa mesmo. A maioria não vai ter como pagar equipes enormes e especializadas.

Por isso o profissional que busca uma carreira em tecnologia, principalmente nesse tipo de empresa, precisa ser completo. Precisa ser um profissional “T” ou T-shaped skills.

Essa expressão se refere ao profissional que tem conhecimento em diversas áreas de maneira geral e em uma de maneira aprofundada. Por isso a letra T.

Eu não trago essa expressão da maneira convencional como recrutadores costumam falar, onde o profissional tem um monte de skills fora da área de tecnologia para ser um T. A trago pensando mais no conceito de desenvolvedor Full Stack, aquele que consegue lidar com diversas partes do desenvolvimento de software e não é apenas especializado em uma parte dele.

As equipes das startups costumam ser extremamente enxutas e por isso é preciso que os profissionais sejam muito flexíveis e saibam lidar com diversas partes do processo de desenvolvimento de software.

Conhecer uma linguagem de programação é algo que nem precisa ser dito, certo? Mas vou abordar algumas dicas sobre o tipo de conhecimento que poderia lhe ajudar a conseguir iniciar uma carreira nesse mercado.

1. Desenvolvimento web

A popularização da web deixou muito mais fácil para empreendedores tornarem suas ideias realidade e criarem startups. Conhecer sobre desenvolvimento para web pode facilitar muito a vida profissional de um programador.

Entender como funciona o frontend e o backend de uma aplicação web é indiscutivelmente uma das maiores vantagens para que um profissional possa trabalhar em boa parte das startups que existem por aí.

Conheça bem HTML e CSS. Brinque com o Bootstrap, que facilita muito o desenvolvimento da estrutura de um webapp. Mas não se esqueça que quase nada funciona na internet sem JavaScript.

Conheça bem JavaScript e só depois vá atrás de conhecer alguns frameworks como Angular e React.

2. Controle de versão

Os sistemas de controle de versão servem para gerenciar as versões do código que está sendo editado por um desenvolvedor ou uma equipe de desenvolvedores.

No caso da equipe é que ele se torna ainda mais imprescindível, pois cada membro da equipe pode trabalhar no mesmo código que outro e bagunçar a coisa toda. Eu apago uma linha aqui e você a modifica ao mesmo tempo… loucura!

Tenha familiaridade com o GIT e isso já lhe dará uma grande vantagem sobre outros candidatos.

3. Linha de comando

Ah! O famoso terminal… a tela preta com letras brancas (na verdade as cores são totalmente configuráveis).

Sem entender como funcionam os comandos Unix (Linux e MacOS) fica muito difícil trabalhar com a maioria dos frameworks e linguagens de script que temos no mercado.

Isso falando apenas de maneira geral, existem muitas tarefas que são muito mais fáceis sendo feitas pelo terminal, inclusive o uso do GIT!

Ter um conhecimento básico dos comandos do terminal não é difícil, basta praticar um pouco e eles passam a ser naturais. A medida que você precisar conhecer mais comandos para executar diferentes tarefas o seu repertório aumenta sozinho.

Se você aprender a escrever um ou outro shell script então… aí a coisa começa a ficar boa!

4. Já ter feito alguma coisa…

Ok, isso parece estranho. Afinal estou falando em começo de carreira por aqui.

O que quero dizer com “já ter feito alguma coisa” é ter participado de algum projeto ou ter um projeto pessoal concluído. Talvez em um freelance ou algo assim.

A ideia dessa “dica” é que você já tenha passado pela experiência de completar um projeto. Que tenha feito mais do que apenas estudar sobre o assunto. Que você tenha feito algo do começo ao “fim”. Algo que tenha lhe dado experiência em iniciar e terminar alguma coisa.

Conta ter feito um sistema para lembrar da lista do supermercado ou seu próprio blog, desde que você tenha conseguido começar, desenvolver e “entregar” (deploy). Isso faz muita diferença em um profissional.

Essa declaração pode parecer confusa, mas eu já trabalhei em muitos lugares e conheci muita gente dessa área. Em vários profissionais em início de carreira eu senti falta dessa saída da zona de conforto e da tentativa de fazer algo de verdade além dos exercícios de cursos ou tutoriais encontrados na internet.

E tem muito mais…

Eu poderia ficar escrevendo muito mais sobre cada um dos itens acima e ainda mais sobre outras coisas que ajudariam um profissional em início de carreira a se preparar para o trabalho em startups. Mas a ideia aqui é dar um rumo. Não adianta tentar aprender tudo de uma vez só!

Outro ponto importante é que ninguém nunca está preparado o suficiente. O que vai fazer diferença no futuro é a sua própria experiência. Então não tenha medo de concorrer à vagas e entrar com tudo no mercado.

Deixe um comentário se você acha que faltou alguma coisa ou se tem dúvidas sobre o assunto.

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.