Yii2: Exibindo, ordenando e filtrando Models relacionadas em uma GridView

Esse post é uma tradução livre do original http://goo.gl/qxyRxZ escrito por Antonio Ramirez

Uma das coisas que é um pouco chato de implementar no Yii2 é a classificação e filtragem de uma coluna de um widget GridView que exibe dados relacionados do modelo.

Se você tem acompanhado o Yii2 ultimamente, há uma nova forma para pesquisar os dados e está usando objetos que se estendem desde os principais modelos de entidade e marcam os atributos pesquisáveis como “seguro”. Então, como é que vamos classificar e filtrar dados relacionados em um widget GridView?

Vamos imaginar que temos as seguintes relações de um modelo chamado “Tour”:

/**
 * @return \yii\db\ActiveQuery
 */
public function getCountry()
{
    return $this->hasOne(Country::className(), ['id' => 'country_id']);
}
 
/**
 * @return \yii\db\ActiveQuery
 */
public function getCity()
{
    return $this->hasOne(City::className(), ['id' => 'city_id']);
}

E queremos mostrar o nome do país e o nome da cidade em um GridView. Para fazer isso, faça o seguinte em nosso modelo “TourSearch”:

class TourSearch extends Tour // extends from Tour see?
{
    // add the public attributes that will be used to store the data to be search
    public $city;
    public $country;
 
    // now set the rules to make those attributes safe
    public function rules()
    {
        return [
            // ... more stuff here
            [['city', 'country'], 'safe'],
            // ... more stuff here
        ];
    }
// ... model continues here

Agora podemos configurar o nosso GridView para exibir os dados relacionados:

// ... more grid configuration here
'columns' => [
    // ... more columns configuration here
    [
        'attribute' => 'city',
        'value' => 'city.name'
    ],
    [
        'attribute' => 'country',
        'value' => 'country.name'
    ],
    // ... more stuff here

Ao fazer os ajustes acima, seremos capazes de exibir dados, mas como classificar ou filtrar? Vamos fazer alguns ajustes no método de “busca” da nossa classe “TourSearch”:

public function search($params)
{
    // create ActiveQuery
    $query = Tour::find();
    // Important: lets join the query with our previously mentioned relations
    // I do not make any other configuration like aliases or whatever, feel free
    // to investigate that your self
    $query->joinWith(['city', 'country']);
 
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
 
    // Important: here is how we set up the sorting
    // The key is the attribute name on our "TourSearch" instance
    $dataProvider->sort->attributes['city'] = [
        // The tables are the ones our relation are configured to
        // in my case they are prefixed with "tbl_"
        'asc' => ['tbl_city.name' => SORT_ASC],
        'desc' => ['tbl_city.name' => SORT_DESC],
    ];
    // Lets do the same with country now
    $dataProvider->sort->attributes['country'] = [
        'asc' => ['tbl_country.name' => SORT_ASC],
        'desc' => ['tbl_country.name' => SORT_DESC],
    ];
    // No search? Then return data Provider
    if (!($this->load($params) && $this->validate())) {
        return $dataProvider;
    }
    // We have to do some search... Lets do some magic
    $query->andFilterWhere([
        //... other searched attributes here
    ])
    // Here we search the attributes of our relations using our previously configured
    // ones in "TourSearch"
    ->andFilterWhere(['like', 'tbl_city.name', $this->city])
    ->andFilterWhere(['like', 'tbl_country.name', $this->country]);
 
    return $dataProvider;
}

É isso aí … Espero que este tutorial possa ajudar.

Yii2 : Conectando a múltiplos bancos de dados

Para fazer uma ou mais conexões em um mesmo projeto do Yii2 crie um novo arquivo (com o nome que quiser) dentro da pasta config do seu projeto e coloque o seguinte conteúdo alterando os parâmetros necessários, nesse exemplo eu criei um arquivo chamado cnn2php:

<?php

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=seu-servidor;dbname=seu-bd',
    'username' => 'usuario-do-bd',
    'password' => 'senha-do-bd',
    'charset' => 'utf8',
];

Em seguida abra o seu arquivo web.php  e adicione a chamada dentro do seu component conforme abaixo:

    'components' => [
        [...]
        'db' => require(__DIR__ . '/cnn2.php'),
        [...]
    ]

Para utilizar essa segunda conexão em seu model basta criar o método getDb.

<?php

namespace app\models;
use Yii;

class Actor extends \yii\db\ActiveRecord
{
    
    public function getDb() {
        return Yii::$app->cnn2;
    }

    [...]

Depois desse ajuste você poderá consultar dados desse model direcionado a outra conexão de banco de dados.

Actor::find()->all();

Vale lembrar que a nova conexão poderá ser para qualquer banco de dados suportado pelas bibliotecas Yii DAO.

Yii2 : Plugin’s essenciais para o seu projeto

Abra seu composer.json e dentro de require adicione as linhas abaixo:

    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": ">=2.0.5",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "dmstr/yii2-adminlte-asset": "2.*",
        "kartik-v/yii2-widgets": "dev-master",
        "cloudinary/cloudinary_php": "dev-master",
        "kartik-v/yii2-editable": "*",
        "kartik-v/yii2-grid": "@dev",
        "kartik-v/yii2-mpdf": "dev-master",
        "kartik-v/yii2-checkbox-x": "*"
    },

Além das bibliotecas do próprio framework, outros três conjuntos de bibliotecas se destacam, sendo eles:

  • AdminLTE : Um painel administrativo leve e responsivo (Veja sua instalação);
  • Cloudinary : Biblioteca para envio e consumo de imagens em nuvem;
  • Kartik (Krajee) : Um conjunto de plugin’s que vão deixar seu sistema mais profissional.

Depois basta executar o comando php ../composer.phar update  dentro da pasta do seu projeto para que as bibliotecas sejam atualizadas.

Yii2 : Ambiente básico com AdminLTE

Esse é um tutorial passo-a-passo de como criar um ambiente básico usando o Yii2 Framework + AdminLTE no c9.io

Pré-requisitos: Apache 2.4, PHP 5.5 + Composer, MySQL 5.6. Certifique-se que seu ambiente esteja configurado corretamente antes de prosseguir.

Instalando o Yii2 Framework Basic

No terminal da sua workspace execute os comandos para criar seu projeto

$ php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"
$ php composer.phar create-project yiisoft/yii2-app-basic nome-da-sua-aplicacao 2.0.8

Depois de instalado o ambiente é hora de configurar o Apache

$ sudo vim /etc/apache2/sites-available/001-cloud9.conf

Ajuste o caminho nos parâmetros DocumentRoot e Directory para a pasta web do projeto.

<VirtualHost *:8080>
    DocumentRoot /home/ubuntu/workspace/nome-da-sua-aplicacao/web
    ServerName https://${C9_HOSTNAME}:443

    LogLevel info

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /home/ubuntu/workspace/nome-da-sua-aplicacao/web>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

ServerName https://${C9_HOSTNAME}
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Carregue as novas configurações

$ sudo service apache2 reload

Ambiente básico instalado e configurado

Selection_019.jpg

Instalando e configurando o AdminLTE

Volte a raiz da sua workspace e acesse a pasta do seu projeto e executando os comandos abaixo:

$ cd ~/nome-da-sua-aplicacao
$ php ../composer.phar require dmstr/yii2-adminlte-asset "2.*"

Em seguida é hora de configurar o projeto para utilizar o AdminLTE para todas as views do projeto. Vamos editar o arquivo config/web.php e adicionar as linhas abaixo:

'components' => [
    'view' => [
         'theme' => [
             'pathMap' => [
                '@app/views' => '@vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app'
             ],
         ],
    ],
],

Ao acessar novamente o seu projeto no navegador a cara dele deve estar assim

Selection_020

Com essa configuração, todas as views do projeto vão utilizar o AdminLTE, porém, talvez você queira manter as páginas públicas – SiteController – fora desse template, para isso devemos informar que todas as actions desse Controller vão utilizar outro tema:

public function actions()
{
    
    Yii::$app->view->theme->pathMap = ['@app/views' => '@webroot/themes/basic'];
    
    return [
        'error' => [
            'class' => 'yii\web\ErrorAction',
        ],
        'captcha' => [
            'class' => 'yii\captcha\CaptchaAction',
            'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
        ],
    ];
}

Nesse ponto, novos Controllers/Views vão utilizar o AdminLTE como layout e o SiteController vai utilizar o layout padrão do próprio Yii Framework.

T+

Fluig : Pesquisando solicitações

Olá, participo de um fórum de desenvolvedores Totvs Fluig um dos participantes perguntou como fazer para pesquisar solicitações que estão ou não em um Pool.

Precisei recentemente fazer um widget que tinha que tratar dessa separação de acordo com o filtro do usuário e fiz da seguinte forma.

processTask : function(group) {

    var groupUser = "%" + group + "%";

    var constraints = new Array(
            DatasetFactory.createConstraint("processTaskPK.colleagueId", groupUser, groupUser,ConstraintType.MUST, true),
            DatasetFactory.createConstraint("status", 0, 0, ConstraintType.MUST));

    // tarefas a concluir
    if ($("#searchTask").val() == 'toComplete') {
        constraints.push(DatasetFactory.createConstraint("processTaskPK.colleagueId", "%pool%", "%pool%", ConstraintType.MUST_NOT, true));
    }

    if ($("#searchTask").val() == 'inPool') {
        constraints.push(DatasetFactory.createConstraint("processTaskPK.colleagueId", "%pool%", "%pool%", ConstraintType.MUST, true));
    }

    var ds = DatasetFactory.getDataset("processTask", ['processTaskPK.colleagueId', 'processTaskPK.processInstanceId'],constraints, null);

    var dsProcessTask = [];

    for (var i = 0; i < ds.values.length; i++)
        dsProcessTask.push(ds.values[i]["processTaskPK.processInstanceId"]);

    return dsProcessTask;

}

No método acima eu retornei o código da instância (processInstanceId), dessa forma eu consegui ir até as minhas solicitações e retornar somente o que está ou não no Pool da dados do usuário.

Espero ter ajudado.

Velhas práticas dos gerentes de projeto de ERP estão com os dias contados

A gestão de projetos formal, com planejamento Waterfall, MS Project e tudo mais, parece ser um negócio que funciona cada vez menos – e a presença de um PMO certificado raramente modifica o resultado

Por Marcelo Lombardo – Publicada em 27 de janeiro de 2016 às 12h58 em CIO

Há algum tempo comecei uma saga de desconstrução do castelo de cartas que é o mundo dos ERPs tradicionais – aqueles velhos conhecidos, grandes, caros e que nunca funcionam direito. Um negócio que se arrasta às custas da falta de opção do cliente somado a um conformismo trágico. Um negócio onde vender carne de terceira ao preço de filet mignon se tornou o esporte predileto dos executivos de software da velha guarda, e onde um projeto que deu “apenas” 30% errado é encarado como uma grande vitória pelos magníficos gestores de TI.

Sei que toda a generalização é burra por natureza e que existem exceções para tudo, mas não vou perder tempo sendo politicamente correto a cada frase. Então, tenha certeza de que eu sei que o que escrevo não se aplica a todos (só a quase todos) os Gerentes de Projeto de ERP. A gestão de projetos formal, com planejamento Waterfall, MS Project e tudo mais, parece ser um negócio que funciona cada vez menos – e a presença de um PMO (do inglês Project Manager Officer) certificado (podendo até ser daqueles com um cronograma numa mão e um bastão de baseball na outra) raramente modifica o resultado, seja para o bem ou para o mal.

Para provar o meu ponto, basta olhar os resultados do Chaos Report. Segundo a pesquisa, mais de 70% dos projetos falham, e na última década esse número gigantesco de insucesso praticamente não se modificou, variando poucos pontos para lá ou para cá, ano a ano. Por outro lado, no mesmo tempo, o PMI – Project Management Institute, órgão que certifica os PMOs, ou gerentes de projeto, despejou no mercado incontáveis gerentes de projeto certificados, e a metodologia PMBok impactou milhões de profissionais em todo o mundo. Fomos inundados por uma cultura de gestão de projetos que na prática falhou miseravelmente em reverter qualquer estatística de insucesso.

Olhando mais a fundo é até pior: aproximadamente 40% dos projetos estudados no Chaos Report dos últimos anos são projetos ágeis, que não seguem nem de longe a teoria maçônica do PMI, mas que tiveram cerca de 50% de taxa de sucesso – salvando assim o índice final da estatística. Em outras palavras, se levássemos em conta apenas os projetos tradicionais com toda a carga de metodologia e com os caríssimos profissionais de gerenciamento de projeto, o índice de fracasso seria algo bem próximo a 100%.

Mas por que isso importa no nosso caso? Porque metodologias ágeis são normalmente utilizadas apenas em projetos de desenvolvimento de software, e praticamente todos os projetos de implantação de ERP seguem até hoje o tradicional modelo Waterfall/PMBok.

Ok, então concordamos que a metodologia utilizada mostra sinais claros de fadiga. Mas atribuir toda a culpa a uma metodologia é o mesmo que punir o mensageiro por uma mensagem ruim, ou ainda condenar o carro pelo acidente. A pergunta deveria ser: onde está o nosso motorista bêbado? Bem aqui, conhecido como GP (Gerente de Projeto)!

Tudo começa com a formação do GP. Ele aprendeu – e acredita nisso – que não é preciso entender nada do assunto do qual o projeto trata. Ele foi convencido por um exaustivo treinamento (que mais parece uma lavagem cerebral), que aplicando as práticas do PMBok ganha-se o poder de gerenciar qualquer tipo de projeto, de software a foguete espacial, mesmo sem entender nada sobre nenhuma dessas coisas.

Consequentemente temos um GP de um projeto de ERP que não conhece ERP ou gestão empresarial, e que usualmente odeia falar de imposto, de nota fiscal e de contabilidade. Esse motorista bêbado nos causa previsivelmente dois acidentes com vítimas fatais e ferimentos graves:

1 – Equipe desmotivada: como o GP não tem paixão alguma pelo assunto, ele não “saca” o propósito do projeto. Então ele assume o papel arcaico de um chefe que apenas segue o manual e cobra tarefas e prazos dos seus “recursos” (pois é, depois de décadas de dedicação obstinada, aquele consultor heroico, que carrega o piano, ganha o “maravilhoso” nome de recurso, que soa no ouvido como “ferramenta”, “coisa”…). Que esteja claro: não existe líder que não é apaixonado pelo assunto. Se não há paixão, o GP é no máximo um chefe, e chefe jamais, em hipótese alguma, extrai o melhor que uma equipe poderia dar.

2 – Tudo sai errado ou diferente do planejado: o GP que não conhece profundamente ERP se apoia em especialistas para tomar as suas decisões, mas esses especialistas normalmente são também “recursos” (já falei que odeio esse nome?) e possuem interesses pessoais conflitantes com os objetivos do projeto. O GP embarca hora na conversa de um, hora na conversa de outro, e quando descobre o caminho certo já é tarde. E quem paga a conta do tempo gasto com as cabeçadas? Isso é o que vem a seguir.

Independente do GP ser alvo de constante manipulação pela sua falta de conhecimento específico, de longe o problema mais cruel que ele tem que digerir é que assim como qualquer motorista sabe que se beber vai provavelmente causar acidentes, o GP sabe que sua principal missão nunca foi a de entregar o projeto. A missão real sempre foi, em português claro, “disfarçar e faturar”.

Para entender o “disfarçar e faturar”, “Mister M” vai precisar contar o segredo de três mágicas:

– A mágica do “quer rir, então me faz rir”- existem dois tipos de horas aplicadas a um projeto: as pagas pelo cliente e as glosadas, que o cliente não aceita pagar. Em praticamente todas as velhas empresas de ERP tradicional, o rendimento variável ou bônus do GP é calculado em razão do percentual de horas cobradas de seus projetos. E se o projeto foi entregue e o cliente ficou satisfeito? Isso, se acontecer algum dia, vale um troféu e um aplauso, mas grana que é bom depende dele conseguir arrancar mais dinheiro do cliente. E como o GP faz isso? Com as duas outras mágicas abaixo:

– A mágica da formalização: a burocracia é sem dúvida o paraíso dos incompetentes, pois fica fácil ocultar erros em meio a milhares de documentos e, principalmente, transferir a culpa para quem não se documentou formalmente – geralmente o cliente. Portanto, o overhead de custo de gestão é, na prática, usado pelo GP nas atividades de “cover your ass”, ou seja, o cliente paga o custo do GP fundamentalmente para o fornecedor provar que a culpa de qualquer desvio é sempre do próprio cliente.

– A mágica do contrato: todo o contrato de implantação de ERP (desses velhos, tradicionais, grandes e complicados) possui um parágrafo em letras pequenas mais ou menos assim: “os valores e quantidades de horas desse documento são estimados com base nas informações prestadas pelo cliente até o presente momento”, ou seja, na hora da venda o cliente pergunta: o sistema faz isso e aquilo de tal jeito? O vendedor responde: sim, claro!

Como ninguém gravou, quando o problema vem à tona basta o GP dizer: “bem, eu não estava lá, existe alguma evidência documentada no contrato? “ – o cliente responde gritando: “não, mas chama o cara que me vendeu aqui!”. Então basta o GP dar a resposta padrão: “putz, infelizmente ele não está mais na empresa (ou está de férias / licença paternidade / morto / internado / desaparecido)”.

Concluindo, como o cliente já gastou um caminhão de dinheiro, provavelmente não vai por tudo a perder – e o que era dele por direito vai ser entregue com mais um pacote de horas adicionais, lindamente cobradas pelo fornecedor. O GP, que no começo da profissão costumava a ficar horrorizado, depois de meia dúzia de projetos acaba achando isso normal e até mesmo correto, pulando de cabeça nesse jogo sujo e repartindo o escalpo arrancado do cliente.

Moral da história: o GP assume o papel de principal orquestrador desse jogo, seguindo as “boas práticas” descritas em “metodologias internacionalmente reconhecidas”.

Se alguém já viu um ERP desses famosos e tradicionais implantado no prazo, na qualidade e no custo previstos, me avise.

(*) Marcelo Lombardo é idealizador do produto Omie e CEO da Omiexperience

Criação de 1° super usuário no PostgreSQL

Sempre que ia instalar o PostgreSQL em algum computador eu me enrolava para criar um SUPERUSER, pois bem, eis que achei no VivaLinux o artigo abaixo que reproduzo e que foi criado pelo Alexandre (Seu sobrenome não sei) e que me ajudou muito.

Depois de instalado seu SGBD PostgreSQL, como criar seu 1° usuário? Qual a senha de root? Qual a senha padrão?

Logue-se como root, tecle “su root” ou “sudo -i” no Ubuntu (no terminal a mensagem padrão deve terminar com #). Siga os comandos abaixo:

# su postgres
# psql
postgres=# CREATE USER nomedousuario SUPERUSER INHERIT CREATEDB CREATEROLE;
postgres=# ALTER USER nomedousuario PASSWORD 'senha';

Pronto! Usuário criado.

Agora para este usuário acessar o banco de outras máquinas da rede devemos liberar se acesso no arquivo pg_hba.conf com o usuário root, siga os passos.

A localização deste arquivo varia segundo a distribuição Linux, no SUSE está em ~postgres/data/pg_hba.conf, no Ubuntu está em /etc/postgres/8.4/pg_hba.conf. Adicione a linha:

host    all         nomedousuario         0/0                   password

Para que seu usuário tenha acesso de qualquer máquina a todos os bancos de dados neste servidor. Feito isso reinicie o postgres ou recarregue com o comando:

# /etc/init.d/posgresql restart

Espero ter ajudado.

 

5 atalhos para profissionais de TI passarem da sala do servidor à sala da diretoria

Patrick Hubbard *

Publicada em 11 de setembro de 2015 às 07h51

O clima atual de incerteza econômica e a subsequente maior dependência de suas habilidades técnicas proporcionam uma oportunidade para os profissionais de TI de assumir seu lugar na mesa de negócios

Pode ser difícil ter esperanças quando a questão é a crise econômica que acomete o Brasil. No entanto, um grupo com potencial de sair ganhando nesses tempos conturbados é o de profissionais de TI. Na verdade, os dados da International Data Corporation (IDC) indicam que, apesar da agitação econômica, o mercado brasileiro de TI continua a crescer. As empresas, especialmente as dos setores bancário e de varejo, estão, mais do que nunca, em busca de profissionais de TI que os ajudem a cortar custos pela simplificação de processos com o uso eficaz da tecnologia.

Enquanto os líderes das empresas começam a encarar as habilidades e orientações dos profissionais de TI como mais críticas à tomada eficaz de decisões de negócios e passam a contratá-los, os profissionais de TI ainda continuam tolhidos pela impressão de que seu lugar é na sala do servidor, não na sala da diretoria. Entretanto, o clima atual de incerteza econômica e a subsequente maior dependência de suas habilidades técnicas proporcionam uma oportunidade para os profissionais de TI de superar essa percepção e assumir seu lugar na mesa de negócios.

Para tanto, os profissionais de TI precisam ter algumas coisas em mente:

Falar a língua
Aqueles que vivem fora da sala do servidor costumam ter pavor do jargão e dos termos técnicos tão característicos dos gerentes de TI. A cultura popular não ajudou muito a desfazer essa imagem, mas os profissionais de TI podem provar que o seu lugar é na sala da diretoria, concentrando-se em traduzir informações técnicas em termos leigos. Ser capaz de explicar de maneira sucinta e paciente como um sistema funciona dará aos executivos e a outros líderes da empresa maior confiança, não apenas na tecnologia que está sendo usada para melhorar os negócios, mas também no profissional de TI. Os profissionais de TI podem aprimorar seu domínio do jargão de negócios conversando com seus colegas em vendas, marketing e RP – eles estão mais bem posicionados para obter dicas de comunicação eficazes e ajudar a explicar melhor uma tecnologia complexa.

Concentrar o foco em ações, não em recursos
Os profissionais de TI costumam enfatizar as especificações e os recursos das soluções, em vez de ressaltar o que elas podem fazer para ajudar a atingir as metas gerais da empresa. Em vez de apenas descrever os recursos da tecnologia, eles devem colocá-los em termos das ações da empresa – explicar o que a empresa ganhará ao usar uma tecnologia, em vez de apenas informar o que ela faz a partir de uma perspectiva técnica. Para fazer isso de forma mais eficaz, os profissionais de TI precisam cultivar um conhecimento dos objetivos dos líderes da empresa a partir de uma visão mais abrangente.

Usar os dados para definir melhores métricas
Os gerentes de TI têm acesso a vastas quantidades de dados organizacionais, muitos dos quais podem ser usados para otimizar processos mais amplos da empresa, bem como a entrega de produtos/serviços. Por meio do desenvolvimento de uma visão geral satisfatória desses dados e do uso de ferramentas que possam rastreá-los com eficácia, eles podem definir novos KPIs e métricas que não sejam apenas quantificáveis, mas também diretamente correlacionados com o desempenho da empresa. Rastrear o tráfego da rede, por exemplo, faz sentido tanto para campanhas de marketing (navegadores externos) quanto para iniciativas de trabalho flexível (dispositivos dos funcionários). Assim que os profissionais de TI identificam as maiores necessidades da empresa em jogo, eles podem usar esse conhecimento para informar melhor as metas definidas pela empresa e como medi-las.

Ser a mão de obra dos executivos na linha de frente
Com frequência, os profissionais de TI interagem com um amplo espectro de funcionários e clientes, muito mais intensamente do que os executivos têm a chance de fazer. E embora relatórios isolados de “meu computador não liga” possam não ter relevância para a estratégia da empresa, é provável que o profissional de TI atento fique por dentro das tendências de missão crítica relevantes, como qualidade de serviço insatisfatória, aumento das interrupções ou hardware com defeito. Ao transmitirem esses problemas aos superiores e fornecerem a assistência necessária, os profissionais de TI podem fazer muito para impedir que eles se agravem ou identificar novas oportunidades de crescimento da empresa. Os executivos serão gratos por isso.

Lembrar que habilidades técnicas continuam sendo o fator decisivo
Os profissionais de TI não devem se esquecer nunca do que os colocou na posição em que já se encontram: suas habilidades técnicas. Além de aprimorar suas habilidades relativas à tecnologia existente, os profissionais de TI devem estar sempre a par de novas tendências, como a nuvem, redes definidas por software e hiperconvergência, e buscar desenvolver habilidades e conhecimentos também nessas áreas. Os profissionais de TI podem usar essa nova competência tanto para cumprir quanto para gerenciar as expectativas dos líderes da empresa. Isso dará a eles a credibilidade para estimular a adoção de novas tecnologias onde elas fazem mais sentido e controlar o uso de tecnologias supérfluas onde não for relevante.

Embora as dificuldades decorrentes da crise financeira sejam de longo alcance, pôr em prática as dicas acima pode ajudar os profissionais de TI a aproveitar a oportunidade única de assumirem um papel mais relevante no processo de tomada de decisões da empresa.

(*) Patrick Hubbard é diretor de marketing de produtos técnicos na SolarWinds

Salário baixo é o principal motivo do alto turnover em TI

Da Redação, CIO Insider

Publicada em 31 de agosto de 2015 às 07h25

A constatação é de uma pesquisa realizada pela Assespro-RS junto a mais de 1 mil profissionais de todo o Brasil

Trabalhadores de TI consideram que o salário abaixo da média de mercado é o principal motivo para buscar uma oportunidade profissional em outra empresa. É o que revela pesquisa realizada pela Assespro-RS junto a mais de 1 mil profissionais de todo o Brasil.

Em segundo lugar na lista dos fatores primordiais vem a falta de organização e de processos das companhias, uma vez que a área trabalha, fundamentalmente, com projetos que prescindem de alinhamento entre os participantes.

A terceira razão identificada no estudo é o ambiente organizacional. “Ou seja, os profissionais buscam desenvolver seu trabalho onde o clima seja favorável à permanência das pessoas”, estampa o relatório da entidade.

A pesquisa também sinalizou outro importante motivo para o turnover: quando o funcionário não concorda com o modelo de gestão da empresa.

Além disso, os profissionais de TI consideram muito a cultura da empresa e preferem trabalhar em locais cujos padrões de comportamento e valores organizacionais correspondam aos seus valores pessoais. Desde o momento da contratação, a transparência por parte da organização acerca dos seus valores e políticas é uma forma mais assertiva de selecionar novos funcionários.

“Com esta pesquisa temos a evidência de que as empresas necessitam criar programas mais amplos e estratégicos, capazes de compreender esses cinco itens em sua totalidade”, destaca Andrea Teixeira, diretora de recursos humanos da Assespro-RS.

Com base nas respostas dos participantes, a entidade listou alguns pontos com orientações para que as empresas minimizem problemas e retenham talentos. Confira:

1. Mantenha sua pesquisa salarial atualizada. Conheça o mercado e seus concorrentes. Os salários ofertados devem estar de acordo com as práticas adotadas pelo mercado. Porém, não é somente isso. É importante criar formas de benefícios flexíveis em que se consegue entender qual a maior necessidade das pessoas, considerando o que é mais importante para elas.

2. Não prometa aquilo que não se consegue cumprir. A transparência na hora de oferecer o trabalho é fundamental para que ambos os lados estejam satisfeitos. Isso vale tanto relativo às tarefas quanto as possibilidades de crescimento.

3. Prepare “gestores de pessoas”. Os líderes empresariais são os grandes responsáveis por manter um bom clima de trabalho.

4. O seu modelo de gestão pode ser flexível sim. Na era da inovação, por que não inovar adotando um novo modelo de gestão? O modelo de gestão vem de cima. Portanto, treine seus líderes.

5. Inove e melhore seu processo seletivo. Contrate pessoas em que os valores da empresa estão de acordo com os valores pessoais. As novas gerações exigem feedback constante. Todos merecem. Adote definitivamente essa prática.

Por que os desenvolvedores têm mais poder do que você pensa

Eric Knorr, da InfoWorld
Publicada em 24 de agosto de 2015 às 19h03

CEO da Twilio, Jeff Lawson, diz que o aumento da demanda por mais e melhores software está colocando os desenvolvedores no comando

Jeff Lawson é um bom exemplo da ascensão dos desenvolvedores.

Hoje, ele é CEO da queridinha da Economia da API, a Twilio, uma plataforma de nuvem que oferece serviços de telecomunicações, por intermédio de APIs, a clientes como a Home Depot e a Uber. Mas há 20 anos, ele era mais um dos muitos estudantes de ciência da computação que descobriram o poder da Internet e decidiram tentar construir aplicativos Web.

Naquela época, diz Lawson, ele fez o que qualquer outro jovem desenvolvedor com obsessão pela Web fez: baixou uma cópia ilegal do popular servidor de aplicativos ColdFusion e começou a construir. Cinco anos mais tarde, quando se tornou o CTO da StubHub, Lawson escolheu o ColdFusion novamente, porque o conhecia muitíssimo bem, por dentro e por fora.

Quando a StubHub decolou, Lawson acabou comprando milhares de cópias do ColdFusion, tudo por causa de uma decisão que o transformou em um codificador neófito. "Aprendi, desde cedo, que o desenvolvedor é muito influente na determinação das ferramentas que a empresa pode usar para resolver os seus problemas", afirma o executivo.

E nessa crença reside a essência da Twilio. Seus cliente são programadores, capazes de identificar imediatamente o benefício de usar APIs de serviços de telecomunicações na nuvem em vez de criá-los e implantá-los localmente.

De acordo com a Lawson: "Quando fundamos a Twilio, em 2008, eu tinha um monte de pessoas inteligentes me dizendo que não podia construir uma empresa em torno de desenvolvedores. Simplesmente porque os desenvolvedores não controlavam o talão de cheques. Não decidiam a aquisição de tecnologia… Bem, essas pessoas estavam pensando no mundo tal como ele foi há 25 anos, quando todos os seus projetos de software custavam milhões de dólares e levavam vários anos para serem implementados".

O mundo está muito diferente agora, diz Lawson, com os desenvolvedores desfrutando de crescente influência sobre as decisões de compra de tecnologia. Estão aí as pesquisas da InfoWorld comprovando isso.

Com metodologias de Desenvolvimento Ágil e DevOps, as empresas estão muito mais inclinadas a prototipar e construir seu próprio software, com a participação direta das partes interessadas no negócio, em vez de licenciá-lo. APIs públicas, como as da Twilio, seguem esse modelo, diz Lawson.

"Estamos fornecendo os blocos de construção de infraestrutura que os desenvolvedores precisam para fazer o seu trabalho de forma mais eficaz, e para tirar pedaços de aplicações – APIs combináveis ​​- e uni-las de forma a criar soluções únicas para o problema que a empresa tem. Temos reduzido de forma tão drástica as barreiras para a adoção – você pode começar com algumas linhas de código e alguns dólares – que dá para começar a construir o protótipo já mostrando a sua potencialidade de negócio, experimentando até encontrar a solução certa para o problema que a empresa tem. Agora os desenvolvedores se tornam influentes nas decisões de tecnologia da empresa".

Essa crescente influência aconteceu naturalmente. As empresas entendem que a diferenciação passa pelo uso de mais e melhores aplicações Web e aplicativos móveis, para interagirem com os clientes e parceiros -, bem como pela constante evolução dos principais aplicativos que as tornam únicas.

O forte aumento de demanda por código, que inclui um compromisso de melhoria contínua, simplesmente não pode ser atendido se os desenvolvedores tiverem que construir a partir do zero.

APIs públicas, como aquelas ofertas Twilio, juntamente com projetos de código aberto e as plataformas de nuvem sobre a qual as aplicações são construídas, fazem parte do jogo. Quem deve escolher qual desses recursos para usar? Os desenvolvedores, que realmente trabalham com eles, e não um CIO.

Como diz Lawson, as barreiras para a adoção caíram tão baixo, que há pouco risco em tentar, digamos, um serviço de nuvem em relação a outro. E esse modelo de tentativa e erro antecipado terá um efeito importante sobre a forma como os clientes corporativos gastam seu orçamento de tecnologia.