Results for tag "carreira"

2 Articles

Um Generalista a mais no mercado?

Depois de um longo tempo sem postagem no blog, estou voltando aqui com algumas novidades. O tempo tem sido crucial, e muitas mudanças aconteceram em minha carreira e vida pessoal. Com isso acabei me afastando do blog. O post hoje conta um pouco do que aconteceu e o que espero pro ano de 2019!

 

Novos conhecimentos, mesmos meios

Depois de longos anos trabalhando com plataforma Microsoft, exclusivamente SQL Server e Windows, finalmente encarei a chance de conhecer outros produtos. Não um específico, mas diversos: o problema aparecia, e tinha que resolver.  Mysql, PostgreSQL, Oracle, DB2, sqlite, etc. Em um primeiro momento, acostumar com essas novas tecnologias é difícil, e chega até ser desanimador.  O SQL Server realmente é um produto incrível, e possui muitas features que tornam o dia-a-dia de um DBA muito mais fácil, porém nada básico. Possui uma engine poderosa, capaz de suportar os mais severos workloads, oriundos das mais exigentes aplicações do planeta. Por um outro lado, existem muitas features interessantes, e que até faltam no SQL Server.

Junto com o receio de se tornar um generalista, resolvi encarar o desafio. O resultado dessa experiência, conto um pouco a seguir.

A maior mudança: Linux

Sem dúvida, o maior conhecimento adquirido foi o Linux. Apesar de passar a maior parte do tempo em uma tela preta, sem usar mouse, diferente do Windows, isso não me trouxe limitação. A princípio, parece que aquilo é realmente uma caixa preta e qualquer mensagem significa o caos. Besteira. Um ambiente robusto, cheio  de controles, lógica, configurações, desafios. Nada diferente do Windows. Apenas um jeito diferente.

Aprender a usar Linux foi um dos, senão o maior, conhecimento que adquiri depois de aprender a programar e SQL Server. Eu não escondo para os meus colegas que sou fascinado pelo “internals” do SO, e o Linux me apresentou centenas de oportunidades para aprofundar mais esse conhecimento. Há quem diga que Windows é melhor, ou que Linux é melhor, ou ainda que Debian é melhor que CentOs, e vice-versa (feliz por entender agora o que esses termos significam). A velha história das comparações… Seguramente, posso dizer que é uma tremenda perda de tempo cair nessa discussão.

Hoje sou um apaixonado por bash, e meu velho powershell. Estou mesmo satisfeito por conhecer mais Linux, e poder explorar o melhor dos dois mundos. Agora, não importa se o problema é um pinguim adoecido, ou uma janela quebrada. Estarei aqui com as melhores ferramentas para resolvê-los.

 

Uma nova gama de opções de configuração e conceitos

Tive o prazer de atuar em problemas diversos em outras tecnologias de banco. Do mais simples aos mais complexos. Um dos meus primeiros desafios nos PostgreSQL foi apenas liberar o acesso de um usuário a partir de um novo IP.  Há um arquivo de configuração que você precisa editar pra isso. Aliás, é uma abordagem interessante. Diferente do SQL, há recursos nativos em outros bancos, como o PostgreSQL e no MySQL,  em que você consegue limitar o acesso do usuário a partir de um endereço. Realmente necessário? Uma discursão interessante pra uma conversa numa mesa de bar! 😆

Acostumar-se como o SQL Server instala seus binários, me fez ficar confuso com algumas tecnologias. Porém, comparar o conceito de instância do SQL Server, com os outros SGBDs, tornou as coisas mais claras no Oracle e no DB2.  No Oracle, o procedimento de instalação, reconhecido na comunidade técnica por ser “difícil”,  vai ficando mais claro a medida que você entende os conceitos. Muita coisa são apenas padrões, que, repassando de geração em geração, se torna um “é assim que se faz, pronto e acabou”. Cheguei até o ponto de criar novas instâncias Oracle manualmente, e me admirei com o fato que com apenas copiando alguns arquivos, você sobe uma “monstruosa” nova instância…  Minha dica é: entenda os conceitos de instância em “Oracle” e DB2 e você sairá vitorioso no primeiro contato com essas plataformas!

Planos de execução e Otimização de Queries

Uma das maiores causadoras de problemas em produção, a famosa lentidão de queries, não é exclusivo do SQL Server. Há sempre uma demanda para “pega as queries mais lenta e otimiza”. Essa nova jornada me trouxe um valioso conhecimento: Aprender a ler planos de execução no PostgreSQL, MySQL, etc. Sem muitas opções gráficas, me acostumei com a leitura do plano em texto.  A complexidade do Query Optimizer (QO) do SQL server deixou o caminho mais fácil para entender compreender o MySQL, que apesar de mais simples, toma decisões eficientes e inteligentes, que poupa trabalhos dos desenvolvedores. Porém, me ajudou a entender muito mais rápido os operadores do PostgreSQL, que possui uma gama infinita, com muito mais opções para controlar as decisões de seu otimizador, entretanto, com muita coisa semelhante do QO do SQL.

Num outro cenário, precisei avaliar o porquê de um simples banco no MySQL, em um portal de internet de um importante orgão do país, estava lento. Pra quem vem do SQL, é meio complicado lidar com a falta de uma sys.dm_exec_requests, ou sp_WhoIsActive. Mas, o meio de encontrar o problema é o mesmo: descubra a query, ou as queries lentas, e quais são seus gargalos. Aliado com as ferramentas do SO, conseguimos entender o problema, onde estava a limitação, e resolvemos isso usando recursos do Linux!

Também, apareceu uma chance incrível de operar um DB2, identificar locks, criar usuários, resolver gargalos, e até gerenciar uma replicação de dados!

Manipulação de Dados

Apareceu um desafio de auxiliar um processo de Auditoria de uma importante rede internacional de supermercados. Era necessário exportar conteúdo de um banco Oracle. Não tínhamos SSIS, nem interface gráfica. O desafio era tudo via linha de comando, era o que podia. Utilizamos a versão sqlcmd do oracle, o sqlplus. Com uma gama de opções, conseguimos exportar o conteúdo com sucesso.  O reconhecimento do vice-presidente desta empresa,  fez todo o esforço de usar powershell, para gerar um script bash que executava o sqlplus, valer a pena!

A triste e velha história da recuperação

Infelizmente, apesar de tantas diferenças, um problema comum: Recuperação. “O banco deu pau e não tem backup”.  Há quem diga que saber internals dos produtos é uma perda de tempo. Talvez sim, para aqueles que possuem recursos para suprir esse tipo de problema, ou mesmo que conseguem se convencer que tudo acabou nessas situações.

Além de conhecer novas formas, ferramentas e tipos de backup/restore (e em agluns casos, apenas diferente sintaxe, para os mesmos comandos), conseguir trabalhar em casos de recuperação de bancos sem backup.  Costurando bits, analisando logs, etc. Igual sempre foi no SQL nessas situações.  Alguns produtos apresentam uma comunidade forte, e documentação boa, outros nem tanto. A comunidade SQL Server realmente é um destaque quando se trata de conhecimentos mais avançados. Mas, é sensacional o fato de você poder ollhar no código-fonte do produto, gastar algumas horinhas apenas fazendo pesquisa de funções C++, entendedo as lógicas, em meios a poucos comentários de código.

 

Novos times

Uma das maiores  novidades, e, que, com muito orgulho, anuncio, foi a de entrar para o time da Fabrício Lima Soluções em Bancos de Dados.  O meu foco é o trabalho com SQL e Azure. Um time que já é muito forte e realmente tem sido animador. Além dos casos que aparecem, temos grupos de estudo, colocamos as experiências de todos para gerar soluções ótimas. É incrível o que esses caras fazem, e não é exagero a hashtag #AlwaysTunningYourData, porque é pra isso que todo esse conhecimento serve: pra fazer com que o seu SQL Server voe, seguindo as melhores e mais eficientes práticas.

Uma oportunidade que, chegou em um momento em que eu estava me distanciando do operacional de banco de dados, na Stefanini. Tendendo para automações de ações e serviços da infraestrutura, exigência da própria Adminstração de Banco de Dados, cheguei em uma equipe de inovação. Aqui aprendi python, docker(e já entrando em kubernetes), serviços cognitivos, machine learning, etc. Uma incrível oportunidade em um momento que todo o mundo já se volta para essas tecnologias!

Realmente tenho muito orgulho dos times que faço parte hoje. Ambos se beneficam das experiências adquiridas em cada um, e me apoiam. Isso faz toda diferença e realmente estou muito empolgado para 2019!

 

Na realidade, nada novo…

Apesar dessas novidades,  a essência não mudou. Ainda continuo apaixonado por assuntos de tecnologia, e gasto horas tentando entender os porquês. Se aparece um problema, seja com python, seja com sql no linux, sql no docker, db2 em Windows, eu passo algumas horas analisando cada log, cada mensagem, juntando as peças, consultando informações, abrindo ferramentas de monitoramento e trace. Tudo está interligado. Cada conhecimento em uma tecnologia, cada forma de resolver o problema, preenche uma vasta biblioteca na minha cabeça (e no meu OneNote,  Dropbox, etc.) com tudo que preciso para resolver os problemas.

E é nisso que se tem se resumindo meu dia-a-dia. Continuo sim, atuando em bancos de dados, especialmente na infraestrutura, resolvendo diretamente casos críticos ou discutindo com uma equipe como resolver. Continuo abrindo o Process Explorer, mas agora abro htop, ps ou top também. Ainda, nos casos mais bizarros, abro o Process Monitor, mas também abro o strace agora. Mais do que nunca tenho brincando com o Windbg ( e ainda não abrir um debugger no Linux, mas estamos quase lá  :-D). Leio internals de Windows, e também já lí o incrível Kernel Development do Linux. E também frequentemente consulto o código-fonte para tirar algumas dúvidas (uma delas, foi auxiliar no entendimento do “Load Average”).

Espero trazer mais em 2019 (e nesse finalzinho de 2018 também)! Mostrar como usar ferramentas, explicar conceitos, etc. Tudo o que já vinha escrito neste blog, porém com mais gama de experiência, tecnologias e ferramentas! E então, será que eu me tornei mesmo um Generalista? Não! Ainda estou envolvido com tecnologias específicas! Mas, estou acompanhando a TI, e indo com as novidades, levando tudo que aprendi até hoje para esse mundo! E tem dado certo, muito certo!

Pra fechar, novamente, a imagem que abre esse post: reflete o que foi esses meus 9 anos na área de TI, retirado da minha palestra no SQL Saturday 811:

 

Devo saber programar?

Oi caro leitor!

Estou abrindo um pequeno parênteses para compartilhar uma opinião que faz tempo que quero falar a respeito… Vou fugir um pouquinho do conteúdo técnico e vamos falar sobre conhecimento.

Nos últimos meses tenho experimentado problemas incrivelmente difíceis e interessantes ao mesmo tempo. Problemas que antes me davam medo só de pensar em acontecer, mas ultimamente, fico na expectativa que aconteçam! Sim, é isso mesmo que você leu… 🙂

A questão é que nos últimos meses eu desenvolvi mais ainda minhas habilidades e conhecimento dos porquês e dos funcionamento do SQL server e do Windows. Além do mais, graças a isso eu tenho conseguido ir direto na ferida e, por exemplo, ver estatísticas de uso de recursos e de performance me mostrarem valores mais positivos e elegantes, além de responder com segurança diversos questionamentos que me são feitos.

As aventuras mais recentes foram dois casos, um envolvendo consumo de CPU e o outro consumo de memória. Graças ao estudos dos últimos meses, eu pude, sem muita demora, encontrar a causa raiz, de forma certeira, entender os porquês e levantar soluções com ações simples. Tudo isso graças a utilização das ferramentas certas (isto é, queries, contadores de perfomance, DMVs, etc.).

Mas o que tem mudado e me permite ir tão certeiramente? Simples: um conhecimento mais rico e detalhado sobre como todas as partes envolvidas funcionam. Conhecer a arquitetura de um software e suas dependências é um fator determinamente na velocidade com a qual você vai solucionar problemas desconhecidos e novos, bem como te permitir estimar, planejar e “dizer nãos” com propriedade.

Ok, você pode está se perguntando onde entra a tal da programação e chegamos nela exatamente agora. A programação é a maneira como você torna as coisas mais palpáveis no mundo da TI.  Sabendo programar você materializa suas idéias. Este texto está ficando meio filosófico, mas não tenho outras palavras para descrever o que programar representa. Talvez eu resuma em uma: prática. Você sabe o que é um latch? Você sabe porque threads precisam se sincronizar? Você entende porque deve haver um CMEMTHREAD ? Você sabe ao menos explicar porque quando usa funções escalares, as queries tendem a ficar mais lentas? Você entende o que é uma heap ou um stack e porque é um conceito tão importante? Sabe o WinDBG…? Sabe a real utilizadade daquilo e pra quem server?Dica: Não é pro DBA! Você sabe programar? Pode parecer ignorância, mas para que certos conceitos fiquem mais claros, talvez colocar a mão na massa pode ser uma alternativa não mais rápida, mas efetiva a longo prazo. Isto é, um conhecimento que você não vai aproveitar uma única vez…

Claro, que não posso falar sobre programação sem falar em meus xodós: C/C++ e WINAPI. Eu fortemente recomendo que você aprenda essas duas coisas assim que puder. Isso vai te dar uma nova visão. Aqui que vos escreve não é nenhum expert, ou mesmo intermediário. Conheço algumas coisinhas (sempre fui apaxionado na linguagem C e na API do Windows)… Que já me ajudam bastantes… Imagine se eu  dominasse like a boss.

Aprender a programar pode fazer você absorver melhor os porquês de muitas coisas. Um software complexo, como um SGDB comercial, precisa ter o máximo de perfomance ao mesmo tempo que um controle do ciclo de vida. Sim estou falando de correções de bugs, novas versões, etc. Tudo isso vai definir, entre outras coisas, a arquitetura. E cá estamos aqui, falando de desenvolvimento, perfomance e arquitetura na mesma frase ;)…

Nossa Rodrigo que baboseira! Você está doido

Não, não estou. Assim como aprender inglês e a arquitetura do SO são essenciais, aprender a programar (e puxando a sardinha, aprender C) também é, e muito. Tudo, tudo mesmo, esta voltado e relacionado com programação. O software do mais simples ao mais complexo vão ter em comum o fato de terem sido criados usando alguma linguagem. Aprender a programar é aprender a entender a arquitetura do hardware e do sistema operacional .Familiar? Pelo menos um destes dois itens você precisa entender para lidar com qualquer vertente da área de tecnologia e o nível com o qual você os domina, é o nível com o qual você irá dominar a sua ferramenta de estudo/trabalho.

E afinal, somente serei o “bonzão” se souber programar?

A questão aqui não é ser o “bonzão”. Mas sim, realizar um trabalho com mais qualidade. Afinal, te pagam pelo seu conhecimento e tempo. Você pode ser um excelente profissional e de sucesso sem saber nada de programação. Assim como você não precisa saber muita coisa de inglês… Mas já tentou a diferença? Há algum assunto que você nunca entendeu? Alguma coisa que você achou que era de um jeito mas te mostraram que você estava errado? Então, certos conhecimentos vão incrementar suas habilidades, te fazer compreender os porquês, atuar como blocos simples (coisas complexas são feitas de várias simples). Cabe a você escolher se quer depender pelo resto da vida dos mecanismos de pesquisa ou se quer dominar o assunto e agir sem medo e com propriedade, dando resultados imediatos! Eu escolho a segunda opção e to seguindo nela já há algum tempo, sem arrependimentos, e gerando resultados.