Desenvolvimento

Como funciona uma empresa de desenvolvimento de software?

Olá Web Developer! Muitas pessoas que estão querendo entrar em uma área não sabem como será seu dia a dia. Então é comum que alguém que queira trabalhar com programação se pergunte como é trabalhar em uma empresa de desenvolvimento de software.

Não há um modelo a se seguir, cada empresa tem seu jeito de trabalhar e cargos diferentes. Há lugares em que uma mesma pessoa executa tarefas que em outra empresa seria feita por três ou até mais colaboradores. Aqui vou descrever um modelo mais “geral” de acordo com a minha experiência pelas empresas de diferentes tamanhos onde já trabalhei.

Gerente de Projetos

O gerente de projetos é o profissional que se responsabiliza pelo andamento do projeto, garantindo que os objetivos serão alcançados dentro do prazo definido.

Ele deve entender o produto, conversar com o cliente para estabelecer metas e prazos, conversar com a equipe para deixar os objetivos bem definidos, prever dificuldades para agir previamente, etc.

Já vi equipes com programadores iniciantes terem êxito e equipes com programadores incríveis terem problemas por causa das habilidades de gerentes de projetos. Por isso que é importante esse profissional entender o que está sendo feito, ter uma boa comunicação, conhecer a capacidade de produção da equipe para não prometer ao cliente mais do que pode ser cumprido e também saber quando dizer não.

Não confunda esse profissional com Scrum Master. O scrum master pode ser outra pessoa, até mesmo um programador da equipe. Veja mais neste post sobre Scrum.

Gerenciamento de projetos - Fundamentos
Curso de Gerenciamento de projetos - Fundamentos
CONHEÇA O CURSO

Arquiteto da Informação

Uma das principais tarefas do arquiteto da informação é desenhar como serão as telas do software a serem criadas. Ele que cuida como será a estruturação do conteúdo, visando facilitar a usabilidade e acessibilidade do usuário, garantindo uma melhor experiência.

Um campo de texto deverá salvar automaticamente ou é melhor ter um botão “Salvar”? Esse botão deve ficar em que lugar da tela? É preciso ter um ícone para essa ação? Essas são algumas das coisas que um arquiteto da informação deve pensar.

Com as necessidades do sistema em mente, este profissional irá desenhar o chamado Wireframe, que funciona como se fosse a planta de uma casa.

Wireframes são feitos sem cor, da forma mais simples. Assim as funcionalidades serão o foco do trabalho.

Há ferramentas que possibilitam que desenhemos wireframes interativos. Isso significa que podemos clicar em um botão e ele nos envia para uma outra tela. Assim teremos algo bem parecido com um protótipo, o que facilita apresentar como o sistema deve parecer e funcionar tanto para clientes quanto para a equipe de desenvolvimento.

Em algumas empresas menores esse papel é feito pelo gerente de projeto, designer ou pelos próprios programadores.

Designer

O designer, ao trabalhar no desenvolvimento de sistemas, atuará junto ao arquiteto da informação. Ele receberá o wireframe e irá definir como os componentes da interface deverão ser.

Normalmente é ele quem define uma paleta de cores a serem usadas, a tipografia, espaçamentos, ícones, etc.

Caso a equipe possua pessoal de marketing, o designer também poderá ajudar na criação do layout do site para a publicidade e outros elementos para serem publicados em redes sociais.

Em empresas menores pode ocorrer dessas funções ficarem a cargo dos próprios programadores.

Programador

Os programadores são as pessoas que vão escrever o código dos softwares a serem criados, sejam eles sistemas web, sistemas desktop, aplicativos mobile, etc. Normalmente são divididos em Front-end e Back-end.

Para mais detalhes, veja o nosso post sobre O que é front-end e back-end?

Desenvolvedor Front-end

O desenvolvedor front-end é quem vai dar vida às telas que foram criadas pelo arquiteto da informação e designer. Trabalha com HTML, CSS e JavaScript. Por ter conhecimento com essas tecnologias, pode ser aproveitado para criar sites.

Como o JavaScript está cada vez mais presente em diversas áreas, esse desenvolvedor também pode ser escalado para trabalhar no back-end, criar softwares desktop, aplicativos mobile, etc. Para saber mais, veja nosso post sobre O que se pode fazer com JavaScript hoje em dia?

JavaScript Intermediário
Curso de JavaScript Intermediário
CONHEÇA O CURSO

Desenvolvedor Back-end

O desenvolvedor back-end é quem vai cuidar do código que ficará no servidor. Trabalham com linguagens como C#, Java, PHP, Python, Ruby, etc. Ele vai cuidar da parte da aplicação que lida com as regras de negócio.

Ele é quem fará as conexões com o banco de dados para recuperar informações que o desenvolvedor front-end possa precisar para exibir ao usuário ou salvar as informações que o front-end envia.

Além de front-end e back-end, também há o FullStack, que faz os dois ao mesmo tempo. Para saber mais, veja nosso post sobre Devo começar como Front-End, Back-End ou Full Stack?

Analista de Testes

Também conhecido pela sigla “Q.A.” (Quality Assurance), o analista de testes é responsável por testar o software, verificando se todos os requisitos estão sendo cumpridos.

Mesmo que os programadores precisem testar seu código, é visível a diferença que um profissional dedicado a testes faz em um projeto.

Ele segue/cria métodos de testar um software com mais eficiência, possibilitando encontrar mais problemas com uma menor quantidade de testes. Quando problemas forem encontrados, deve identificar a causa do problema e indicar como deve ser o comportamento para que os programadores corrijam. Portanto, deve entender tão bem das regras de negócio do sistema quanto o gerente de projetos.

Não é obrigatório mas é importante saber um pouco sobre programação, pois isso permite que esse profissional crie testes automatizados.

Administrador de Banco de Dados

Também conhecido como DBA (Database Administrator), esse profissional cuida do banco de dados da aplicação.

Ele fica responsável por cuidar da estrutura do banco, realizar backups, atualizar, garantir a segurança e integridade dos dados, estabilidade ao acesso às informações, melhorar o desempenho do acesso aos dados, etc.

MySQL - Desenvolvedor
Curso de MySQL - Desenvolvedor
CONHEÇA O CURSO

Outros cargos

Os cargos citados acima são os mais comuns de se encontrar nas empresas. Dependendo do tamanho da empresa pode ser que haja alguns cargos a mais ou a menos, e também pode ser que em cada empresa um mesmo cargo seja chamado por nomes levemente diferentes.

Podemos ter também o gerente financeiro, analista de marketing, RH, engenheiro de software, arquiteto de redes, etc.

Na área de T.I. está crescendo muito a demanda por profissionais em áreas que lidam com dados, como Analista de Segurança da Informação, Cientista de dados, Engenheiro de Inteligência Artificial, etc.

Se quer entrar nesse mercado de trabalho ou alavancar a sua carreira, não deixe de conferir nossos cursos e também nossas formações

É possível usar Kotlin no back-end?

Nos últimos anos, várias linguagens de programação, como Python e as linguagens funcionais em especial, começaram a ser mais e mais adotadas pelo mercado em geral. Uma destas linguagens que começou a se tornar mais popular, apesar de uma história peculiar, foi o Kotlin, a linguagem de programação da JetBrains.

Muitos conhecem o Kotlin como a linguagem padrão para desenvolvimento na plataforma Android, já que a Google trocou o Java pelo Kotlin em 2017. Porém, poucas pessoas sabem que o Kotlin pode também ser utilizado no desenvolvimento back-end.

Antes de tudo: o que vem a ser o Kotlin?

O Kotlin é uma linguagem de programação completamente open source, multiplataforma e multiparadigma com forte influência de C#, Scala, Groovy e JavaScript. Softwares escritos em Kotlin podem ser compilados para três diferentes plataformas: para a JVM, rodando sob a infraestrutura da plataforma Java; para JavaScript, sendo possível compilar código Kotlin e gerar código inteiramente JavaScript; e para código nativo, através do LVVM. O LVVM é basicamente uma biblioteca modular de compiladores e ferramentas escritos em C++ que permitem a criação de compiladores. Embora o Kotlin ofereça todas essas possibilidades, seu uso mais comum ocorre no processo de compilação e execução na JVM, utilizando toda a infraestrutura da plataforma Java.

Kotlin com Android - Primeiros Passos
Curso de Kotlin com Android - Primeiros Passos
CONHEÇA O CURSO

O Kotlin foi criado em 2010 por Andrey Breslav, engenheiro de software da JetBrains. A JetBrains é a empresa responsável por excelentes ferramentas de desenvolvimento, como o IntelliJ IDEA, PhpStorm, WebStorm e Resharper. Andrey Breslav deu esse nome à linguagem por se tratar do nome de uma pequena ilha russa. A ideia foi seguir a mesma filosofia do nome do Java, já que Java também é o nome de uma pequena ilha na Indonésia. Embora o desenvolvimento da linguagem tenha iniciado em 2010, a primeira versão estável oficial foi lançada somente em 2016.

Segundo a JetBrains, o Kotlin foi criado para ser uma linguagem completamente voltada ao mercado e completamente interoperável com o Java (já que ambos são compilados para bytecode, código intermediário este que é executado pela JVM). Porém, a ideia é que o Kotlin solucionasse alguns pontos de design que eram considerados problemáticos no Java. Por isso, o Kotlin adota recursos de linguagem muito interessantes, como uma sintaxe sensivelmente menos ruidosa e verborrágica, a incorporação natural de conceitos de linguagens funcionais (principalmente com relação à aspectos de imutabilidade) e a proteção natural ao “erro de um bilhão de dólares”: as referências nulas, ou o famoso NullPointerException. O Kotlin possui uma maneira peculiar que faz com que as chances de ponteiros nulos sejam drasticamente reduzidas.

A sintaxe do Kotlin é de fato muito mais concisa, direta e expressiva. Enquanto um tradicional “hello world” em Java ficaria da seguinte maneira…

package br.com.treinaweb;

class HelloWorld 
{ 
    public static void main(String args[]) 
    { 
        System.out.println("Hello, World"); 
    } 
}

O mesmo “hello world” em Kotlin poderia ser escrito da seguinte maneira:

fun main() {
    println("Hello, World")
}

Atualmente, o Kotlin é patrocinado pela Kotlin Foundation, uma organização sem fins lucrativos formada pela JetBrains e pela Google.

O Kotlin pode ser usado no backend?

Sim, o Kotlin pode ser utilizado para desenvolvimento backend, além do desenvolvimento para Android. A interoperabilidade com o Java permite que você utilize os tradicionais e poderosos frameworks Java, como Spring e Hibernate, em conjunto com o Kotlin de maneira praticamente transparente. Isso permite obter toda a extensibilidade e maturidade característica dos frameworks e bibliotecas Java através de uma linguagem muito menos verbosa, com uma API mais agradável e com um design mais moderno.

De maneira geral, utilizar bibliotecas Java em conjunto com o Kotlin é algo praticamente transparente, sendo idêntico à utilização do Java. Porém, algumas bibliotecas podem ir contra alguns princípios da filosofia do Kotlin. Um exemplo clássico desse “choque” é o Hibernate sendo utilizado em um projeto baseado no Kotlin. Um dos princípios do design do Kotlin é a imutabilidade. O grande problema é que o Hibernate preza justamente pelo contrário, ou seja, pela mutabilidade das entidades que são manipuladas. Não é impossível utilizar o Hibernate junto com o Kotlin, muito pelo contrário… Mas, nessa situação por exemplo, pode ser necessário abrir mão de algumas ideias legais de design que o Kotlin tem.

O Kotlin vem sendo adotado com muita força pelo mercado desde 2017. Hoje, grandes empresas como Pinterest, Uber, Amazon, Prezi, Slack, além da própria Google e da JetBrains, utilizam o Kotlin para desenvolvimento de aplicações internas e externas. Isso têm feito com que frameworks e bibliotecas específicas para o Kotlin também surjam com frequência. Hoje temos, por exemplo, o Ktor, um framework Kotlin para desenvolvimento web; e o Exposed, um framework SQL da JetBrains completamente baseado no Kotlin. Além disso, uma pesquisa do StackOverflow elegeu o Kotlin como a segunda linguagem de programação mais amada pela comunidade. Estes dados mostram como o Kotlin hoje é uma opção que deve ser considerada seriamente ao se desenvolver aplicações multi-propósito, além de aplicações para Android.

Boas práticas de programação para iniciantes

Quando estamos começando a lidar com linguagens de programação, ficamos mais preocupados em fazer nosso código funcionar do que qualquer outra coisa. Normalmente, a última coisa que prestamos atenção é se o código está legível e “bonito” se de ver… Porém, é importante começarmos a seguir algumas boas práticas de codificação desde o início. Isso irá lhe auxiliar a criar o hábito de escrever código de fácil entendimento e de manutenibilidade aprimorada. Às vezes, nós mesmos não conseguimos entender um código que fizemos a um tempo atrás.
Se você está iniciando agora, veja algumas dicas para colocar em prática.

Java - Fundamentos
Curso de Java - Fundamentos
CONHEÇA O CURSO

Utilize nomes significativos

Quando escrevemos qualquer trecho de código que seja, é importante deixar claro o que é uma variável ou o que um método faz. Um dos pontos que precisamos seguir para atingirmos este objetivo é utilizarmos nomes significativos para as nossas estruturas de código. Evite nomear variáveis, métodos e classes com nomes que não tenham nada a ver com o contexto… O código deve ser simples e direto, deixando claro a sua intenção logo na primeira leitura.
Por exemplo: quando estamos iniciando nossos estudos em desenvolvimento e precisamos escrever uma estrutura de código que faça uma soma, geralmente escrevemos algo similar ao abaixo:

public int fazer_a_soma(int a, int b)
{
    return a + b;
}

Veja que temos alguns pontos que poderíamos melhorar, tornando nosso código mais legível: poderíamos simplificar o nome do método e darmos nomes mais claros para os nossos parâmetros… Nosso método, depois de corrigido (ou refatorado), poderia ficar da seguinte maneira:

public int somar(int numero1, int numero2)
{
    return numero1 + numero2;
}

Cuidado com os comentários!

Os comentários geralmente nos ajudam a explicar ou recordar de algo no código. Porém, comentários em excesso não é algo muito legal… Se você está tendo que explicar tudo que ocorre em seu código, é porque o código provavelmente está mal escrito ou bagunçado. Sendo assim, tente sempre restringir os comentários aos trechos onde realmente seja necessário. Trechos de código que sigam práticas como a utilização de nomes significativos geralmente auxiliam a restringir os comentários aos trechos onde os mesmos sejam de fato necessários.

Reaproveite o código

Se você está fazendo algo que já existe em mais de um lugar, é interessante pensar em uma forma de evitar essa duplicidade. Por isso, sempre pense em reaproveitamento de código, criando estruturas (como classes e métodos) mais abstratas e reaproveitáveis. Pensar em reaproveitamento de estruturas diminui o volume de código e torna o processo de manutenção centralizado e muito mais facilitado.

Idente seu código

A identação, que consiste nos tabs ou espaços agrupando os diferentes blocos de código, é algo essencial. Um trecho de código mal identado é terrivelmente difícil de ser lido. Por isso, atente-se sempre à identação dos trechos de código que você escrever. Lembre-se também que a maioria das IDEs e editores de texto modernos possuem atalhos que identam todo seu código de maneira rápida e automática, portanto: utilize este recurso sempre!
Veja abaixo um trecho de código com identação incorreta. Repare que o código é super complicado de ser lido, ainda mais por se tratar de um trecho de código com múltiplos blocos.

if(idade > 18) {
 System.out.println("Idade maior que 18");
} else if(idade == 18) {
System.out.println("Idade é igual a 18");
            } else { 
 System.out.println("Idade menor que 18");}

Veja agora o mesmo trecho de código corretamente identado. Veja que o código parece mais “fluído”, se tornando muito mais fácil de ser lido simplesmente por estar com a identação correta.

if(idade > 18) {
    System.out.println("Idade maior que 18");
} else if(idade == 18) {
    System.out.println("Idade é igual a 18");
} else {
    System.out.println("Idade menor que 18");
}
Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

Mesmo sendo iniciante, é importante sempre estarmos atentos às possibilidades de como melhorar nosso código, pois isso é um ponto que o mercado em geral valoriza muito. Por mais que a maioria das empresas desejarem que seus softwares funcionem, elas também esperam que o código produzido apresente qualidade. Bons desenvolvedores estão atentos hoje às boas práticas de codificação.
Neste artigo, foram abordadas algumas práticas mais simples. Mas, caso queira se aprofundar ainda mais em pontos relacionados às boas práticas de código limpo, temos o artigo “Dicas para manter seu código limpo e legível” para que você possa melhorar cada vez mais a escrita de seus códigos.

Dicas para lançar um aplicativo de sucesso

Os aplicativos tem ganhado cada vez mais espaço na vida das pessoas. A partir deles fazemos desde tarefas mais simples como olhar a previsão do tempo, como também conseguimos pedir um delivery, marcar uma consulta, jogar, estudar e mais uma infinidade de coisas.

Provavelmente você já teve alguma ideia para algum aplicativo, mas ficou sem saber até mesmo como começar. Realmente, o desenvolvimento de aplicativos é um processo que engloba muitas etapas e demanda tempo e conhecimento. Por isso, neste artigo vamos dar algumas dicas do que você tem que pensar e fazer antes de lançar um aplicativo.

Android - Avançado
Curso de Android - Avançado
CONHEÇA O CURSO

Pesquise muito antes de iniciar

Essas pesquisas são importantes antes de iniciar o processo, pois senão, no final você poderá ver que o que foi desenvolvido não era uma necessidade do seu público e consequentemente, ele não será utilizado/vendido. Por isso, devemos fazer uma pesquisa a fundo nos seguintes itens:

Ideia – Pesquise se alguém já teve a mesma ideia que você, se tem algum aplicativo parecido. Se sim, como você pode melhorar essa ideia?
Público-alvo – Esse é um fator muito importante pois, sem eles, seu aplicativo não terá uso. Pesquise mais sobre quem será seu público. O que seu aplicativo terá que fará com que eles baixem? O que eles buscam que seu aplicativo vai atender?
Mercado – Pesquise sobre o mercado. Está pensando em um aplicativo, mas tem vários desse segmento? Será que valerá a pena? Ou você tem um super diferencial para oferecer? Como você vai fazer para que ele traga a rentabilidade que você espera?
Tecnologias – Pesquise sobre as tecnologias e ferramentas que você irá utilizar, estude qual atenderá mais suas necessidades.

Outro ponto que devemos pensar antes do desenvolvimento do aplicativo, é se ele será híbrido ou nativo. Temos um artigo que explica exatamente sobre cada um deles e sobre um ponto importante: App Nativo x App Híbrido: existe o melhor?

Não se esqueça do protótipo

Quando pensamos em um aplicativo, já queremos ir logo para a parte de desenvolvimento em si, até mesmo porque ficamos ansiosos querendo já ver algo rodando na nossa frente. Porém, devemos tirar um tempo antes disso para pensar em como será o layout do app, pensar na usabilidade e na identidade visual. Quando você faz um planejamento de como ele irá ficar, você consegue pensar mais a fundo na melhor forma ou técnica de fazer aquilo. Além de evitar muitas mudanças no design lá na frente, evitando retrabalhos. Além disso, junto com o layout você trabalhará também em outras questões, como por exemplo quantas telas terá, como funcionará cada tela, etc.

Se atente a experiência do usuário

A experiência do usuário no seu aplicativo tem que ser a melhor possível. Você deve dar a devida importância nesse quesito, criando um aplicativo que seja atraente, fácil de ser utilizado e que instigue as pessoas a se manterem nele. Outro ponto importante é evitar ao máximo os bugs. Afinal, ninguém gosta de baixar algo que está cheio de bugs, não é? E eles são sempre mencionados pelos usuários nas lojas oficiais, como App Store e Play Store, fazendo com que seu aplicativo fique com uma nota baixa.

Como é muito comum usuários baixarem aplicativos e minutos depois já desinstalarem, vale muito a pena se atentar nessa primeira impressão.

Ionic - Criação de aplicações mobile
Curso de Ionic - Criação de aplicações mobile
CONHEÇA O CURSO

Campanha de marketing

Como vimos, sem usuários seu aplicativo não tem utilidade. Então você deve começar uma campanha de marketing antes mesmo de lançar o aplicativo. Assim você consegue ir construindo uma marca e ir atraindo o seu público ao lançamento. Você pode fazer um bom uso das redes sociais sem gastar muito, utilizando o Facebook e Instagram por exemplo. Isso é ótimo para atrair seu público, além de você ficar mais próximo deles, criando um bom relacionamento.

Testes e mais testes…

Além de manter uma rotina no desenvolvimento para que o aplicativo saia do papel e chegue ao produto final, é importante sempre estar fazendo testes para que possíveis erros sejam corrigidos antes do lançamento, minimizando assim as chances deles chegarem ao usuário.

Concluindo

Sabemos que não basta somente desenvolver o aplicativo e deixar ele lá – até mesmo porque sozinho ele não vai gerar $$. Como vimos neste artigo, precisamos ter um diferencial, precisamos proporcionar um atendimento legal para os usuários e sempre estar aprimorando o nosso produto, para que nosso aplicativo seja bem utilizado por muitas pessoas.

Caso você esteja com dúvidas quanto ao desenvolvimento, temos diversos cursos voltados ao desenvolvimento mobile. Dá uma conferida 🙂

Paralisia por Análise – o bloqueio que te impede de começar

Olá, Web Developers!

Você possui algum projeto ou plano mas nunca inicia ou finaliza por estar sempre pensando demais? Você pode estar com a “Paralisia por Análise”.

O que é Paralisia por Análise?

Paralisia por Análise é quando não conseguimos chegar em nenhum lugar por pensarmos em excesso. Isso pode pode acontecer tanto na vida profissional quanto na pessoal, e está cada vez mais comum em um mundo conectado e que nos oferece várias opções para um mesmo objetivo.

Por que isso acontece?

Há muitos motivos para a Paralisia por Análise. Um dos motivos mais comuns é o excesso de opções. Você fica pensando em qual a melhor escolha, e por querer algo perfeito acaba não escolhendo e gastando todo o seu tempo apenas analisando as opções. Quantas pessoas você conhece que dizem ficar horas tentando escolher um filme ou série na Netflix e acabam não assistindo nada?

Outro motivo também muito comum que pode contribuir para este fenômeno é o medo de algo: de mudanças, do desconhecido, de falhar, de passar vergonha, etc. E então você começa a treinar, pesquisar e fazer várias coisas para poder traçar o plano perfeito. O resultado é que esse plano acaba nunca sendo iniciado ou concluído, pois nunca é o suficiente.

Também podemos citar o perfeccionismo. Muito comum em entrevistas a pessoa falar “meu pior defeito é ser perfeccionista”. Esse candidato normalmente nem faz ideia que realmente ser perfeccionista pode mesmo ser muito prejudicial.

Um motivo que também vejo muitos colegas cometendo é ficar pensando: “e se eu escolher e me arrepender? E se depois eu ficar pensando como poderia ter sido com a outra opção?”.

Exemplos comuns

Opções, muitas opções

Um exemplo muito comum na vida pessoal é o citado acima: a Netflix disponibiliza várias opções de filmes e séries. Se ficarmos pensando muito, gastaremos todo o nosso tempo livre e não aproveitaremos para assistir nada. Antes dos serviços de streaming, ao passar um filme na televisão, tínhamos apenas duas opções: sim ou não.

Em serviços de entrega como ifood também é muito comum as pessoas ficarem muito tempo escolhendo em meio a tantas opções. Antigamente você basicamente telefonaria para a pizzaria que você tivesse o número anotado na agenda.

Então o excesso de opções é algo que vem crescendo com a tecnologia. É óbvio que ter opções é ótimo, mas nem todos estão preparados para tomar decisões rapidamente.

Inclusive, reduzir opções foi uma das estratégias da Apple em uma época em que ela estava quase indo à falência. Basta comparar quantas opções temos de iPhone em relação aos modelos de smartphones de outras marcas.

Medo e insegurança e perfeccionismo

Já na parte dos medos, isso pode se relacionar com o perfeccionismo também. E sabemos que “feito é melhor do que perfeito”. É muito comum vermos projetos que nunca lançam uma versão final do produto. Sempre tem algo a melhorar antes de mostrar para algum potencial cliente.

Também já vi casos de programadores mais novos produzindo mais do que programadores mais experientes em projetos próprios. Isso parece meio estranho, mas veja o motivo:

Programador Iniciante

O programador iniciante ainda não conhece muitas ferramentas. Se ele precisar fazer algo, ele vai tentar fazer com o pouco que sabe com a única linguagem de programação que ele sabe mexer. Ele provavelmente não seguirá boas práticas, o código pode não estar tão bem organizado, muitas coisas podem acabar tendo sido feitas manualmente e haverá várias outras coisas que podem dar problemas no futuro por falta de planejamento e experiência. Porém, ele foi lá com o pouco que sabia e fez, entregando algum resultado.

Programador Experiente

Já alguns programadores mais experientes vão começar analisando o problema para escolher a melhor linguagem de programação a ser usada. Definido isso, qual dos diversos frameworks que ele conhece será o que entregará mais produtividade, robustes e segurança? Será que esse framework possui uma boa comunidade e é simples de atualizar de versão?
E qual será o banco de dados? Onde iremos hospedar? Qual a melhor estrutura para meus dados que me permita escalonar meu sistema sem problemas? Será que os requisitos foram bem capturados e não está faltando nada? Será que a estrutura da minha tela está bonita e entrega a melhor experiência ao usuário de forma intuitiva?

Só essas perguntas podem fazer uma pessoa gastar meses e ainda nem começar a escrever uma única linha de código. Se o desenvolvimento começar, essa pessoa pode aprender coisas novas e pensar em refazer partes de seu sistema por achar que ele pode ser melhor, mesmo que ele ainda nem tenha terminado de entregar o básico que o sistema deve propor. E assim uma ideia basicamente nunca será finalizada.

Obviamente que nestes casos iremos preferir algo feito por um amador, mas que resolva nosso problema, do que algo feito por uma pessoa bem mais experiente mas que ainda só tem o projeto na cabeça dele e ainda não dá para usar.

Desenvolvedor Java Júnior
Formação: Desenvolvedor Java Júnior
A formação Desenvolvedor Java nível Júnior da TreinaWeb tem como objetivo fornecer uma introdução ao desenvolvimento através do Java e todo o ecossistema para desenvolvimento da Oracle. Nesta formação, são abordados tópicos como o desenvolvimento da capacidade analítica, o paradigma orientado a objetos, a preparação do ambiente de desenvolvimento para o Java através do Eclipse e o controle de versão de código através do Git e do GitHub. Além disso, também são abordados aspectos mais essenciais da linguagem e estruturas importantíssimas dentro do ecossistema do Java, como a Stream API, que auxilia a lidar com coleções de dados; a implementação das estruturas de dados mais tradicionais como listas, filas e pilhas; e a API de coleções.
CONHEÇA A FORMAÇÃO

Como se livrar?

Há algumas coisas que podemos fazer para evitar ou pelo menos diminuir a Paralisia por Análise.

Primeiro precisamos sempre lembrar que não há solução e nem momento perfeito. O momento sempre é agora e a solução que você escolher pode ser arrumada no futuro, ela não é uma escolha para o resto da vida.

Limite o número de suas opções para o mínimo possível. Defina um objetivo com um prazo. Se chegar o prazo e você decidir que todas as opções são boas, não fará diferença qual escolher, então jogue um dado ou uma moeda e siga em frente sem questionar!

Algo para treinar tomar decisões rápidas é evitar responder para as pessoas “você que sabe”, “você decide”, “para mim tanto faz”, etc. Se te perguntaram é porque estão te dando permissão para escolher.

É ótimo ser curioso, mas contenha-se para não acabar descobrindo pequenas imperfeições que no final não fazem diferença no resultado de seu objetivo.

Planeje tudo em pequenas metas e dê um passo de cada vez. Tomar muitas decisões também causa um cansaço. Então diminua a quantidade de decisões que você precisa tomar durante o dia (não precisa chegar a ser como Steve Jobs e Mark Zuckerberg que usavam/usam sempre roupas iguais para evitar escolher roupa) e sempre comece pelas decisões mais importantes.

Conclusão

Então, a Paralisia por Análise acaba acontecendo quando o nosso excesso de pensar vai além dos benefícios que teríamos caso tivéssemos feito uma escolha mais rapidamente.
Se você está tendo esse tipo de problema, tente seguir as dicas aqui para se livrar o quanto antes e veja sua vida mudar.

Você tem ou já teve algum bloqueio assim? Compartilhe com a gente nos comentários!

O que é uma API?

Você já deve ter ouvido falar, pelo menos alguma vez, sobre esse termo chamado “API” e pode ter pensado o que realmente vem a ser uma API e como ela pode ajudar os desenvolvedores no seu trabalho do dia a dia. Vamos ver então neste artigo o que vem a ser uma API.

Uma API (Application Programming Interface) pode ser definida como um conjunto de padrões que permite a construção de aplicativos, onde ele conecta aplicações, podendo ser utilizada nos mais variados tipos de negócios.

Apesar de ter essa integração, quando um usuário estiver navegando em um site que tem uma integração com uma API por exemplo, nem saberá que sua aplicação está fazendo uma comunicação com uma API, pois ela é invisível ao usuário comum, já que ele enxerga apenas a interface dos softwares e aplicativos.

Com a API você tem uma interface para que um sistema se comunique com outro sistema, compartilhando suas ações e ferramentas. A comunicação é feita através de vários códigos, definindo comportamentos específicos.

Além de conectar sistemas, elas têm um papel muito importante na criação de aplicativos porque nos ajudam muito na produtividade. Você mesmo com certeza já acessou um site onde tinha uma integração com uma API. Vou te explicar melhor com dois exemplos.

Java - Arquivos e I/O API
Curso de Java - Arquivos e I/O API
CONHEÇA O CURSO

Imagine que você está navegando por um site para a compra de um produto. Depois de escolher, você deseja saber quanto isso custará para chegar até o seu endereço e quais são as opções de envio (PAC, SEDEX, etc) e o tempo estimado. Quando você digita o seu CEP para esse cálculo de frete, o site está utilizando provavelmente uma API dos Correios. Isso também vale na hora de efetuar o pagamento, caso o site também aceite PayPal ou o PagSeguro, por exemplo. A transação financeira acaba sendo por meios dessas APIS e diretamente com o site do meio de pagamento. Ou seja, a integração desses sistemas e os sites que utilizamos como exemplo, se dão por meio de uma API.

Outro exemplo é a API do Google Maps. Se você está num site procurando um hotel, já deve ter percebido que aparece um mapa do Google Maps indicando onde é o local exatamente, e através deste mapa você consegue até mesmo navegar por ele.

Muitas pessoas podem confundir uma API com um outro termo muito falado ultimamente, que são os endpoints. Um endpoint é basicamente o que um serviço expõe e esse serviço pode ser acessado por uma aplicação, por isso muitas vezes acaba sendo confundido com uma API, mas vale ressaltar que não é.
Um endpoint contém três principais características: Address (onde o serviço está hospedado), Binding (como o serviço pode ser acessado) e Contract (o que tem no serviço). Além disso, uma API pode existir sem um endpoint e vice-versa.

Python - Banco de dados com DB API
Curso de Python - Banco de dados com DB API
CONHEÇA O CURSO

É seguro utilizar uma API?

As APIs são muito úteis e tem diversos benefícios, além disso proporciona uma troca de informações muito segura, já que somente o proprietário da aplicação define quais informações estarão disponíveis. Você pode e deve utilizar uma API quando necessário, mas sempre visando pontos importantes de segurança.

É importante utilizar SSL nas conexões das APIS, assim toda a comunicação e dados enviados pelas APIS serão transportados criptografados pelo HTTPS. A autenticação também é importante para isolar o que pode ser fornecido de informação para cada um dos softwares que chama a API. Um exemplo são os tokens, que são validados como se fossem uma senha, pois são identificadores únicos que são enviados juntos das chamadas aos endpoints das APIs.

Para levar as informações de um lado para o outro, geralmente é utilizado o JSON, muito utilizado para retornar os dados das APIS baseadas em web. Além disso, esse conceito ocupa pouco espaço e é fácil de transportar via rede.

Apesar de estarmos falando o tempo todo de APIs mais voltadas para web, uma API não necessariamente é utilizada via web. Quem desenvolve softwares desktop pra Windows também pode utilizar APIS, como por exemplo utilizar as APIs do sistema operacional.

Depois que você tiver mais experiência além de consumir APIS de outras pessoas ou empresas, você pode construir as suas próprias, assim você pode utilizar em diversos outros projetos, poupar tempo e até mesmo disponibilizá-las para outras pessoas usarem.

O que define um desenvolvedor como júnior, pleno ou sênior?

Em algum momento da sua carreira você já deve ter pensado: em qual nível será que me encaixo? Será que ainda sou júnior ou já posso ser considerado pleno? Essas dúvidas costumam aparecer ainda mais na hora de elaborar um currículo ou de se candidatar para uma determinada vaga…

Neste artigo iremos abordar exatamente essa questão: quais são geralmente as diferenças entre os níveis de carreira júnior, pleno e sênior. Sim, falamos geralmente porque não existe uma regra específica, ela varia de empresa pra empresa, podendo variar de uma para outra.

Todo desenvolvedor deseja chegar ao ponto máximo de sua profissão, ser expert naquilo que faz. No caso, chegar ao nível sênior é o ápice de carreira pra muita gente. Mas o que determina um profissional sênior? Isso tem muito a ver com o tempo de experiência, mas não somente isso, pois a determinação desses níveis acabam sendo um mix de complexidade de tarefas e maturidade profissional. Sendo assim, vamos passar por cada um desses níveis para que possamos entender melhor.

Nível Júnior

Esse é o primeiro nível. Aqui o profissional pode ser um recém-formado na faculdade ou um profissional que ainda viveu pequenas experiências. Ele terá tarefas com uma complexidade menor, ou seja, tarefas mais básicas, sem tantas exigências. Além disso sempre terá algum outro profissional que irá coordená-lo, dando os direcionamentos, explicando, revisando suas tarefas, para que ele possa ir aprendendo e crescendo na sua área.
Em média, um profissional considerado nível júnior tem até 5 anos de experiência.

Desenvolvedor C# Júnior
Formação: Desenvolvedor C# Júnior
A formação Desenvolvedor C# nível Júnior tem como objetivo fornecer uma introdução ao desenvolvimento com o C# e o .NET Framework da Microsoft. Nesta formação, são abordados tópicos como o desenvolvimento da capacidade analítica, o paradigma orientado a objetos, a preparação do ambiente de desenvolvimento para o .NET Framework e o C# com o Visual Studio e o controle de versão de código através do Git e do GitHub. Alguns aspectos essenciais do C# também são abordados, como a definição de variáveis e operadores lógicos, tipos de dados e conversões de tipos, manipulação de strings, estruturas de controle e estruturas básicas de coleções.
CONHEÇA A FORMAÇÃO

Nível Pleno

Aqui esse profissional já tem uma experiência mais significativa e geralmente acumula em média mais de 5 anos na mesma área, assim ele consegue tomar decisões mais estratégicas e conhece mais profissionalmente sua área de atuação. É um profissional mais confiante, porém ainda conta com um supervisor para auxiliá-lo, geralmente um profissional nível sênior. No quesito de formação, ele já é pelo menos um pós-graduado.

Desenvolvedor Android Pleno
Formação: Desenvolvedor Android Pleno
A formação Desenvolvedor Android nível Pleno da TreinaWeb tem como objetivo mostrar como recursos mais avançados, como o Bluetooth e as notificações, podem ser utilizados dentro de aplicações Android para interação com o usuário e/ou transmissão de dados entre dispositivos. A formação também contempla o desenvolvimento de aplicações para wearables com o Android Wear, além de se aprofundar na aplicação do Material Design em aplicativos Android.
CONHEÇA A FORMAÇÃO

Nível Sênior

Esse profissional tem 10 ou mais anos de experiência e terá mais participações em reuniões importantes com coordenadores e diretorias, além de receber mais atividades que exigem mais experiência profissional. Muito provavelmente quem chega a esse nível tem mais possibilidade de se tornar um coordenador, um líder dentro da empresa, por isso é interessante a pessoa se desenvolver como profissional, aprendendo um pouco da área de gestão seja por cursos, MBA… para que consiga gerir bem uma equipe, lidar com os projetos, prazos… ou seja, para chegar a esse nível o profissional deve se preparar para esses tipos de atividades também.

Desenvolvedor Front-end Sênior
Formação: Desenvolvedor Front-end Sênior
HTML, CSS e JavaScript são a base de toda a web. Tudo o que você está vendo aqui agora depende deste tripé. Nesta formação aprenderemos Sass, Google Analytics, empacotar nossas aplicações com Webpack, criação de aplicações Desktop com Electron, UX/UI e uma introdução aos frameworks mais utilizados no mercado: Angular, React, Vue e Ember.
CONHEÇA A FORMAÇÃO

Concluindo

Apesar do tempo de experiência contar bastante, você não pode ser um profissional estagnado, você deve progredir e evoluir junto com a tecnologia em que trabalha. Por isso nunca se deve abrir mão do estudo, você deve se especializar e se atualizar para ter essa progressão de carreira. E é claro, quanto maior a posição nessa escala crescente, maior a complexidade de tarefas, responsabilidades e, consequentemente, melhor será a remuneração.

Aqui vai uma observação: muitas vezes observamos essas nomenclaturas quando vamos procurar por determinadas vagas, como por exemplo “Desenvolvedor Java Pleno”. Mas vale lembrar novamente que esse nível varia de uma empresa para outra. Você não deve se prender tanto a isso, mesmo se você for um desenvolvedor Java júnior, deve se atentar também aos requisitos da vaga e ao que ela pede, o que pode ser pleno para uma empresa, pode não ser para outra. Se atente aos requisitos e se estiver apto, pode tentar sem problemas =)

Até a próxima!

Como quintuplicar a produtividade no desenvolvimento de software?

Desenvolvimento de software é algo complexo, mesmo para quem está desenvolvendo. É algo que, durante o processo de encontrar sua melhor maneira de ser produtivo, você acaba se debatendo com suas próprias escolhas.

Existem muitas maneiras de se definir o que é um software, mas particularmente eu gosto dessa: um software é uma sequência de instruções escritas por um programador, para executar uma ou mais funções, otimizando assim algo que previamente era manual ou não existia.

Veja, se grande parte do meu trabalho como desenvolvedor é otimizar processos, a minha rotina de trabalho também costuma ser como um protótipo de software.

Isso se transforma em uma rotina estruturada, ou, ao menos, uma maneira estruturada de como resolver um problema. Vou contar um pouco do meu processo de construção de software/trabalho e como desenvolvi hacks para ser mais produtivo ao longo do tempo.

Vou contar um pouco da minha experiência para tentar ajudá-lo(a) a otimizar a sua. Vamos lá!

Python - Fundamentos
Curso de Python - Fundamentos
CONHEÇA O CURSO

Comece de maneira gradual

Dificilmente consigo acordar e codar alguma coisa. Normalmente eu preciso que meu cérebro ligue os motores de maneira processual, um passo de cada vez.

No entanto, penso que isso não pode ser um processo que leva várias horas, então eu tomo um caminho gradual, mas rápido, para que esse processo ocorra.

Ao abrir minha máquina para programar eu começo geralmente pela leitura dos meus cards do Trello, nosso reservatório de tasks infinito onde sempre pode se tirar algo da cartola. Eu uso Trello, mas essa dinâmica aplica-se a qualquer ferramenta de gestão de projetos.

A leitura me ajuda a pensar nas tasks que vão ser executadas no dia. É um processo rápido. Ao ler rapidamente os títulos dos cards eu já sei o que devo fazer, quando fazer e como fazer, em sua grande maioria.

Após isso eu começo pelas tasks mais simples, coisas que são rápidas, mas me farão emergir no processo de pensar em software.

Um exemplo disso é executar alguns scripts para transferir dados de usuários, dar update em alguma informação no banco, ou refatorar algum trecho simples de código.

Leitura recomendada:
Por que a comunicação em TI é um negócio tão importante?

Coding Hard

É hora de codar. Mas como saber no que eu começo primeiro?

Para executar as tasks mais complexas, eu as separo em 2 tipos:

  1. As que são relativamente rápidas e as que são de longo prazo. As tasks complexas são aquelas que envolvem mais de uma parte do sistema, que têm alto impacto, em que é preciso prever muitas coisas antes de se começar a executar;

  2. Normalmente minha prioridade começa com as tasks que posso fazer em 1-2 horas. Elas permitem imprimir ritmo no desenvolvimento e fazem com que minha cabeça entre no modo foco.

Durante esse período normalmente não respondo e-mails, não olho o Slack, não faço nada que me faça perder a linha de pensamento. O porquê disso é simples, vamos imaginar a seguinte situação:

2.1 Usuário vai entrar na tela de login e nesse momento informo ao banco que ele está ativo
2.2 O banco guarda essa informação e ativa uma trigger para que daqui a 30 minutos um alerta seja enviado a esse usuário
2.3 Se o usuário entrou na tela 1 o alerta será x. Se entrou na tela 2 o alerta será Y, mas apenas depois de 30 minutos
2.4 Caso o usuário entre na tela 3 o tempo de alerta deve ser reduzido para 15 minutos

Pronto.

Imagine que pensei nas linhas gerais de como a task vai ser feita e, quando estou no meio da segunda instrução, paro para responder e-mails ou fazer outras coisas. O que ocorre?

Posso simplesmente esquecer que já fiz algo ou deixei de fazer algo. Por isso manter uma linha única de pensamento é importante quando estamos codando.

É preciso se ter em mente o tempo todo os passos que foram ou não executados. Caso você esqueça onde estava, todo o ciclo recomeça. “Será que setei o tempo certo na tela 1? Fiz o tempo de maneira diferente para a tela 3?” E então começa um processo de revisão da sua linha de pensamento.

Para se produzir as tasks de longo prazo é necessário quebrá-las em pequenas etapas, dificilmente é possível ficar 8 horas ininterruptas desenvolvendo. Bugs surgem, pessoas falam com você, outras tasks são priorizadas e por aí vai.

Por isso é um processo que exige a quebra. Exige que você determine quando cada etapa será executada para que diariamente você progrida dentro da task.

Leitura recomendada:
Como se destacar na carreira de TI?

Java - Fundamentos
Curso de Java - Fundamentos
CONHEÇA O CURSO

As pausa são importantes para a produtividade

Algo que já vi ser bem comum entre programadores — talvez seja para outras áreas também — é o tempo necessário para “resetar” o cérebro.

Ao finalizar tasks complexas, onde você levou sua mente a pensar na otimização de um processo específico, normalmente você precisa “não pensar” durante algum tempo.

O que quero dizer com isso? Se pensei na otimização de um processo de candidatos dificilmente é possível, no instante seguinte, pensar em um código para empresas.

Isso porque a mente está “contaminada”, pensando ainda em otimizações e melhorias do processo que você acabou de criar.

É preciso esvaziar a mente antes de colocar outra idéia no forno para iniciar um novo processo de desenvolvimento, por isto as pausas entre uma task e outra são importantes.

Leitura recomendada:
As certificações para programadores mais importantes do mercado.

Afinal, como ser produtivo(a) no Desenvolvimento de Software?

E quando acaba essa sequência “colocar” coisas na caixa, “tirar” da caixa, “descansar”, “colocar” outro no lugar? Para a maioria dos Desenvolvedores que conheço a resposta é nunca.

Ao se deparar com problemas, normalmente eles são jogados em processos de background na sua mente e ficam produzindo idéias de maneira passiva.

Acredito que muitos Desenvolvedores — senão todos — já se depararam com uma idéia no meio da noite, acordaram e escreveram um trecho de código.

Ou já teve uma elucubração no meio da mesa do jantar, ou enquanto estava vendo sua série da Netflix.

Acredito que esse processo de nunca parar de pensar sobre os problemas técnicos ou sobre software em longo prazo é danos.

Talvez fique aqui a minha hipótese do porquê tantos Desenvolvedores curtem tanto fazer algo fora do serviço que atraia 100% do foco.

Como jogar algo ou estar imerso dentro de uma série.

Esse tipo de atividade simplesmente força sua mente a se desligar do mundo do software e é essencial para resetar sua mente e dar tempo para você ter novas idéias de maneira fresca e descansada.

Esse era um pouco do meu ciclo enquanto era 100% Desenvolvedor dentro da GeekHunter.

Hoje, assumindo a área de gestão, esse fluxo mudou um pouco, porém a essência ainda é a mesma.

Cada Desenvolvedor tem sua particularidade na hora de programar, mas acredito que existam muitas similaridades entre todos quando se trata do nível de foco necessário para desenvolver.

Espero ter ajudado. Até a próxima!

JavaScript Básico
Curso de JavaScript Básico
CONHEÇA O CURSO

Esse post foi desenvolvido pela GeekHunter

Para que serve um framework?

A utilização de frameworks já está inclusa no dia a dia de muitos desenvolvedores. O principal benefício que faz muitos desenvolvedores utilizarem frameworks é o poder de reutilização de estruturas de código, poupando horas de desenvolvimento e fazendo com que os desenvolvedores possam focar no que é de fato importante e que agrega valor ao negócio com relação ao software que está sendo desenvolvido.

Laravel - Framework PHP (Parte 1/3)
Curso de Laravel - Framework PHP (Parte 1/3)
CONHEÇA O CURSO

O que vem a ser um framework?

Um framework é uma estrutura-base que contém um conjunto de funções e componentes pré-definidos, funções e componentes estes que se relacionam para disponibilizar funcionalidades específicas ao desenvolvimento de software. Estas funções e componentes genéricos pré-prontos agilizam o processo, poupam tempo e evitam retrabalho para o desenvolvedor.

Os frameworks podem ser criados ou pela própria comunidade ou por empresas mantenedoras de uma linguagem ou ambiente de desenvolvimento, como a Microsoft e a Oracle.

Por que utilizar um framework?

O foco principal de um framework é a reusabilidade. Você pode utilizar um framework para desenvolver várias aplicações, reaproveitando estas estruturas pré-disponibilizadas para lidar com tarefas repetitivas ou que são comuns em vários tipos de sistemas (como, por exemplo, a funcionalidade de autenticação). Nesse exemplo, você não precisa dedicar tempo para desenvolver a funcionalidade de login, já que existem frameworks já testados para essa finalidade. Além disso, se necessário, você pode personalizar estes componentes pré-disponibilizados de acordo com as demandas do projeto em questão.

Um exemplo: a Microsoft tem o .NET Framework, que disponibiliza componentes pré-configurados para rodar aplicativos em diferentes plataformas. Se você vai criar uma aplicação web, por exemplo, você não precisa desenvolver toda a estrutura necessária para lidar com requisições HTTP (que é uma tarefa repetitiva): basta você criar uma classe que estenda a clases Controller e… Pronto! Você já tem automaticamente uma classe que consegue lidar com requisições HTTP.

Bootstrap 4 - Básico
Curso de Bootstrap 4 - Básico
CONHEÇA O CURSO

Existem diversos frameworks para as mais diferentes linguagens e plataformas, seja desktop, web ou mobile, tanto com relação ao front-end quanto ao back-end. Devemos escolher os frameworks corretos para cada tipo da aplicação, para que ele realmente ajude no objetivo final.

Ao final, podemos concluir que um framework é um facilitador para o desenvolvedor chegar no resultado final que ele deseja – que é o desenvolvimento de uma aplicação, poupando tempo e esforço de desenvolvimento.

Dicas para manter seu código limpo e legível

Atualmente, o mercado exige que os desenvolvedores não “programem” simplesmente. Muitas empresas desejam profissionais que possuem domínio de boas práticas e noções de arquitetura – o famoso “código limpo”. Muitas vezes, podemos até pensar: “não… as empresas desejam apenas que o software funcione”. A curto prazo pode até ser real esta afirmação, mas quando falamos sobre médio e longo prazo, que é quando certos problemas começam a aparecer, é que os débitos técnicos (os trechos de código que foram mal escritos ou funcionalidades que não foram implementadas da maneira correta) voltam para nos assombrar.

O famoso “código limpo” (ou “clean code”) é um estilo de desenvolvimento que tem como foco a escrita de código claro, conciso e de fácil manutenção posterior. Profissionais que se atentam a essas práticas costumam ser vistos de maneira diferente quando seu código é analisado em uma entrevista de emprego. Ter o código limpo e bem escrito facilita a leitura e é importante para o aumento da qualidade do software. Se você não se preocupa com isso, fatalmente, até mesmo em um curto prazo, você mesmo pode não entender seu próprio código! A situação piora ainda mais quando um desenvolvedor vai tentar entender o código de outra pessoa, ainda mais se for em uma empresa que tenha alta rotatividade na equipe (o que é uma situação bem comum nas empresas de software aqui no Brasil). As consequências desse tipo de situação são claras: perde-se muito tempo com a manutenção do software, gerando muitas vezes até mesmo situações de retrabalho.

A adoção de práticas de “clean code” acaba auxiliando a resolver estes pontos. Porém, ainda podemos obter outros benefícios através da adoção destas práticas: mais do que garantir a qualidade do código e do software, a adoção de práticas de “código limpo” trazem também maior produtividade, por consequência direta ao fato de que um software com qualidade exige menos processos de manutenção e, quando esta é necessária, o esforço a ser realizado acaba se tornando muito menor do que o usual.
Abaixo, descrevemos alguns tópicos comuns no que diz respeito ao “clean code”.

Escreva métodos curtos

Um método deve ser escrito de uma forma que qualquer pessoa que “bata o olho” entenda o que ele faz. Métodos demasiadamente extensos certamente não ajudam neste ponto. Alguns livros de arquitetura de software pregam que um método deve ter no máximo 15 linhas, embora até 25 linhas seja tolerável, caso seja muito necessário.

Utilize nomes de variáveis e métodos claros e bem definidos

Os nomes de variáveis e métodos devem ser precisos, claros e diretos, passando diretamente a ideia do que ele faz. Não tenha medo de escrever um nome grande caso seja necessário. Um nome bem descritivo irá possibilitar uma melhor compreensão e, posteriormente, uma melhor manutenção do código. Antes termos uma variável chamada valorTotalNotaFiscal do que valTot. A grande maioria das ferramentas de desenvolvimento hoje em dia oferecem a funcionalidade de autocomplete, o que invalida a justificativa de que “perdemos tempo ao digitar nomes de variáveis e métodos muito grandes” para não utilizarmos nomes mais diretos para nossas estruturas de código.
Vale lembrar que nomes de métodos sempre deve ter nomes de verbos, já que são criados para executar algum procedimento. No caso de classes, deve-se usar substantivos no singular.

Separação clara de responsabilidades entre métodos e classes (Single Responsability Principle – SRP)

Um método deve desempenhar apenas uma tarefa. O Single Responsability Principle, ou Princípio da Responsabilidade Única, é um de cinco princípios para utilização de boas práticas de codificação chamados S.O.L.I.D. Este princípio define que cada estrutura de código, seja uma classe ou um método, deve possuir apenas uma única responsabilidade, ou seja: cada estrutura deve fazer uma única coisa.
Tome cuidado também com a justificativa de uma classe. Os métodos existentes de uma classe devem estar alinhados com sua definição. Não adianta colocarmos um método chamado acelerar() dentro de uma classe chamada Mesa, sendo que quem acelera é um Carro.

Desenvolvedor PHP Sênior
Formação: Desenvolvedor PHP Sênior
Nesta formação você aprenderá aspectos avançados da linguagem PHP e de seu ecossistema, conhecimentos essenciais para se tornar um desenvolvedor diferenciado, e com isso, você terá conhecimento para desenvolver aplicações PHP usando as práticas mais modernas do mercado.
CONHEÇA A FORMAÇÃO

Cuidado com a quantidade de parâmetros que os métodos recebem!

Quanto menos parâmetros um método receber, mais legível ele será. Sempre garanta que os parâmetros que um método recebe são de fato necessários. Quando uma quantidade muito grande de parâmetros for necessária, tente utilizar design patterns como o builder ou, pelo menos, agrupar esta quantidade de parâmetros em uma especificação de objeto a ser repassado como parâmetro único para o método.

Cuidado com o overpattern!

Design patterns são legais, desde que utilizados da maneira correta. Quando os design patterns são aplicados da maneira incorreta ou utilizados em conjunto de maneira complicada por pura “satisfação técnica pessoal”, estes acabam mais atrapalhando do que ajudando, já que a utilização de design patterns acaba por trazer uma certa complexidade ao código. Por isso, para evitarmos futuros débitos técnicos, é essencial que essa complexidade oriunda com a aplicação de um ou mais patterns seja devidamente justificada.

Para avaliar se você deve aplicar ou não um conjunto de design patterns, lembre-se sempre de um princípio chamado K.I.S.S. – Keep It Short and Simple, ou Mantenha Isso Pequeno e Simples (ainda existem algumas variações sob essa sigla). Sempre escreva suas estruturas de código da maneira mais direta e simples, aplicando simplesmente os patterns que são de fato necessários para a situação. Não crie débitos técnicos desnecessários por sofrer antecipadamente: escreva trechos de código claros e concisos que, quando necessário, possam ser modificados para estruturas e patterns mais complexos de maneira tranquila.

Entre um desenvolvedor que sai aplicando técnicas como DDD, CQRS, Event Sourcing e uma variedade de patterns gigantesca para um simples cadastro de uma entidade que nem tem relacionamentos e um desenvolvedor que utiliza patterns mais simples como o Repository e o Service Pattern, pode ter certeza que o mercado de maneira geral irá dar a preferência para o segundo desenvolvedor. E isso não o define com menos habilidades técnicas que o primeiro desenvolvedor – muito pelo contrário: o segundo desenvolvedor provavelmente possui um nível de maturidade maior que o permite calcular bem os benefícios de cada abordagem em diferentes situações.