Feeds:
Posts
Comentários

Archive for the ‘Geral’ Category

Koans

Uma boa forma de aprender uma nova linguagem é através de Koans; que funciona da seguinte forma: basicamente existe uma bateria de testes com diversos níveis, todos que não funcionam (red), e você deve fazer com que esses testes passem (green). Quando mais você avança, mais você se aprofunda na linguagem que está aprendendo.

Segue alguns Koans para você aprender, rever ou entender melhor alguns conceitos da linguagem:

Existem Koans de várias outras linguagens, basta procurar na net pela que você deseja. Bons estudos! 😉

Anúncios

Read Full Post »

Estou entrando na quarta semana de curso da Coursera, uma empresa que tem parceria com 4 grandes universidades até o momento (Princeton, Standford, Michigan e Penn) e disponibiliza cursos online gratuitamente. Achei bem interessante e acabei me inscrevendo em 2 deles: Machine Learning e Compilers, sendo eles de 5 semanas e 10 semanas. Por coincidência os dois são da Standford.

No começo pensei que por ser gratuito, o ritmo ia ser bem tranquilo. Engano meu! O ritmo do curso é bem puxado e os professores dão bastante material para estudar; além disso, quase toda semana tem mini-exames para serem feitos. Se você se dedicar entre 4 horas e 8 horas por semana é possível fazer o curso com uma certa tranquilidade. Por isso antes de começar, reserve esse tempo para se dedicar ao curso. Então não faça como eu, que estou estudando uma milhão de coisas ao mesmo tempo e ainda pegou mais coisas para fazer! :-/

Os cursos são realmente muito bons e estou gostando bastante! Os professores tem uma didática muito boa e todo o material/site para consulta, perguntas, etc é bem simples e organizado. Estou de olho agora quando os próximos vão começar, pois com certeza vou continuar fazendo esses cursos. Porém da próxima vez vou pegar um curso de cada vez! 😉

Read Full Post »

FedEx Days

Essa semana fizemos na iWeb um FedEx Days como na Atlassian. Começamos na quinta-feira após a retrospectiva do sprint (que normalmente terminaria na sexta-feira) e terminamos o “evento” na sexta-feira as 15:30h com as apresentações do que cada dupla/grupo fizeram. Um evento com muita cerveja, snacks, pizza, etc. 😉

Os requesitos do FedEx Days eram que cada projeto deveria ter no mínimo 2 pessoas e uma página com a descrição da idéia. O projeto poderia utilizar qualquer tecnologia e não precisaria ter uma ligação com o que desenvolvemos na empresa. A maioria dos projetos acabaram sendo ligados aos produtos/tecnologias que usamos ou gostariamos de usar dentro da empresa.

No caso da dupla que participei, usamos Node.js em uma Virtual Machine de um cliente fictício, conectando diretamente ao nosso sistema onde o usuário controla seus recursos (maquinas, clouds, backups, etc). Achei bem interessante o resultado obtido com o projeto que fizemos.

Rafael Rosa, que trabalha com agente na iWeb bateu uma foto durante uma das apresentações.

No final do FedEx, as apresentações foram bem legais, com cada dupla/grupo contando sobre suas experiências/aprendizados durando essa maratona. Valeu a experiência e recomendo muito a idéia, pois foram desenvolvidos projetos que provavelmente irão para produção dentro em breve.

 

Read Full Post »

SaaS e PaaS

Vem aumentando cada vez mais o número de SaaS (software as a service) e PaaS (platform as a service). O bom de tudo isso é que uma grande maioria não custa nada para quem quer começar a usar; seja para aprender, seja para colocar uma pequena aplicação na web.

Segue a lista de alguns serviços que você já pode começar a utilizar de graça:

Read Full Post »

RIP – Steve Jobs

Sem palavras! 😦

Read Full Post »

Quantas vezes, em uma entrevista de emprego, você realmente fez perguntas para saber em qual tipo de empresa você está entrando para trabalhar? Perguntas que te dêem uma boa noção do nível de flexibilidade e liberdade que você terá, para que, depois de 6 meses ou 1 ano, você não esteja se arrependendo profundamente de ter recusado outra proposta ou mesmo saído do antigo emprego. Infelizmente, é impossível saber realmente se o ambiente de trabalho é bom ou não, porém quanto mais perguntas você fizer, mais informações você terá para analisar se deseja realmente trabalhar na empresa ou não. Afinal, os entrevistadores fazem diversas perguntas para, entre muitas coisas, diminuir o risco de contratar a pessoa errada para o cargo. Então por que você não deveria fazer o mesmo?

Sempre comece com perguntas mais técnicas, até porque essas deverão provavelmente entrar no decorrer da entrevista caso a conversa com o entrevistador esteja fluindo bem. Abaixo algumas perguntas e os motivos pelo qual você deve faze-las:

– Utilizam metodologias ágeis (Scrum, XP, Kanban)?

Motivo: Se não utilizam nenhuma metodologia ágil, pode se preparar para alguns desses problemas: trabalhar com escopo fechado e muita correria no final do projeto; briga do que estava acordado no contrato e o que foi entregue; código com pouca qualidade; muita burocracia; falta de melhoria contínua do ambiente de trabalho/forma de trabalho; entre outros problemas.

– Utilizam projetos open source? Se sim, quais? A empresa contribui com esses projetos?

Motivo: Se não utilizam projetos open source, normalmente, você vai trabalhar com versões de softwares desatualizadas, pois os cabeças das empresas compram softwares “corporativos” que custam muito dinheiro, porém só os atualizam quando estes deixam de ter garantia do fornecedor.

– Quais linguagens a empresa utiliza (além é claro da que você já sabe que vai trabalhar)? Existe flexibilidade de utilizar novas linguagens de acordo com o projeto?

Motivo: Saber se existe a possibilidade de trabalhar com linguagens que se adequam melhor para resolver certo tipo de problema; mesmo que essa linguagem não seja “mainstream”.

– Quais versões dos softwares XXX (servidores de aplicações, bancos de dados, etc) que utilizam?

Motivo: É claro que nem todos os softwares da empresa vão ser a última tecnologia do mercado, pois é muito difícil que isso seja uma vantagem para a empresa; mas você também não vai querer ficar trabalhando com um monte de softwares desatualizados que vão dificultar seu dia-a-dia.

– Quanto à parte de testes (unitários, de integração, de regressão), qual a porcentagem de cobertura aceita por projeto?

Motivo: Aqui é onde você descobre a qualidade que a empresa tem no desenvolvimento dos seus sistemas. Se os sistemas não possuem testes ou a cobertura dos mesmos é muito baixa, se prepare para muita dor de cabeça.

– Como funciona o processo de evolução/melhorias dos sistemas? Existe um planejamento de atualização?

Motivo: É importante saber se a empresa se preocupa com a evolução dos seus sistemas e não somente com o desenvolvimento dos mesmos, porém se a qualidade dos testes for baixa, é quase certo que os sistemas terão muitos “remendos” e muitas “gambiarras”. Mas caso exista uma boa cobertura de testes, não será um grande problema atualizar versões de bibliotecas, frameworks ou mesmo a versão da linguagem usada para desenvolver o sistema.

– Possuem ambiente de integração continua? Qual o nível de automatização/integração? 

Motivo: Importante saber se a empresa está engatinhando, caminhando, ou correndo no quesito desenvolvimento de software. É uma boa notícia se a empresa utiliza um servidor de integração contínua, pois a grande maioria não utiliza. E se utiliza, é interessante saber qual o grau de avanço nessa área (como está a integração com o sistema de controle de versão, com os servidores para deploy, com as ferramentas de tracking, etc).

– Como são tratados/resolvidos os débitos técnicos dos projetos?

Motivo: Se a empresa não se preocupa com os débitos técnicos no decorrer do desenvolvimento, os problemas vão crescendo e acabam virando uma bola de neve. Onde trabalho atualmente, usamos entre 10 e 20% do tempo de cada iteração na melhoria dos sistemas (seja refactoring, atualização de bibliotecas, mudança de arquitetura/tecnologia, etc).

– Qual a atual arquitetura do(s) sistema(s) que vou trabalhar? Por exemplo: clusters, load balancing, webservices, MOMs, etc.

Motivo: Essa pergunta é muito importante para você saber se tem alguma tecnologia que você não gosta e que vai ter que utilizar e também para começar a estudar alguma dessas tecnologias caso ainda não saiba (não é porque você não conhece 100% das tecnologias que a empresa utiliza que eles vão deixar de te contratar).

– Os sistemas legados estão desenvolvidos em quais linguagens/frameworks/plataformas? Vou trabalhar/dar manutenção diretamente neles?

Motivo: Praticamente todas as empresas possuem sistemas legados antigos que são utilizados até hoje. Mas é importante saber quais as proporções da “bomba” e parar para pensar se você está afim de trabalhar com tal tecnologia.

– Existe equipe de QA? Se sim, são gerados estatísticas de problemas, qualidade, quantidade de releases antes do projeto ir para produção, etc? 

Motivo: Muitas empresas possuem equipes de QA. Se a empresa possui equipe de QA, é interessante saber se são pessoas que sentam na frente do computador e ficam “batendo a mão no teclado” na hora de inserir dados em uma tela de cadastro, por exemplo; ou se é uma equipe de QA que vai ajudar os desenvolvedores, extraindo informações importantes sobre a qualidade de cada iteração, como por exemplo: informações de quantidade e tipo de bugs nos sistemas mesmo antes de ir para produção, ajudando assim a equipe a compreender os problemas e melhorar o próprio desenvolvimento. Se não possui equipe de QA, alguém faz esse trabalho?

– Como funciona a parte de homologação e produção? Trabalham com RCs? Quem cuida desses ambientes? Como é o processo para enviar o projeto para homologação e produção?

Motivo: Importante saber o nível de burocracia dentro da empresa para colocar um sistema em produção, pois acredite, em muitas empresas, até mesmo colocar o sistema em homologação é um verdadeiro parto. Pode parecer coisa boba, mas é justamente o excesso de burocracia que acaba cansando no decorrer do seu dia-a-dia dentro da empresa.

– Sistemas em produção, normalmente entram no ar quando (durante a semana, final de semana, de dia, a noite)? Downtime de quanto tempo normalmente?

Motivo: Muito importante saber como serão suas noites e finais de semana trabalhando nessa empresa. Se a empresa trabalha com iterações curtas, mas não entra nada em produção durante o horário de trabalho normal, isso pode ser um problema ou não (depende da sua disponibilidade).

– Existe flexibilidade para instalar utilitários/aplicativos no ambiente local ? Exemplo: posso escolher o S.O., a IDE, etc?

Motivo: É interessante saber se você vai poder trabalhar com o software que você é realmente produtivo ou vai precisar se adaptar ao software que a empresa usa. Isso é algo que normalmente não se tem muita flexibilidade dentro das empresas (a não ser que seja uma startup), mas as que dão total flexibilidade estão realmente um passo à frente.

– Quais softwares são utilizados para transferência/atualização de conhecimento (wiki, intranet, etc)?

Motivo: Interessante saber, pois fica bem mais fácil buscar as primeiras informações, sobre, por exemplo, a arquitetura de um sistema, ou quais os passos para configurar softwares internos, etc. Isso mostra organização.

 

…e algumas perguntas que devem ser feitas com cuidado, pois alguns entrevistadores podem levar para o lado negativo da coisa.

– Quantidade de Horas Extras (HE)? Trabalham com banco de horas?

Motivo: Importante saber, pois se a quantidade de HE é muito grande e rotineira, pode ter certeza que esse emprego vai te consumir bastante e você vai acabar perdendo coisas importantes, como sua vida, familia, amigos, lazer, etc. Quanto ao banco de horas, é bom saber antes para não virar motivo de briga depois.

– Existe horário flexível ? Roupa de trabalho?

Motivo: Interessante saber, pois pode fazer muita diferença no seu dia-a-dia dentro da empresa ou não. Algumas pessoas gostam de chegar e sair mais cedo; outras, não. Algumas pessoas se incomodam de trabalhar de terno e gravata; outras, não. Tudo depende do seu estilo de vida e o que te incomoda.

– Existe limitação ao uso da internet?

Motivo: Pode parecer brincadeira, mas algumas empresas não liberam internet para desenvolvedores, principalmente se forem consultores. Se o entrevistador falar que, no seu caso, não é liberado o uso de internet, agradeça a oportunidade e vá embora. Simples assim.

– Empresa libera e/ou paga conferências ou cursos? Possui biblioteca de livros técnicos?

Motivo: Interessante saber se a empresa investe tempo/dinheiro nos funcionários, ou seja, em você! Essa é uma pergunta para se fazer na hora em que os benefícios estiverem sendo discutidos.

 

Pense e coloque como questão algo que te incomoda no emprego atual ou já te incomodou muito em algum emprego anterior. Não fique esperando que você tenha “sorte” de entrar em uma empresa e não passar por alguma situação indesejada novamente. Na hora da entrevista, lembre-se: questione! 😉

Read Full Post »

Para quem está familiarizado só com paradigmas de programação procedural e orientado a objetos (object-oriented), aconselho a dar uma navegada na página da wikipedia que fala sobre os paradigmas de programação existentes. Penso eu que não vale a pena gastar muito tempo estudando todos os paradigmas, porém alguns que devem ser estudados são: funcional, orientado a aspectos (aspect-oriented), dirigido a evento (event-driven), metaprogramação (metaprogramming) e orientado a serviços (service-oriented).

Paradigmas de Programação

Read Full Post »

Older Posts »