O livro "The Complete Software Developer's Career Guide" responde perguntas que profissionais iniciantes e experientes do desenvolvimento de software têm ao avançar em suas carreiras. Os tópicos abordados variam desde adquirir habilidades técnicas, encontrar um emprego e lidar com gerentes, a realizar projetos paralelos ou começar a própria empresa.
Uma parte do Complete Software Developer's Career Guide está disponível no próprio portal do InfoQ.
O InfoQ entrevistou John Sonmez sobre as habilidades técnicas que profissionais do desenvolvimento de software precisam dominar e como desenvolvê-las, se essas pessoas devem iniciar suas próprias empresas ou trabalhar em projetos paralelos, como o DevOps está impactando o papel de desenvolvedor, o quê profissionais dessa área podem fazer para trabalhar efetivamente com testadores e vice versa, e quais são os sins e nãos para o avanço em suas carreiras.
InfoQ: Por que você escreveu este livro?
John Sonmez: A indústria do desenvolvimento de software é confusa - especialmente para quem está iniciando sua carreira. Não é muito claro como começar na área de desenvolvimento de software. Devo ira pra faculdade, pra um bootcamp, aprender por conta própria, e o que estudar, como estudar?
E depois de "terminar" os estudos, como encontrar um emprego? E quando você encontrar um emprego, como conseguir um aumento, como ter sucesso, o que mais preciso saber?
Pessoas familiarizadas com meu blog e canal do YouTube constamentemente me fazem essas perguntas, e eu percebi que não tinha pra onde direcioná-las.
Eu escrevi o "Complete Software Developer's Career Guide" porque não conseguia encontrar uma fonte compreensiva ou responder todas aquelas perguntas e ajudar profissionais a terem sucesso em suas carreiras. Eu queria responder sobre cada questão que pessoas iniciantes e experientes tinham sobre suas carreiras em desenvolvimento de software e queria fazer isso em um único lugar.
InfoQ: Pra quem esse livro foi escrito?
Sonmez: Sinceramente, esse livro foi escrito para pessoas que atuem no desenvolvimento de software em qualquer nível - e posso imaginar que uma boa parcela de pessoas leigas nessa área podem se beneficiar dos conselhos gerais sobre carreira contidos no livro.
Escrevi o livro de forma que cada capítulo é pequeno, conciso e se sustenta por si. Dessa forma, o livro todo pode ser acessível não importando a fase da sua carreira. Você pode ler o livro todo ou apenas os capítulos relevantes ao desafio que está enfrentando no momento.
A ideia é que o "The Complete Software Developer's Career Guide" seja um livro que você use para iniciar sua atuação com desenvolvimento de software e continue a usá-lo em sua carreira. Eu quis criar um livro que persistisse e tivesse valor duradouro.
InfoQ: Quais são as habilidades técnicas que profissionais do mercado de desenvolvimento de software devem dominar?
Sonmez: O problema é que existem habilidades demais para listar.
Quero dizer, se você quer atuar com web, pense em todas as coisas que precisa saber. Primeiro você precisa saber alguma linguagem de programação, depois você precisa saber HTML e CSS, só então você consegue fazer uma interface de usuário de uma aplicação web.
Você precisa saber Javascript pra tornar o front-end interativo - possivelmente um framework Javascript. Você precisa entender a web em si e como os dados fluem pela internet: protocolo HTTP, ausência de estado, servidores web, clientes, navegadores. E essa é apenas a ponta do iceberg.
Você vai querer trabalhar em uma equipe com outras pessoas, então vai precisar entender algum tipo de sistema para controle de código fonte. Como realizar check in e check out, merge, branch, etc. Você precisa saber como gerar versões (build) e sobre integração contínua.
E espero que você esteja testando seu código, então você definitivamente precisa saber sobre testar e possivelmente sobre teste unitário. Ah, e não podemos esquecer sobre o ciclo de desenvolvimento de software e do Ágil ou do Scrum. E falando nisso, já suponho que você saiba SSQL e como os bancos de dados funcionam, uma vez que quase sempre você precisa persistir algum dado…
Sim, é muita coisa. Pode se tornar assustador. Mais uma vez, outra razão pela qual escrevi o livro; eu quis catalogar tudo isso em um único lugar, para que qualquer desenvolvedor pudesse olhar o que precisa saber e ter pelo menos uma pista de todos esses conceitos sem ficar totalmente confuso ou assustado.
InfoQ: Como pessoas que atuam com desenvolvimento de software podem desenvolver essas habilidades?
Sonmez: Felizmente, hoje em dia aprender e desenvolver as habilidades não é a parte difícil. Não estou dizendo que não é um desafio desenvolver algumas dessas habilidades, mas a parte difícil hoje é saber o que aprender, mais do que aprender em si.
Hoje existem toneladas de recursos para aprender sobre qualquer habilidade técnica que possa imaginar - de fato, um grande número desses recursos são totalmente de graça. A parte difícil é saber quais habilidades você precisa aprender e sabendo dessas habilidades, onde olhar para desenvolvê-las.
Acredito que as pessoas conseguem realmente encontrar seu caminho quando você dá a elas um mapa e uma bússola e mostra a elas como usar ambos.
InfoQ: Por que profissionais da área do desenvolvimento de software deveriam começar suas próprias empresas?
Sonmez: Honestamente, a maioria não deveria. Empreender não é pra todo mundo.
Eu adoraria que mais pessoas dessa área se tornassem empreendedoras e começassem suas próprias empresas - e adoraria ajudá-las a fazer isso - mas a dura realidade é que para a maioria delas, a liberdade é um fardo.
É muito mais fácil quando te dizem o que fazer do que visualizar o que você precisa fazer e carregar todo o fardo da responsabilidade em seus ombros.
Dito isso, os benefícios de conquistar sucesso por si mesmo são enormes. E não estou falando apenas de riscos contra recompensas. Há um benefício intangível e um sentimento de completude em saber que você construiu seu próprio caminho na vida e que você visualizou as coisas por si - criou algo de valor o suficiente para que as pessoas queiram pagar pelo que você criou.
InfoQ: E sobre fazer projetos paralelos?
John Sonmez: Fazer projetos paralelos posso recomendar do fundo do meu coração para TODAS as pessoas que desenvolvem software. Projetos paralelos têm valor por várias diferentes razões.
Uma das razões mais fortes é que trabalhar em um projeto paralelo é uma boa forma de ganhar experiência de valor e usar novas tecnologias que você não está exposto no trabalho. É uma grande forma de aumentar sua experiência bem além daquela que você poderia atingir na mesma quantidade de tempo no trabalho regular.
Tem mais, um projeto paralelo geralmente te expõe as elementos de desenvolvimento de software que você não está acostumado a lidar. É uma grande experiência você mesmo ter de fazer o design, criar e entregar algo. Isso também te ensina disciplina e perseverança. E os benefícios para a carreira são imensos.
Muitos projetos paralelos se tornam trabalhos de tempo integral ou acabam criando uma impressionante linha no seu currículo, que diz quão sério você é sobre seu trabalho, bem como quão apaixonado você é dedicando horas em sua própria criação. E ainda há a possibilidade de fazer algum dinheiro de tudo isso - que pode ser um ponto de mudança na sua vida, ou no mínimo melhorar sua vida.
InfoQ: Como o DevOps está impactando o papel de quem desenvolve software?
John Sonmez: DevOps está ofuscando a linha entre desenvolvimento de software e infraestrutura ou equipes de TI. No passado, quem desenvolvia o software escrevia código e essa era sua principal responsabilidade. Essas pessoas não precisavam realmente saber como o código seria publicado (deployed), ou qualquer coisa sobre os servidores onde seria publicado.
Mas como as práticas como o Ágil e a integração contínua se tornaram mais populares, esse tipo de trabalho segmentado teve de mudar, então o DevOps nasceu. DevOps liga o espaço entre escrever código e publicá-lo, e suportar código publicado rodando (deployed).
Isso significa que quem somente escreve código precisa não somente entender como escrever código, mas também como empacotá-lo, publicá-lo e manter o código quando publicado no mundo real. Nem todas essas habilidades são novas para quem desenvolve software, muitas pessoas estão familiarizadas em preparar e configurar servidores, e publicar código, mas podem haver algumas dificuldades às pessoas mais puristas que querem somente escrever código.
No mínimo, profissionais do desenvolvimento de software nos dias de hoje, devem investir algum tempo aprendendo sobre o sistema operacional e os servidores em que seus códigos estarão rodando, como o sistema construtor (builder) e a integração contínua trabalham e como analisar e resolver problemas em ambiente de produção.
InfoQ: O que pessoas que desenvolvem software podem fazer para trabalhar efetivamente com times de testes e vice versa?
John Sonmez: A coisa mais importante é entender o processo de testes e suas intenções, e focar na comunicação. O Ágil tem ajudado nisso, enxergando a equipe inteira como uma equipe com um propósito único, e responsável com o fim de criar e entregar software. Assim, as pessoas que estão codificando precisam abraçar a mentalidade e perceber que todos estão nisso juntos.
Pode parecer que os Times de testes estejam apenas tentando quebrar seu código - e alguns deles estão - mas o quadro geral é que está todo mundo trabalhando junto para criar um produto de qualidade.
As maiores falhas que presenciei trabalhando com times de testes e vice-versa, foi assumindo e agindo de maneira passivo-agressiva, mais do que me comunicando direta e abertamente. É muito mais eficiente trabalhar em conjunto para determinar porque algo está quebrado e consertá-lo rapidamente, do que registrar um relatório de bug, enviar o relatório a quem codifica e que não pode reproduzir o problema, e quem eventualmente devolve ao controle de qualidade (QA - Quality Assurance), e assim por diante até que o bug seja finalmente resolvido e retestado.
Algumas vezes, cinco minutos de comunicação pode economizar horas ou dias de trabalho e eliminar hostilidades injustificadas. Estamos na mesma equipe, temos todos a mesma missão. Não há rivalidade.
InfoQ: Quais são os sins e nãos para as pessoas que desenvolvem software e que querem avançar em suas carreiras?
John Sonmez: No fim das contas, avançar em sua carreira se resume a dois pontos principais:
- Ser tão útil quanto possível.
- Estar exposto, para as pessoas saberem quão útil você é.
Infelizmente, ambos são mais fáceis de dizer do que fazer. Ser tão útil quanto possível significa se tornar uma pessoa efetiva, aprendendo como escrever bom código e como resolver problemas eficientemente - essencialmente desenvolvendo suas habilidades técnicas - mas isso significa muito mais que isso.
A pessoa mais útil é aquela que faz as outras pessoas com as quais se relaciona e o restante da equipe mais úteis.
Geralmente isso envolve tomar responsabilidade e propriedade. Isso significa desempenhar um papel de liderança e aprender como se comunicar efetivamente com os outros, assim como persuadi-los a unirem seus esforços.
No fim, quem codifica - ou qualquer outra pessoa - e fornece o maior valor para a maioria das pessoas irá, por sua vez, receber o maior valor. ZigZiglar disse seu melhor quando falou "Você pode ter tudo o que quer na vida se você apenas ajudar as pessoas a ter o que elas querem.".
Agora, apenas ter valor e fornecer valor por si não é suficiente, pois você pode ser a gema mais valiosa do mundo, mas se você for enterrado sob pedras e terra, nunca brilhará. "Brilhar" é sobre aprender a promover você mesmo e construir sua marca pessoal e reputação. Você precisa estar em evidência e as pessoas mais bem sucedidas no desenvolvimento de software têm certeza que o são.
Isso não significa que você tem de ser arrogante e excessivamente se gabar por seus feitos ou habilidades para todo mundo ouvir. Porém, isso significa que você deve ativamente gerenciar sua carreira e marca pessoal, e trabalhar em construir um nome pra você e uma reputação. Você precisa de exposição, seja no local de trabalho ou no mundo todo - preferencialmente em ambos.
Algumas das melhores maneiras de fazer isso são as formas que você fornece valor aos outros. Escrever blog posts, escrever livros, fazer vídeo de tutoriais, mentorear pessoas, organizar encontros (meet ups), criar podcasts. Há uma tonelada de maneiras que você pode criar exposição, se pensar sobre como pode pegar o que tem aprendido e o que sabe e entregar valor às pessoas compartilhando tudo isso. Quando você combina esse dois elementos, criando valor e ganhando exposição, o sucesso com certeza virá em seguida.
Acontece que muitas pessoas da área de desenvolvimento de software não têm a paciência pra isso e não se mantém na estrada por muito tempo, ou elas subestimam demais o poder - essencialmente - de se auto-promoverem.
Sobre o autor do livro
John Sonmez é um desenvolvedor de software e autor de dois best-sellers internacionais, Soft Skills: The Software Developer's Life Manual e The Complete Software Developer's Career Guide. Em sua carreira, Sonmez descobriu cedo que apenas conhecimento técnico não era suficiente: desenvolvedores precisam de "soft skills" como comunicação e liderança para terem sucesso. Hoje ele ajuda mais de 1,4 milhão de programadores todos os anos a desenvolver sua mistura única de habilidades que o tornaram um dos mais bem pagos e procurados desenvolvedores e consultores.