Mês: abril/2014

Vagas na GFT em Sorocaba e Alphaville

Não trabalho mais na GFT, porém o artigo permanece no site para referência.

Até onde eu sei, a GFT está contratando continuamente, então ainda dá para aproveitar as dicas aqui e aplicar para uma vaga lá, mas por favor não envie currículos para mim.

A GFT, empresa em que trabalho, está buscando profissionais para trabalhar com experiência Java e .NET, além de Gerentes de Projetos. A maioria das vagas é para a cidade de Sorocaba, mas há algumas de Java para Alphaville.

Por quê Sorocaba?

Para quem não sabe, eu decidi morar no interior. Em meu artigo "Morando no interior, trabalhando na capital" explico a dura rotina de morar no interior e trabalhar em São Paulo, além de listar algumas motivações que me levaram a fugir do caos urbano.

Você também não aguenta mais ficar de 2 a 5 horas no trânsito por dia? Não adianta esperar a construção de mais linhas de trens e metrô, novas linhas de ônibus e duplicação de avenidas. São Paulo não tem solução. Venha para o interior!

Além disso, Sorocaba possui várias universidades e faculdades, como UFSCAR, UNESP e FATEC. Ela fica a menos de 100 quilômetros São Paulo, sendo possível, por exemplo, fazer cursos na capital. Obviamente, não podemos comparar o mercado de trabalho com capitais e cidades metropolitanas maiores, mas Sorocaba é bem desenvolvida para uma cidade do seu porte.

Por quê a GFT?

Todos sabemos que existem poucas empresas boas para trabalhar fora das capitais brasileiras. A maioria não paga bem nem possui um plano de carreira decente. Em outras palavras: não há perspectiva de crescimento. Infelizmente, o que mais vejo é pessoas boas se formando no interior e migrando para inchar ainda mais a capital. Até quando São Paulo vai suportar isso?

Não querendo fazer propaganda, mas já fazendo, algumas empresas como a GFT nadaram um pouco contra a maré e decidiram investir no potencial dos profissionais do interior, ainda que mantendo uma unidade comercial mais próxima de São Paulo. Em minha opinião, empresas que investem nesse modelo merecem um reconhecimento.

A GFT é uma multinacional alemã e possui filiais espalhadas pela Europa e Estados Unidos. Aqui há vários projetos internacionais, então se você tiver com o Inglês afiado poderá não só praticar como também “precisar” viajar em situações específicas. Se o seu Inglês não é tão bom, junto com todos os benefícios há um curso de Inglês gratuito ministrado por uma das melhores escolas do país. Como toda boa empresa, o horário de trabalho é flexível e o ambiente não é estressante. Todas as quartas-feiras temos frutas grátis para incentivar a boa saúde.

Notas Pessoais

Posso dizer que não me arrependo da decisão de ter deixado a capital para morar em Sorocaba. Também estou gostando de trabalhar na GFT.

Há alguns dias conversei com um colega que também entrou na GFT há poucos meses. Ele veio da CI&T de Campinas. Ele disse que, comparando com o projeto em que ele estava alocado, a GFT está sendo um tanto melhor. Não quero com isso comparar as empresas, apenas dar uma noção de que a GFT não perde em nada para empresas conhecidas por serem boas para se trabalhar e que investem pesado em propaganda para divulgar isso.

Para mim tem sido um bom lugar para trabalhar. A única ressalva é que não é um ambiente ágil como uma startup ou uma empresa pequena. Como a maioria dos projetos é para o setor financeiro, há a rotineira burocracia. Nada que não seja comum quando trabalhamos com grandes instituições.

Finalmente, as vagas

Você pode conferir a lista de vagas neste link. Porém, não vá logo enviando seu currículo pelo site!

Antes de mais nada, veja o resumo das vagas*:

  • Desenvolvedor Java Pleno e Sênior: o candidato deve ter experiência com Java. Conhecer Spring bem e JPA são diferenciais.
  • Arquiteto Java: profissional com bastante experiência e Inglês fluente.
  • Engenheiro .NET: o candidato deve ter experiência na plataforma .NET e Inglês avançado.
  • Gerente de Projetos: profissional experiente para atuar em múltiplos projetos internacionais, incluindo reuniões com pessoas de vários países, com Inglês fluente.

* Leia com atenção a descrição das vagas clicando nos respectivos links pois este é um resumo que fiz por minha conta e risco.

Note que o Inglês é um grande diferencial em todas as vagas. Quanto maior o seu nível, melhor para você.

Além disso, há vagas para diferentes níveis de conhecimento. Se a empresa considerar que o seu perfil é adequado, ela vai encaixar você numa posição equivalente a sua experiência.

Quer uma ajudinha?

Todos sabem que enviar e-mail para o RH não surte tanto efeito quando uma indicação, certo?

Pois bem, se você quer entrar na GFT, estando em Sorocaba ou querendo vir para cá, entre em contato comigo pelo formulário do site ou pelo LinkedIn.

Eu mesmo irei analisar seu perfil e, se estiver dentro do que a empresa precisa, farei uma indicação ao RH e darei pessoalmente um retorno sobre o processo.

Caso tenha alguma dúvida, pode entrar em contato comigo pelos mesmos meios citados acima.

For my right to no loger use Mozilla Firefox

Alert: this article contains political issues and is based on personal opinions. If you are squeamish, please stop right now.


Thursday, April 3th, 2014.

Mozilla Foundation announces the step down of his CEO, Brendan Eich, less than two weeks of his appointment.

Brendan is, no more and no less, the creator of Javascript language and co-founder of Mozilla project and Mozilla Foundation. Event though his impressive professional history and contributions to open source community were not enough to hold his position as CEO.

As Fox News reported, there was a big pressure by some employees and many comments on Twitter because in 2008 Brendan donated one thousand dollars to support Proposition 8, a state constitutional amendment to provide that “only marriage between a man and a woman is valid or recognized in California”.

No, you don’t read it wrong. I’ll translate: a few gay right militants could not live with the idea of working to someone who thinks differently and six years ago used his own money in something they reprove.

And things are getting worse. Bumbling articles, trying justify all that, claimed that “Eich’s stance was unacceptable in Silicon Valley, a region of the business world where social liberalism is close to an universal ideology”.

Translating again: you are unacceptable to such duty unless you are a liberal and, as a consequence, support same-sex marriage.

Personal comments

I wrote this article because this is just one of many cases of intolerance inverted around the world. Alleged victims persecute and attack the “intolerant”. So, if most of the workers of a company are conservatives, can they fire their boss because he is a liberal?

I’m a Christian, on right politically, against socialism and communism, advocate of homeschooling and moderate children physical discipline and so on. Besides that, I don’t judge the professional capability, intellectual faculties or the character of my colleagues by their personal positions that certainly are different and diverse, neither I use ploys against them.

I have no problems in lead or be leaded by people that think differently. It’s part of someone’s maturity and ethics be careful in speaking about personal convictions in order to not offend others. The problem is, in today’s world, it’s not a two-way street. Soon I will renounce because someone will search out the internet to something “controversial” I published in order to demoralize me.

We live in an upside down world. Kids try to subject their parents, students their teachers, criminals the officers and minorities the majorities. Anyone who feels like a victim, offended by any reason, think he has the right to attack everyone. Grownup people are short.

I am for freedom, but not only of liberals. I am in favor that we could be free, both you and me.

Practicing my right to no longer use Mozilla Firefox anymore

For now, I can only use my right to no longer use Firefox and democratically talk about my position and invite you to do the same.

Do not support an institution that discriminates their employees by their personal convictions.

Do note participate in liberal fascist groups or discussions, that do not tolerate nothing unless their own ideas.

Uninstalling FF in 3… 2… 1…

Pelo meu direito de não mais usar o Mozilla Firefox

Atenção: este artigo contém teor político e opinativo. Se você tem estômago fraco, pare de ler agora.


Quinta-feira, 3 de abril de 2014.

A Fundação Mozilla anuncia a renúncia de seu CEO, Brendan Eich, menos de suas semanas após assumir o cargo.

Brendan é, nada mais, nada menos que o criador da linguagem Javascript e cofundador do projeto Mozilla e da Fundação Mozilla. Mas, apesar de seu impressionante histórico profissional e várias contribuições para a comunidade de código livre, isso não foi suficiente para suportar sua permanência como CEO.

Como noticiou o Fox News, houve uma grande pressão por parte de alguns funcionários e muitos comentários no Twitter porque em 2008 Brendan doou mil dólares em apoio à Proposition 8, uma proposta de emenda constitucional para defender que “apenas casamentos entre um homem e uma mulher sejam válidos ou reconhecidos na Califórnia”.

Não, você não leu errado. Vou traduzir: alguns ativistas gays não suportaram a ideia de trabalhar para alguém que pensa diferente e há 6 anos fez com seu dinheiro pessoal algo eles não aprovam.

E a coisa fica pior. Artigos desastrados, tentando justificar o ocorrido, chegam a afirmar que “a posição de Eich era inaceitável no Vale do Silício, uma região do mundo dos negócios onde o liberalismo social está próximo de uma ideologia universal”.

Traduzo novamente: você é inaceitável para exercer um cargo a menos que seja um liberal e, consequentemente, defenda o casamento entre pessoas do mesmo sexo.

Comentários pessoais

Escrevi este artigo porque este é apenas um dos muitos casos de intolerância invertida ocorrendo no mundo. As supostas vítimas perseguem e atacam o “intolerante”. Então se uma empresa tem a maioria de funcionários conservadores ela tem o direito de demitir o chefe porque ele é um liberal?

Eu sou cristão, politicamente de direita, contra o socialismo e o assistencialismo, defensor do ensino em casa (homeschooling), defensor da criação de filhos com palmadas e por aí vai. Nem por isso julgo a capacidade profissional, o intelecto ou o caráter de meus colegas por suas convicções pessoais que certamente são diferentes e diversificadas, nem uso de estratagemas para prejudicá-los.

Pessoalmente, não tenho problemas em conviver como líder ou liderado por pessoas que pensam diferente. Faz parte da maturidade e da ética de cada ser humano ter cuidado em como declarar suas convicções pessoais para não ofender aos demais. O problema é que, no mundo em que vivemos, a recíproca parece não ser verdadeira. Logo serei eu a renunciar porque alguém vai vasculhar a internet atrás de algum comentário “polêmico” que eu tenha feito para me desmoralizar.

Vivemos num mundo de cabeça para baixo, onde filhos tentam dominar os pais, alunos aos professores, bandidos aos policiais e as minorias às maiorias. A sociedade está indo para um caminho perigoso. Qualquer que se sente vítima, ofendido por qualquer motivo, acha-se no direito de atacar quem quer que seja. Gente grande que é bom tá em falta.

Eu sou a favor da liberdade, mas não apenas dos liberais. Sou a favor de que sejamos livres, você e eu também.

Exercendo o meu direito de não mais usar o Mozilla Firefox

Por enquanto, posso apenas exercer meu direito e não usar mais o Firefox, além de democraticamente emitir a minha opinião e convidar você a fazer o mesmo.

Não apoie uma instituição que discrimina seus funcionários por suas convicções pessoais.

Não participe de grupos e discursos do fascismo liberal, que não suporta nada a não ser suas próprias ideias.

Desinstalando FF em 3… 2… 1…

News about this blog!

New high: 10,000 views

This blog has grown.

In the first months, it had only about 10 daily views. The average increased continuously and today it goes beyond a hundred, with peaks of 160 views. A few days ago, this site reached ten thousand views milestone, summed up since last year June.

views-blog

New horizons: English articles

The goal of this blog is contribute to IT community. Nothing better to reach more people than using the world’s IT “official” language.

It’s with great pleasure that I announce today the launch of the internationalized version of this blog! Notice the flag on the right.

I will continue to write primarily in Portuguese. However, I’ll start to translate the current content. Portuguese speakers won’t lost anything if they just ignore the other language.

At the present, only a small part of the accesses comes from another countries. My intent is to raise the international visibility of the Brazilian community of developers through this blog, even though with such a small contribution.

But, I have to confess, there is a double intent in all that: practice my English skills. I have already written some articles on how to improve the overall English comprehension reading books. Well, it’s time to do the same in writing.

Exactly because of that I left a big yellow alert saying My English is beta. That’s right. Not only Google and other companies that adopt agile principles can put unpolished “products” in “production”. 😉

What you should to expect

Making my work and thoughts public is not always easy. As I have written, I am exposed to critique and criticism. Something published online is like a tattoo: once done, you’ll never erase it completely again. I’ll do my best to maintain the quality in a high standard.

Moreover, the issues remain divided in four big categories.

The first one contains technical tips of programming. They can be simple or complicated, but I’ll try to post those who can save the life of a poor programmer in despair. Most of this tips come from such situations that happens on sites like StackOverflow.

The second contains reflections about Software Engineering. For instance, when I write about software development problems or difficulties on estimation.

The third refers to Software Architecture. I plan to write a series of articles introducing various technologies to serve as a reference for developers. Furthermore, articles on how to choose and use specific technologies will be part of this category.

Finally, I’ll continue to share thoughts about career and professional development. I regard this as essential. My intent is to administer it continuously in order to lift some professionals from lethargy, where one day I was.

I believe the four aforementioned topics are fundamental for good Software Engineers and will produce good results if administered with right proportions.

Thank you, dear reader

Writing to nobody can be a stress reliever. But it’s much better to know you’re coming, reading, sharing and commenting.

So, thank you!

Please, keep liking, sharing and commenting.

It’s for you.

Novidades sobre o blog!

Marco: 10.000 acessos

O blog tem crescido.

Nos primeiros meses, contava com uma média de 10 visitas diárias. Esses números vêm crescendo continuamente e hoje vai além de uma centena, com picos de 160 visualizações. Há alguns dias, o site atingiu o marco de dez mil visualizações somadas desde junho do ano passado.

views-blog

Novos horizontes: postagens em Inglês

O objetivo deste blog é contribuir para a comunidade de TI de forma geral. E nada melhor para atingir mais pessoas do que usar o idioma “oficial” da TI no mundo, o Inglês.

É com grande felicidade que inauguro hoje a versão “internacionalizada” do blog! Note a bandeirinha à direita.

Calma, as postagens em Português vão continuar e serão prioridade. Entretanto, vou iniciar a tradução dos artigos já publicados. Os visitantes de fala portuguesa não perderão nenhum conteúdo se ignorarem o outro idioma.

Atualmente, apenas uma pequena parcela dos acessos tem vindo de outros países. Pretendo aumentar a visibilidade internacional da comunidade de desenvolvedores brasileiros através deste blog, ainda que com uma contribuição bem pequena.

Mas, preciso confessar, tenho um objetivo duplo nisso tudo: praticar meu Inglês. Já escrevi alguns artigos sobre como melhorar o entendimento através da leitura. Bem, chegou a hora de fazer o mesmo com a escrita.

Justamente por isso coloquei um aviso grande e amarelo de que meu Inglês está em versão beta. Isso mesmo. Não é só o Google e outras empresas que adotam práticas ágeis que podem colocar “produtos” ainda inacabados em “produção”. 😉

O que você deve esperar

Tornar meu trabalho e minhas reflexões públicas não é sempre fácil. Como já escrevi, sou suscetível à crítica. Algo que é publicado na Internet é como uma marca de tatuagem: uma vez feita, você nunca mais consegue apagá-la totalmente. Então vou fazer o possível para manter o nível de qualidade das postagens elevado.

Além disso, os temas continuam divididos basicamente em quatro grandes categorias.

A primeira contém dicas técnicas de programação. Elas podem ser simples ou complicadas, mas tentarei publicar apenas as mais úteis, que podem salvar a vida de algum pobre programador num momento de desespero. A maioria vêm de contextos como este ocorridos em sites como StackOverflow e GUJ, dos quais tenho participado.

A segunda contém reflexões sobre Engenharia de Software. Por exemplo, quando escrevo sobre problemas no desenvolvimento de software ou dificuldades da estimação.

A terceira envolve Arquitetura de Software. Pretendo escrever uma série de artigos introdutórios teóricos e práticos sobre diversas tecnologias para servir uma referência para quem está aprendendo. Além disso, artigos sobre como definir e aplicar tecnologias específicas também podem entrar nesta categoria.

Por último, continuarei a publicar reflexões sobre carreira e desenvolvimento profissional. Considero isso essencial. Pretendo ministrá-los continuamente para tirar alguns profissionais da letargia, onde eu já estive um dia.

Creio que os quatro temas principais acima são importantes para todo bom Engenheiro de Software e produzem um resultado muito bom se ministrados na proporção certa.

Obrigado, caro leitor

Escrever para ninguém ler pode até ser útil como desabafo. Mas é muito bom saber que você tem acessado, lido, compartilhado e comentado.

Então, obrigado!

E continue curtindo, compartilhando e comentando sobre o conteúdo deste blog.

Ele é feito para você.

Relative, absolute paths and other file methods in Java

The Java File class encapsulates the filesystem in a simplified manner. Its constructor accepts absolute and relative (to the working directory of the program) paths. For instance:

new File(".") //--> program's current directory

But using relative paths can cause trouble in some situations, since the working directory could be modified. Besides that, if there are input fields for file paths you should avoid relative paths unless in special cases like if the selected file is part of your program.

Checking if a path is relative

The File.isAbsolute() method gives us a hand in this task, telling if the path is absolute. Example:

File f1 = new File("..");
System.out.println(f1.isAbsolute()); //prints false

File f2 = new File("c:\\temp");
System.out.println(f2.isAbsolute()); //prints true

How to get the absolute path

Another useful method is getAbsolutePath(). It returns the absolute path to an instance of File.

Another example:

File f1 = new File("\\directory\\file.xml");
System.out.println(f1.getAbsolutePath()); //prints C:\directory\file.xml

File f2 = new File("c:\\directory\\file.xml");
System.out.println(f2.getAbsolutePath()); //prints c:\directory\file.xml

Other nice features of File

File contains various interesting features for specific use cases, such as:

  • getParentFile: returns a File pointing to the directory that contains the current file or directory.
  • getAbsoluteFile: returns another instance of File with an absolute path.
  • toURI: returns a URI (Universal Resource Identifier) that begins with file:. It’s useful to network operations.
  • isFile e idDirectory: tells if File points to a file or directory, respectively.
  • exists: tells if the file or directory really exists in filesystem.
  • canRead e canWrite: tells if you can read or write to the file, respectively.
  • createNewFile: creates a new blank file.
  • delete: removes the file or directory (if empty).
  • length: retuns the file size in bytes.
  • list e listFiles: lists files and directories, if File is a directory.
  • mkdir e mkdirs: creates a new directory, if File is a directory. The latter also creates parent directories if needed.
  • getFreeSpace: returns the available space in the device to where File is pointing to.
  • createTempFile: static method that returns an unique temporary file to be used by the application. The method deleteOnExit will delete the file at the termination of the program.

The class File also contains some important static attributes useful to read and write files in different platforms:

  • File.separator: path-name separator character. On Unix and Linux it is /, while on Windows it is \.
  • File.pathSeparator: path-separator character, in order to create a path list with various directories, like PATH system variable. On Unix and Linux it is :, while on Windows it is ;.

This article was based on my answer on StackOverflow in Portuguese!

Caminhos relativos, absolutos e outras rotinas de arquivos em Java

A classe File do Java encapsula de forma simplificada um arquivo ou diretório do sistema de arquivos local. O seu construtor pode receber caminhos absolutos ou relativos ao diretório atual do programa, por exemplo:

new File(".") //--> diretório atual do programa

O problema de usar caminhos relativos é que pode haver confusão em algumas situações, já que o diretório atual do programa pode ser modificado. Além disso, se o usuário pode digitar o caminho ou parte dele em algum campo, em geral deve-se evitar que ele use caminhos relativos, com exceção no caso de ser uma configuração do próprio programa.

Verificando se um caminho é relativo

O método File.isAbsolute() nos ajuda nessas tarefas e diz se o caminho é absoluto.

Veja um exemplo:

File f1 = new File("..");
System.out.println(f1.isAbsolute()); //imprime false

File f2 = new File("c:\\temp");
System.out.println(f2.isAbsolute()); //imprime true

Recuperando o caminho absoluto

Outro método útil é getAbsolutePath(). Ele retorna o caminho completo de uma instância da classe File.

Veja mais um exemplo:

File arquivo1 = new File("\\pasta\\arquivo.xml");
System.out.println(arquivo1.getAbsolutePath()); //imprime C:\pasta\arquivo.xml

File arquivo2 = new File("c:\\pasta\\arquivo.xml");
System.out.println(arquivo2.getAbsolutePath()); //imprime c:\pasta\arquivo.xml

Outras funcionalidades interessantes de File

A classe File possui vários métodos interessantes para situações específicas, por exemplo

  • getParentFile: retorna um File apontando para o diretório que contém o arquivo ou diretório atual.
  • getAbsoluteFile: retorna outra instância de File com o caminho absoluto.
  • toURI: retorna uma URI (Universal Resource Identifier) que começa com file:. É interessante para uso na rede.
  • isFile e idDirectory: informa se File aponta para um arquivo ou diretório, respectivamente.
  • exists: informa se o arquivo existe.
  • canRead e canWrite: informa se o arquivo pode ser lido ou gravado, respectivamente.
  • createNewFile: cria um novo arquivo em branco.
  • delete: apaga o arquivo ou diretório (se estiver vazio).
  • length: retorna o tamanho do arquivo em bytes.
  • list e listFiles: lista arquivos e diretórios, caso File seja um diretório.
  • mkdir e mkdirs: cria um diretório, caso File seja um diretório. O último também cria os diretórios “pais”, caso não existam.
  • getFreeSpace: retorna o espaço disponível na unidade para onde File está apontando.
  • createTempFile: método estático que retorna um arquivo temporário único para ser usado pelo programa. O método deleteOnExit faz com que esse arquivo seja apagado quando o programa Java terminar de executar.

Além dos métodos, a classe File possui algumas constantes (atributos estáticos) importantes para leitura e gravação de arquivos em diferentes plataformas:

  • File.separator: separador de nomes de diretórios. No Unix e Linux é /, enquanto no Windows é \.
  • File.pathSeparator: separador de vários caminhos de diretórios, para permitir criar uma lista de vários diretórios, como a variável PATH do sistema. No Unix e Linux é :, enquanto no Windows é ;.

Este artigo foi baseado na minha resposta no StackOverflow em Português!

Creative Commons O blog State of the Art de Luiz Ricardo é licenciado sob uma Licença Creative Commons. Copie, compartihe e modifique, apenas cite a fonte.