<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Building Minds - o Blog da OnCast</title>
	<atom:link href="http://onca.st/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://onca.st/blog</link>
	<description>Esse é o dump da mente de muitos casters sobre métodos ágeis, melhores práticas, engenharia de software, produtividade...</description>
	<lastBuildDate>Tue, 14 Feb 2012 01:56:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Buscando a cultura da melhoria contínua</title>
		<link>http://onca.st/blog/?p=1156</link>
		<comments>http://onca.st/blog/?p=1156#comments</comments>
		<pubDate>Tue, 14 Feb 2012 01:56:08 +0000</pubDate>
		<dc:creator>felipe.munhoz</dc:creator>
				<category><![CDATA[Comunicação]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[comunicação]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=1156</guid>
		<description><![CDATA[Muitos que acompanham a OnCast pelas mídias sociais e também nas palestras e eventos como o AgileMeeting, The Developers Conference, AgileBrazil, GURUSC, SOLISC entre outros, tem curiosidade de saber se conseguimos aplicar tudo que é falado. Um bom ponto de partida para falar sobre o que acreditamos e fazemos, é a Pirâmide Lean. Nela estão [...]]]></description>
			<content:encoded><![CDATA[
<p>Muitos que acompanham a <a href="http://oncast.com.br/" target="_blank">OnCast</a> pelas mídias sociais e também nas palestras e eventos como o <a href="http://www.oncast.com.br/agilemeeting.php">AgileMeeting</a>, <a href="http://www.thedevelopersconference.com.br/">The Developers Conference</a>, <a href="http://www.agilebrazil.com/">AgileBrazil</a>, <a href="http://gurusc.heroku.com/">GURUSC</a>, <a href="http://solisc.org.br/">SOLISC</a> entre outros, tem curiosidade de saber se conseguimos aplicar tudo que é falado.</p>
<p>Um bom ponto de partida para falar sobre o que acreditamos e fazemos, é a <a href="http://prezi.com/w6pjte9n4bsq/the-lean-pyramid/">Pirâmide Lean</a>. Nela estão resumidos os valores e princípios que buscamos aplicar diariamente em nossas atividades na OnCast.</p>
<p>Olhando para a pirâmide podemos constatar que não é uma tarefa fácil tornar realidade tantos conceitos e ainda mais de forma global partindo do setor estratégico do topo da pirâmide, passando pelo domínio de processos e finalizando pela base de sustentação que é a engenharia.</p>
<p>Apesar de não ser trivial, é fundamental que os valores e princípios sejam sim entendidos, e aplicados por todos, sem exceção na organização. Não há possibilidade de colaboração se não houver engajamento entre as equipes e setores da empresa.</p>
<p>Eu diria que esse é o diferencial que enxerguei logo que comecei meu trabalho na OnCast, pois apesar das pessoas terem conhecimentos e estilos de vida diversificados todas compartilhavam muitos dos princípios e valores presentes no manifesto ágil e nos conceitos do Lean.</p>
<p>É desta forma que vejo que conseguimos ter um ambiente de aprendizado e melhoria contínua, onde todos colaboram de verdade para o crescimento e aprimoramento dos demais. Exemplos práticos disso não faltam.</p>
<p>Na área de engenharia, por exemplo, automatização de testes é uma prática difundida no dia-a-dia, porque todos acreditam que desta forma a entrega terá mais qualidade e segurança. Testes automatizados praticamente requerem um ambiente de integração contínua, o que torna muito facilitada a tarefa de automatização de deploy, e uma cultura de continuous delivery. Estas boas práticas não fazem muito sentido se aplicadas de maneira superficial, o verdadeiro valor delas se percebe quando em conjunto.</p>
<p>De nada adianta ter uma base de engenharia com ótima cobertura de testes e ambientes automatizados se o produto entregue não atende as necessidades dos usuários que irão utilizá-lo. É neste ponto que a constante análise do valor de negócio do que está sendo desenvolvido deve ser avaliada. Tarefa essa que está representada no centro da pirâmide Lean.</p>
<p>Requisitos que não agregam valor ou que podem ser adiados, são alguns dos principais pontos que vejo as equipes avaliando a todo momento na OnCast.</p>
<p>Discussões como estas ocorrem nas mesas de trabalho entre a equipe, na cozinha da empresa onde pessoas de outras equipes acabam se envolvendo, ou até mesmo sentados nos puffs do OnCastLabs.</p>
<p>Esse ambiente de aprendizagem contínua só é possível pois a cultura está espalhada por todos os pontos da organização, o que permite o crescimento de todos como profissionais e como pessoas. Não tenho receio de confirmar que, conseguimos sim, aplicar muitos dos conceitos das metodologias ágeis que descrevemos, e se ainda falhamos em muitos deles, a própria cultura intrínseca dos princípios e valores comentados aqui nos ajudarão a sanar esse déficit.</p>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=1156</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>E você já mudou sua vida hoje?</title>
		<link>http://onca.st/blog/?p=1136</link>
		<comments>http://onca.st/blog/?p=1136#comments</comments>
		<pubDate>Sat, 04 Feb 2012 12:48:52 +0000</pubDate>
		<dc:creator>felipe.munhoz</dc:creator>
				<category><![CDATA[Outros]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=1136</guid>
		<description><![CDATA[Antes de começar a trabalhar como desenvolvedor de software, trabalhava como administrador de redes e sistemas em uma universidade, no Rio Grande do Sul, ainda durante a faculdade. Foi um grande aprendizado e que me ajuda muito nas atividades atuais de desenvolvimento de software. Gostava bastante de ser sysadmin, e achava que continuaria para sempre(!), [...]]]></description>
			<content:encoded><![CDATA[
<p>Antes de começar a trabalhar como desenvolvedor de software, trabalhava como administrador de redes e sistemas em uma universidade, no Rio Grande do Sul, ainda durante a faculdade. Foi um grande aprendizado e que me ajuda muito nas atividades atuais de desenvolvimento de software.</p>
<p>Gostava bastante de ser sysadmin, e achava que continuaria para sempre(!), entretanto quando terminei a faculdade de ciência da computação, decidi mudar. De área de atuação e de cidade.</p>
<p>Era hora de aplicar os conhecimentos de programação em C, C++, Java e Python adquiridos durante a faculdade. Mal sabia eu que tinha muito o que aprender.</p>
<p>Comecei então a procurar por empresas de desenvolvimento de software em Florianópolis, lugar que me interessava desde os tempos que vinha passar as férias. Trabalhar e ainda poder ir a praia, por que não? Só iria descobrir o trânsito alguns meses depois!</p>
<p>Encontrei várias empresas, descobri inclusive que o setor de TI em Florianópolis era maior que o de turismo e construção civil juntos.</p>
<p>Dentre as empresas que encontrei, estava a OnCast que me chamou a atenção pois mostrava ter uma abordagem diferente, moderna e com uma cultura que eu gostaria de absorver e poder contribuir.</p>
<p>Parti então para o envio do curriculum, e algumas semanas depois o RH retornou com um assessment para fazer e entregar. Naquele momento confirmei minha impressão inicial, de que era realmente uma empresa com abordagem diferente, pois foram logo para o show me the code! E os requisitos citavam a todo momento o fator qualidade. Dava cada vez mais vontade de trabalhar lá.</p>
<p>Assessment enviado, e a resposta do RH alguns dias depois dizia que eu não havia sido aprovado naquele momento, e um feedback logo abaixo que mais uma vez confirmava minhas expectativas positivas.</p>
<p>No feedback continha tanto pontos positivos quanto negativos. Foi incrível como naquele momento aquela avaliação me motivou a melhorar meu código e as tecnologias que eu poderia aprender.</p>
<p>O feedback dizia, entre outras coisas, que eu poderia ter utilizado um framework de testes(?) que poderia ser integrado ao build por uma ferramenta de integração contínua(?).</p>
<p>Eram tantas as keywords desconhecidas que levei um susto! Passado o susto, percebi que tinha muito o que estudar e praticar para ser um Engenheiro de Software como descrevia a vaga.</p>
<p>Logo em seguida participei de mais alguns processos seletivos em outras empresas e em uma delas fui aprovado. Lá tive minha primeira oportunidade de trabalhar como desenvolvedor de software.</p>
<p>Entretanto muitas das keywords do assessment não apareceram, e percebi que precisava aprendê-las por conta própria. Confesso que não foi um grande sacrifício pois foram assuntos que me interessaram desde o início, ai ficou fácil!</p>
<p>Um assunto levou à outro, e durante cerca de um ano me aprimorei bastante. Era hora de voltar a fazer o processo de seleção da OnCast novamente.</p>
<p>Enviei o curriculum novamente e algumas semanas depois recebi a resposta, realizei o assessment e desta vez passei para o próximo passo! Ir até a OnCast.</p>
<p>Cheguei lá esperando por uma entrevista, mas para mim foi mais uma conversa, ou discussão técnica. Na sala de reuniões estavam eu e mais três pessoas, cada um falou um pouco, e em seguida um deles disse: vamos fazer um review do seu código? Preciso relatar o momento de tensão?</p>
<p>Tive que defender cada linha de código com argumentação das decisões que tomei em cada caso. Muitas delas não consegui sustentar, realmente minha abordagem não era a melhor.</p>
<p>Terminado o review me convidaram para conhecer o OnCastLabs, quase não acreditei que pudesse ser verdade, no <a title="Novo OnCastLab" href="http://onca.st/blog/?p=894" target="_blank">post de inauguração do OnCastLabs</a> tem mais detalhes, tirem suas próprias conclusões!</p>
<p>Saí dali naquele dia com a certeza que aquela primeira impressão de 1 ano atrás era verdade e que eu queria fazer parte daquele time. Hoje estou na OnCast a um ano e meio e tenho certeza que evolui muito como profissional. Em outro post conto como tem sido o dia a dia por aqui!</p>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=1136</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Melhorando a qualidade dos testes com refatoração e fluent interfaces</title>
		<link>http://onca.st/blog/?p=1071</link>
		<comments>http://onca.st/blog/?p=1071#comments</comments>
		<pubDate>Mon, 16 Jan 2012 15:02:22 +0000</pubDate>
		<dc:creator>Jaime Schettini</dc:creator>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[Refatoração]]></category>
		<category><![CDATA[testes]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=1071</guid>
		<description><![CDATA[Muita gente acha que não precisa dar muita atenção à qualidade na escrita dos testes. Mas o nível de qualidade dos testes deve ser tão alto quanto o do código de produção, afinal, os testes também tem que ser mantidos por tanto tempo quanto o código de produção. No seu livro Clean Code, Uncle Bob [...]]]></description>
			<content:encoded><![CDATA[
<p>Muita gente acha que não precisa dar muita atenção à qualidade na escrita dos testes. Mas o nível de qualidade dos testes deve ser tão alto quanto o do código de produção, afinal, os testes também tem que ser mantidos por tanto tempo quanto o código de produção. No seu livro <em>Clean Code</em>, Uncle Bob conta a história de uma equipe que decidiu abrandar as regras de qualidade nos testes. Traduzindo livremente:</p>
<blockquote><p>As variáveis não tinham que ser bem nomeadas, os métodos não tinham que ser pequenos e descritivos. O código de teste não tinha que ter um bom design. Contanto que o código de teste funcionasse e cobrisse o código de produção, estava tudo bem.</p>
<p>Quanto mais o tempo passava, mais difícil era alterar os testes e adicionar novos. Vez ou outra alguns testes falhavam quando a equipe mudava o código de produção, e corrigi-los também se tornou uma tarefa árdua e demorada. As estimativas ficaram cada vez mais altas, porque mexer nos testes era muito custoso. Depois de um tempo, eles jogaram fora toda a suite de testes. Mas sem os testes, muitos bugs começaram a aparecer, a equipe perdeu a confiança em alterar o código, e no final, clientes e desenvolvedores ficaram frustados.</p>
<p>Moral da história, se o código será mantido &#8211; seja de produção ou de testes &#8211; então ele tem que ser bem escrito.</p></blockquote>
<p>Então, vamos botar em prática essa regra. A seguir, temos um exemplo de como podemos melhorar a qualidade de um teste. No último projeto que participei, uma classe de testes estava nos incomodando. Cada vez que tínhamos que alterá-la, era uma demora. Toda vez que abríamos essa classe, demorávamos entendendo novamente a sua difícil lógica. Vou mostrar a evolução do seguinte método de teste:</p>
<pre>@Test
public void actionOriginatedInClientShouldNotBeExecutedIfReceivedFromServer()</pre>
<p>O código original:</p>
<pre>actionSyncServiceTestUtils.getActionExecutionServiceMock()
.addActionExecutionListener(new ActionExecutionListener( {
    public void onActionExecution(Action action,
        ProjectContext context,
        Set inferenceInfluencedSet, boolean isUserAction) {}
});

loadProjectContext(new ProjectContextLoadCallback() {
    public void onProjectContextLoaded(ProjectContext context) {
        actionSyncServiceTestUtils.getActionExecutionServiceMock()
            .onUserActionExecutionRequest(
                new Action(context.getProject().getId(), "filho"));
    }
    public void onProjectContextFailed(Throwable caught) {
         assertEquals(SAME_CLIENT_EXCEPTION_MESSAGE, caught.getMessage());
    }
});</pre>
<div>
<p>Depois da primeira refatoração:</p>
<pre>final ArgumentCaptor eventHandlerCaptor = getEventHandlerCaptor();

createInstance();

final ActionSyncEvent eventHandler = eventHandlerCaptor.getValue();

final UUID clientId = new UUID("123");
clientHasId(clientId);
try {
     eventHandler.onEvent(new ActionSyncEvent(createRequest(clientId)));
} catch (final RuntimeException e) {
     final String sameClientExceptionMessage = "This client received the same action it sent to server.";
     assertEquals(sameClientExceptionMessage, e.getMessage());
}

assertNoActionWasExecutedInClient();</pre>
<p><span id="more-1071"></span></p>
<p>Aqui já ficou bem melhor, mas o código de stubbing e os diferentes níveis de abstração e o bloco try-catch ainda o deixavam confuso. Nessa hora veio à mente <a href="http://blogs.agilefaqs.com/2008/12/27/fluent-interfaces-improve-readability-of-my-tests/">esse post do Naresh Jain</a> e percebemos que poderíamos fazer algo parecido com os nossos testes, inserindo <em>fluent interfaces</em>. E o resultado foi esse:</p>
<pre>String clientId = "123";
given().aClientWithId(clientId);
when().aRequestArriveFrom(clientId);
verifyThat().noActionWasExecutedInClient();</pre>
<p>Aqui está outro exemplo:</p>
<pre>@Test
public void actionOriginatedInClientShouldBeExecutedOnce() throws Exception {
    int nTimes = 1;
    when().anActionWasExecutedInClient();
    verifyThat().userActionsWereExecutedInClient(nTimes);
}</pre>
<p>Assim fica bem fácil manter os testes, não é?</p>
<p>Segue o código completo abaixo (a palavra reservada &#8216;public&#8217; foi omitida para melhor visualização do código).</p>
<pre>public class ActionSyncServiceTest {
private ActionSyncService ASS;
private ActionSyncRequest request;

@Test
void actionOriginatedInClientShouldNotBeExecutedIfReceivedFromServer() {
    String clientId = "123";
    given().aClientWithId(clientId);
    when().aRequestArriveFrom(clientId);
    verifyThat().noActionWasExecutedInClient();
}

@Test
void actionOriginatedInClientShouldBeExecutedOnce() {
    int nTimes = 1;
    when().anActionWasExecutedInClient();
    verifyThat().userActionsWereExecutedInClient(nTimes);
}

@Test
void actionsNotOriginatedInClientShouldBeExecutedAfterBeingReceivedFromServer() {
    short projectId = 1;
    given().aClientWithId("one client").ignoringProjectCheck(projectId);
    when().aRequestArriveFrom("other client");
    verifyThat().nonUserActionsWereExecutedInClient();
}

@Test
void actionNotOriginatedInClientShouldNotBeExecutedAsClientAction() {
    short projectId = 1;
    given().aClientWithId("one client").ignoringProjectCheck(projectId);
    when().aRequestArriveFrom("other client");
    verifyThat().nonUserActionsWereExecutedInClient();
}

@Test
void actionReceivedFromServerThatBelongsToAProjectDifferentFrom
ClientCurrentProjectShouldNotBeExecuted() {
    int currentProject = 1;
    int otherProject = 2;
    given().aClientWithId("client").aClientWithCurrentProject(currentProject);
    when().aRequestArrivedFrom("other client", otherProject);
    verifyThat().noActionWasExecutedInClient();
}

@Test
void actionReceivedFromServerThatBelongsToTheSameProjectOf
ClientCurrentProjectShouldBeExecuted() {
    short project = 1;
    given().aClientWithId("client").aClientWithCurrentProject(project);
    when().aRequestArrivedFrom("other client", project);
    verifyThat().nonUserActionsWereExecutedInClient();
}

private Given given() {
    return new Given();
}

private When when() {
    return new When();
}

private VerifyThat verifyThat() {
    return new VerifyThat();
}

private class Given {
  private Given aClientWithId(String clientId) {
    Mockito.when(clientIdentificationProvider.getClientId())
        .thenReturn(new UUID(clientId));
    return this;
  }

  private Given aClientWithCurrentProject(int projectId) {
    Mockito.when(projectRepresentationProvider.getCurrentProjectRepresentation())
        .thenReturn(ProjectTestUtils.createRepresentation(projectId));
    return this;
  }

  private Given ignoringProjectCheck(int projectId) {
    Mockito.when(projectRepresentationProvider.getCurrentProjectRepresentation())
        .thenReturn(ProjectTestUtils.createRepresentation(projectId));
    return this;
  }
}

private class When {
  private void aRequestArriveFrom(String clientId) {
    request = RequestTestUtils.createActionSyncRequest(clientId);
    fireEvent();
  }

  private void aRequestArrivedFrom(String clientId, int projectId) {
    request = RequestTestUtils.createActionSyncRequest(clientId, projectId);
    fireEvent();
  }

  private void anActionWasExecutedInClient() {
    createInstance();
    Action action = mock(Action.class);
    actionExecution.onUserActionExecutionRequest(action);
  }

  private void fireEvent() {
    ArgumentCaptor eventHandlerCaptor = getEventHandlerCaptor();
    createInstance();

    try {
      fireActionSynEvent(request,  eventHandlerCaptor);
    }
    catch (RuntimeException e) {}
    }

  private void createInstance() {
     // Create instance of the class being tested.
  }

  private ArgumentCaptor getEventHandlerCaptor() {
    ArgumentCaptor eventHandlerCaptor = ArgumentCaptor.forClass(ServerActionSyncEventHandler.class);
    doNothing().when(serverPush).registerServerEventHandler(eq(ServerActionSyncEvent.class), eventHandlerCaptor.capture());
    return eventHandlerCaptor;
  }

  private void fireActionSynEvent(ActionSyncRequest request, ArgumentCaptor eventHandlerCaptor) {
    ServerActionSyncEventHandler eventHandler = eventHandlerCaptor.getValue();
    eventHandler.onEvent(new ServerActionSyncEvent(request));
  }
}

private class VerifyThat {
  private void nonUserActionsWereExecutedInClient() throws Exception {
    int nTimes = request.getActionList().size();
    verify(actionExecution, never())
        .onUserActionExecutionRequest(any(Action.class));
    verify(actionExecution, times(nTimes))
        .onNonUserActionRequest(any(Action.class));
    verify(actionExecution, never()).onUserActionRedoRequest();
    verify(actionExecution, never()).onUserActionUndoRequest();
  }

  private void noActionWasExecutedInClient() throws Exception {
    verify(actionExecution, never())
        .onUserActionExecutionRequest(any(Action.class));
    verify(actionExecution, never())
        .onNonUserActionRequest(any(Action.class));
    verify(actionExecution, never()).onUserActionRedoRequest();
    verify(actionExecution, never()).onUserActionUndoRequest();
  }

  private void userActionsWereExecutedInClient(int nTimes) throws Exception {
    verify(actionExecution, never())
        .onNonUserActionRequest(any(Action.class));
    verify(actionExecution, times(nTimes))
        .onUserActionExecutionRequest(any(Action.class));
    verify(actionExecution, never()).onUserActionRedoRequest();
    verify(actionExecution, never()).onUserActionUndoRequest();
  }
}
}</pre>
</div>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=1071</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SCRUM without Rigor</title>
		<link>http://onca.st/blog/?p=1068</link>
		<comments>http://onca.st/blog/?p=1068#comments</comments>
		<pubDate>Thu, 12 Jan 2012 03:24:34 +0000</pubDate>
		<dc:creator>Samuel Crescêncio</dc:creator>
				<category><![CDATA[Comunicação]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Ágil]]></category>
		<category><![CDATA[gestão de projeto]]></category>
		<category><![CDATA[Liderança]]></category>
		<category><![CDATA[processo]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[value]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=1068</guid>
		<description><![CDATA[I came across my notes from the Agile2009 conference and found a very interesting advice that reminded me how important is to have the right rigor in agile software development. Scrum without the &#8220;R&#8221; of Rigor becomes SCUM, which acronym stands for Slow, Confusing, Unreliable and Missing. But missing what? Missing confidence, assertiveness, productivity and [...]]]></description>
			<content:encoded><![CDATA[
<p>I came across my notes from the Agile2009 conference and found a very interesting advice that reminded me how important is to have the right rigor in agile software development.</p>
<p>Scrum without the &#8220;R&#8221; of Rigor becomes SCUM, which acronym stands for Slow, Confusing, Unreliable and Missing. But missing what? Missing confidence, assertiveness, productivity and other important aspects which make Scrum the preferred choice of agile project management framework for most agile companies. </p>
<p>The rigor and discipline when using any agile methodology is more than essential, it&#8217;s vital to the sake of the /company/product/project/team/. The right rigor in understanding the values and applying the principles and practices accordingly is just the difference between failure and success. Without rigor teams tend to shift the focus from valuable deliverables to wasteful rituals, which in turn aggregate nothing to them. </p>
<p>Mature agile leadership in the other hand foments discipline in taking responsibility and demonstrating ownership. Modern agile management delegates the decision making to the people who are actually performing ground work with dirty hands on the code.  This is the way to foster a flexible governance and create innovation in the company. </p>
<p>However, when ground workers have no discipline in applying the technical and methodological agile standards, they are prone to generate an immeasurable loss to the business, usually overengineering the solution and making wrong decisions.</p>
<p>Great developers make a move when, and only when they understand the value behind that move. If you understand the value, then rigorously do the minimum movement necessary to achieve that value, never more and never ever less than that.</p>
<p>If you consider becoming yourself a good agile developer/leader/whatever, think and act with discipline and rigor, providing responsibility and restlessly pursuing the goals you and your team have agreed with. </p>
<p>Remember: work hard, fail sometimes, fail fast, make your failures visible, try again, fail again, fail better.</p>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=1068</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What makes a good developer great? Writing good code or delivering value?</title>
		<link>http://onca.st/blog/?p=1066</link>
		<comments>http://onca.st/blog/?p=1066#comments</comments>
		<pubDate>Thu, 05 Jan 2012 23:50:10 +0000</pubDate>
		<dc:creator>Samuel Crescêncio</dc:creator>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[clean code]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[value]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=1066</guid>
		<description><![CDATA[What makes a good developer great? Writing good code or delivering value? Which one would you prefer? How could delivering value be sustainable without writing good code? Is that possible? In this sense, good code means to me clean code, well documented, easy to read, to understand and to extend. Moreover, good code is well [...]]]></description>
			<content:encoded><![CDATA[
<p>What makes a good developer great? Writing good code or delivering value? Which one would you prefer?</p>
<p>How could delivering value be sustainable without writing good code? Is that possible? In this sense, good code means to me clean code, well documented, easy to read, to understand and to extend. Moreover, good code is well tested, is simple, is cheap to change and is part of a robust architecture, capable of delivering an unfair competitive advantage to the business. Nevertheless, good code is essential to sustainably and reliably deliver value over time. But what if I have all that and have not delivered value? Is that sustainable? Can you keep doing that forever? Probably not. </p>
<p>And in the other hand, is it possible to deliver value with poor code? The answer is: It depends! Usually it is, but in a very short term, since it wouldn&#8217;t be sustainable in a long term. It usually depends on what kind of business you&#8217;re working on. If people may die if something goes wrong in your software, I would recommend not to rely on poor code to deliver value. But if your business can live with a poor code base for a while, just during the barely enough period you need to generate value, I would say: go for it. Seek the simplest way that could possibly generate value. Sometimes this way is so stupid that we can&#8217;t even think about it.</p>
<p>What happens though if you can deliver value in a short term with poor code? Remember that value is the only thing that can keep a business existing. If you have value, you survive. However, if you have no value, even with the best possible architecture, you do not survive &#8211; your legacy becomes waste. So, if you&#8217;re capable of delivering value with poor code, and you&#8217;re intelligent enough to apply the agile engineering practices such as refactoring to improve the existing poor code base, you can transform it into a good code base that will sustain your business in the long run.</p>
<p>Some developers may also argue that the complexity of businesses and the complexity of the human beings with ever changing minds running their business make it even worse to deliver value. These developers are right! Therefore, whether you have good or bad code, you&#8217;ll have to deal with numerous aspects other than technology in order to deliver good value. In my humble opinion, there is nothing more important in software development than delivering value. You just have to carefully think what kind of value you&#8217;re looking for and to whom it will serve. </p>
<p>So, what kind of developer you are? The one that writes good code or the one that delivers value? </p>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=1066</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A terceira onda</title>
		<link>http://onca.st/blog/?p=1050</link>
		<comments>http://onca.st/blog/?p=1050#comments</comments>
		<pubDate>Tue, 08 Nov 2011 21:41:15 +0000</pubDate>
		<dc:creator>Vitor Pelizza</dc:creator>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[china]]></category>
		<category><![CDATA[Era do conhecimento]]></category>
		<category><![CDATA[Motivação]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=1050</guid>
		<description><![CDATA[Esse post trata de um assunto que foge um pouco do foco do blog. É sobre uma discussão sobre motivação e tendências mundiais que tivemos na OnCast &#8211; apesar de não sermos (nem eu) conhecedores de sociologia ou história. Tudo começou com um vídeo do Dan Pink que o Vinicius Nunes mandou para o pessoal [...]]]></description>
			<content:encoded><![CDATA[
<p style="text-align: justify;">Esse post trata de um assunto que foge um pouco do foco do blog. É sobre uma discussão sobre motivação e tendências mundiais que tivemos na OnCast &#8211; apesar de não sermos (nem eu) conhecedores de sociologia ou história.</p>
<p style="text-align: justify;">Tudo começou com um vídeo do Dan Pink que o Vinicius Nunes mandou para o pessoal sobre motivação:</p>
<div style="text-align: center;"><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc" target="_blank"><object width="350" height="288" data="http://www.youtube.com/v/u6XAPnuFjJc" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/u6XAPnuFjJc" /></object></a></div>
<p style="text-align: justify;">Então, lembrei de uma discussão que tive em uma disciplina no MBA a alguns dias, chamada arquitetura organizacional. Em princípio achei que iria ser um sacrifício ir para a aula, ouvir o professor falando sobre organogramas, etc&#8230; Maaaasss, foi sensacional!</p>
<p style="text-align: justify;">Apesar de não ser exatamente sobre motivação, o assunto da discussão trata de tendências mundiais, que podem ser percebidas claramente através do conceito de motivação apresentado no vídeo. A pouco tempo, esse tipo de motivação &#8211; pelo propósito, pelo conhecimento &#8211; era praticamente inexistente. As empresas e as pessoas (pense em nossos pais ou avós) trabalhavam para ganhar dinheiro, adquirir coisas. A motivação <em>era</em> o dinheiro.</p>
<p style="text-align: justify;">Porém, estamos em transição! A anos atrás (200 ou 300 talvez) vivíamos em uma sociedade seguindo uma tendência artesã onde a padronização e a produção era muito pequena. Os trabalhos eram bastante manuais. Depois entramos na era do industrialismo, onde a padronização <em>foi</em> muito forte, <em>tínhamos</em> produção em massa e trabalhos bem mecânicos. E o que está acontecendo hoje? Pare para pensar quem são as empresas mais admiradas ou valorizadas no mundo: Apple, Google, Microsoft&#8230; indústrias onde o conhecimento é a base. Estamos entrando na <strong>era do conhecimento</strong>!</p>
<div style="text-align: justify;"><img class="alignleft size-medium wp-image-1051" title="china" src="http://www.oncast.com.br/blog/wp-content/uploads/2011/11/china-300x187.jpg" alt="china" width="300" height="187" /></div>
<p style="text-align: justify;">Essa mudança de onda ajuda a explica a crise nos países &#8220;desenvolvidos&#8221; (EUA, Grécia, Espanha&#8230;). Não há mudança sem crise. E isto está só no começo. Mas onde estão as indústrias? Na China, que, &#8220;atrasada&#8221; com a evolução, entrou na era industrial a pouco. O que acontece lá hoje já, e que muitos consideram um absurdo com os direitos humanos, aconteceu em outros países que já passaram por esse processo, porém hoje é mais aparente com o avanço da comunicação e a globalização. Outros países nem na era industrial estão.</p>
<p style="text-align: justify;">A China é o país que mais cresce por ano, e portanto é considerado o &#8220;novo gigante&#8221;. Porém, o que define quem é o maior? O PIB? A qualidade de vida? Há um balanço entre IDH, PIB e poluição? E qual o papel dos países que investem fortemente na mão de obra chinesa?</p>
<p>Para quem se interessar mais sobre o assunto, existem dois livros, ambos do Alvin Toffler, que estou prestes a ler:</p>
<ul>
<li>A Terceira Onda</li>
</ul>
<ul>
<li>O Choque do Futuro</li>
</ul>
<p>Abraço e boas discussões!</p>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=1050</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuous Delivery Explicado na Prática!</title>
		<link>http://onca.st/blog/?p=1042</link>
		<comments>http://onca.st/blog/?p=1042#comments</comments>
		<pubDate>Fri, 21 Oct 2011 17:35:35 +0000</pubDate>
		<dc:creator>Samuel Crescêncio</dc:creator>
				<category><![CDATA[Outros]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=1042</guid>
		<description><![CDATA[Neste vídeo Caju e eu explicamos como foi montado um processo bastante maduro de integração contínua e o que seria necessário para torná-lo num processo efetivo de Continuous Delivery.]]></description>
			<content:encoded><![CDATA[
<p>Neste vídeo Caju e eu explicamos como foi montado um processo bastante maduro de integração contínua e o que seria necessário para torná-lo num processo efetivo de Continuous Delivery.</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/FmmIARLXQWk?rel=0" frameborder="0" allowfullscreen></iframe></p>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=1042</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diferenças de um projeto com testes automatizados</title>
		<link>http://onca.st/blog/?p=1035</link>
		<comments>http://onca.st/blog/?p=1035#comments</comments>
		<pubDate>Mon, 03 Oct 2011 19:53:03 +0000</pubDate>
		<dc:creator>André Branco</dc:creator>
				<category><![CDATA[Arquitetura de Software]]></category>
		<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[Ágil]]></category>
		<category><![CDATA[cobertura]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[testes]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=1035</guid>
		<description><![CDATA[Praticamente toda a comunidade ágil, ou da indústria de TI, sabe (ou pelo menos deveria saber) da importância dos testes automatizados. Porém, apesar da importância dos testes automatizados, raros são os projetos de software que se utilizam deles, ou se utilizam com uma quantidade/qualidade satisfatória. No último projeto em que estive envolvido aqui na Oncast [...]]]></description>
			<content:encoded><![CDATA[
<p>Praticamente toda a comunidade ágil, ou da indústria de TI, sabe (ou pelo menos deveria saber) da importância dos testes automatizados.</p>
<p>Porém, apesar da importância dos testes automatizados, raros são os projetos de software que se utilizam deles, ou se utilizam com uma quantidade/qualidade satisfatória.</p>
<p>No último projeto em que estive envolvido aqui na Oncast chegamos na marca de quase 79% de cobertura de testes no nosso código, com testes unitários, de interface (quando relevante) e integração.</p>
<p><img class="alignnone size-large wp-image-1036" src="http://www.oncast.com.br/blog/wp-content/uploads/2011/10/cobertura1-1024x600.png" alt="cobertura de testes" width="1024" height="600" /></p>
<p>Não irei justificar a importância dos testes automatizados. Se você ainda não os julga importante, ou não investe o suficiente, meus pesâmes para você.</p>
<p>Ao invés disso, baseado na minha experiência nesse projeto, vou tentar descrever resumidamente como chegamos nesse número de cobertura de testes, tentando responder a uma simples pergunta que eu mesmo me fiz:</p>
<blockquote><p>&#8220;O que esse projeto teve de diferente de outros para que isso fosse possível?&#8221;</p></blockquote>
<p>O projeto teve duração de 7 meses, onde estávamos em parceria com o nosso cliente, reformulando um dos maiores portais de entretenimento do Brasil atualmente.</p>
<p>Além de um novo visual para o usuário final, também íriamos migrar os dados do portal legado e prover uma nova aplicação administrativa para a geração de conteúdo. A nossa responsabilidade foi da implementação dessa nova solução administrativa e da migração dos dados. Para o desenvolvimento dessa nova ferramenta administrativa foi utilizado Ruby on Rails.</p>
<p>Lembrando que tivemos uma série de desafios nesse projeto, como: distância com o cliente/PO, data definida para o lançamento do novo portal, mudanças na equipe, arquitetura complexa, integração tardia e por aí vai. Enfim, um cenário real que faz parte do cotidiano não só da área de TI como de outras indústrias.</p>
<p>Logo já sabemos que isso não foi o diferencial desse projeto para outros os quais já trabalhei.</p>
<p>Então, como chegamos nesse número de quase 80% de cobertura de testes?</p>
<p>Algumas das diferenças que encontrei, comparando com outros projetos que trabalhei, foram:</p>
<ul>
<li>Sabíamos da importância ainda maior de testes automatizados utilizando linguagens dinâmicas, nesse caso Ruby;</li>
<li>Apoio do nosso cliente e &#8220;product owner&#8221; Claudio Br (<a href="http://twitter.com/#!/oclaudiobr/" target="_blank">@oclaudiobr</a> &#8211; <a href="http://blog.claudiobr.com/" target="_blank">http://blog.claudiobr.com/</a>), na verdade um dos poucos PO de verdade com quem já trabalhei. Além de priorizar de maneira eficiente, sabe da importância dos testes e sempre nos incentivou;</li>
<li>Os frameworks utilizados (Rails, rspec, e várias outras gems) na maioria das vezes facilitaram a nossa vida para se implementar os testes. Ao contrário de outras linguagens e frameworks (Exemplo: java/javaee/ejb);</li>
<li>A disciplina e o profissionalismo da equipe foi fundamental. Pois mesmo com pressão de prazos, entregas, todos da equipe não abriam mão dos testes;</li>
<li>Equipe madura com uma mentalidade voltada para o TDD/BDD;</li>
<li>Integração contínua (Hudson) funcionando desde do início do projeto;</li>
<li>Atenção com a integração contínua, sempre que uma build quebrava alguém verificava o problema;</li>
</ul>
<p>Não existe regra ou receita mágica, acredito que nossas experiências (positivas ou negativas) são as melhores ferramentas para que possamos evoluir.</p>
<p>Portanto esse post, nada mais é do que um lembrete para mim, para me ajudar a não esquecer dessa experiência.</p>
<p>E meus sinceros agradecimentos a todos os meus companheiros de equipe da Oncast, que provaram que é possível sim, mesmo com as dificuldades e os obstáculos, ter um projeto com uma excelente cobertura de testes.</p>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=1035</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sua chance de sobreviver</title>
		<link>http://onca.st/blog/?p=986</link>
		<comments>http://onca.st/blog/?p=986#comments</comments>
		<pubDate>Wed, 16 Feb 2011 23:41:49 +0000</pubDate>
		<dc:creator>Samuel Crescêncio</dc:creator>
				<category><![CDATA[Metodologia]]></category>
		<category><![CDATA[comunicação]]></category>
		<category><![CDATA[engenharia de software]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[Mudanças]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=986</guid>
		<description><![CDATA[A indústria de software está mudando, já mudou &#8211; e tem muita gente que ainda não notou. Ouço com freqüência (e também repito) uma citação que diz que Ágil virou mainstream. De fato é a pura verdade. Este ano o Manifesto Ágil completa 10 anos e a Agile Alliance está preparando uma breakthrough conference para [...]]]></description>
			<content:encoded><![CDATA[
<p>A indústria de software está mudando, já mudou &#8211; e tem muita gente que ainda não notou. Ouço com freqüência (e também repito) uma citação que diz que Ágil virou mainstream. De fato é a pura verdade. Este ano o Manifesto Ágil completa 10 anos e a <a href="http://www.agilealliance.org">Agile Alliance</a> está preparando uma<em> <a href="http://agile2011.agilealliance.org/">breakthrough conference</a></em> para comemorar, avaliar o que ficou para traz e refletir sobre o que vem pela frente na indústria de software.</p>
<p>Entretanto me espanta constatar que uma parte significativa das empresas que desenvolvem software, especialmente aquelas que não tem o desenvolvimento de software como fim, ainda sofrem em ambientes caóticos e desumanos. Muitas ainda usam métodos que há pelo menos mais de uma década foram caracterizados como ineficazes para o desenvolvimento de software.</p>
<p>Em desenvolvimento de software há apenas uma grande certeza, a de que existe muita incerteza. Não existe previsibilidade em desenvolvimento de software e também não existe fórmula mágica para isto. Existe sim um conjunto de técnicas, princípios e valores que permitem um processo de desenvolvimento adaptativo e evolucionário, onde o aprendizado precisa ser reconhecido como uma base essencial para que se possa entregar valor de forma contínua e iterativa.</p>
<p>Existe também a necessidade pela colaboração irrestrita entre clientes e desenvolvedores, pela criação de ambientes maduros, onde a visibilidade é total e a confiança mútua é possível. Também não estamos livres dos desafios de conciliar as necessidades de mercado em definir orçamentos claros (e muitas vezes fixos) para escopos que geralmente são mutantes e imprevisíveis.</p>
<p>Porém, tudo isto é possível, e as respostas você encontra na pura essência do Manifesto Ágil, nos princípios do Lean, nas práticas imprescindíveis do XP e nas ferramentas do Scrum. Ainda assim, um <a href="http://prezi.com/prcg87e6nqle/the-lean-pyramid-tdc/">equilíbrio vital</a> é necessário. A aplicação inadequada todavia pode também levar projetos à morte. Portanto, se você quer sobreviver num mundo onde não temos chance de errar, mova-se agora. O mundo mudou!</p>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=986</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Novo OnCastLab</title>
		<link>http://onca.st/blog/?p=894</link>
		<comments>http://onca.st/blog/?p=894#comments</comments>
		<pubDate>Tue, 19 Oct 2010 00:39:18 +0000</pubDate>
		<dc:creator>Samuel Crescêncio</dc:creator>
				<category><![CDATA[Outros]]></category>
		<category><![CDATA[Ambiente Ágil]]></category>
		<category><![CDATA[Cultura]]></category>
		<category><![CDATA[Lean]]></category>
		<category><![CDATA[OnCastLab]]></category>

		<guid isPermaLink="false">http://onca.st/blog/?p=894</guid>
		<description><![CDATA[A OnCast Technologies é uma empresa que nasceu com o intuito de promover mudança nos antigos hábitos da indústria de software;  promover a colaboração, a responsabilidade compartilhada e a disciplina; tratar as pessoas como seres humanos e não como recursos; estimular a iniciativa e a inovação. Com isso, criamos uma cultura impar, fundamentada nos princípios [...]]]></description>
			<content:encoded><![CDATA[
<p>A OnCast Technologies é uma empresa que nasceu com o intuito de promover mudança nos antigos hábitos da indústria de software;  promover a colaboração, a responsabilidade compartilhada e a disciplina; tratar as pessoas como seres humanos e não como recursos; estimular a iniciativa e a inovação. Com isso, criamos uma cultura impar, fundamentada nos princípios e valores do Pensamento Lean e do Manifesto Ágil.</p>
<p>Com o crescimento da OnCast e fortalecimento de nossa marca, precisávamos de um espaço que pudesse materializar a nossa cultura e fomentar a disseminação dos nossos valores. Com a ajuda da designer Fernanada Dill, estávamos muito bem amparados para um novo e ambicioso projeto, a criação da nossa nova casa, o #OnCastLab. Confira abaixo algumas fotos e relatos:</p>
<p><img class="aligncenter size-full wp-image-895" title="Recepção do #OnCastLab" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_reception.jpg" alt="Recepção do #OnCastLab" width="470" height="640" /></p>
<p><img class="aligncenter size-full wp-image-913" title="oncast_reception-2" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_reception-2.jpg" alt="oncast_reception-2" width="427" height="640" /></p>
<p><img class="aligncenter size-full wp-image-908" title="oncast_meeting-room" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_meeting-room.jpg" alt="oncast_meeting-room" width="640" height="427" /></p>
<blockquote><p><em><strong>Fernanda Dill</strong></em> &#8211; a Oncast é uma empresa cuja filosofia, apaixona todas as pessoas que tem  a oportunidade de conhecê-la. E comigo, mesmo não trabalhando  diretamente, não foi diferente. Assim, foi um grande desafio criar um  espaço de trabalho que representasse os valores dessa equipe, mas  também, um prazer enorme desenvolver um ambiente comercial tão inovador.<br />
A recepção teve como objetivo principal expôr a identidade visual da  empresa, explorando as cores escolhidas para levarem a marca Oncast.  Simultaneamente os nichos com formas orgânicas e assimétricas,  transparecem a leveza e a irreverência da equipe.</p></blockquote>
<p><img class="aligncenter size-full wp-image-901" title="oncast_entry-view" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_entry-view.jpg" alt="oncast_entry-view" width="640" height="427" /></p>
<p><img class="aligncenter size-full wp-image-900" title="oncast_entry-open-space" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_entry-open-space.jpg" alt="oncast_entry-open-space" width="640" height="427" /></p>
<blockquote><p><em>Rodrigo Branas</em> &#8211; A nova sede da OnCast Technologies reflete a essência dos valores  fundamentais da empresa. É um ambiente onde o incentivo a comunicação e  colaboração são levados ao extremo! Esse novo espaço consegue unir  valores como profissionalismo e liberdade, proporcionando a todos o  melhor ambiente possível para se trabalhar e desenvolver suas  carreiras.</p></blockquote>
<p><img class="aligncenter size-full wp-image-902" title="oncast_executive_managment-room" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_executive_managment-room.jpg" alt="oncast_executive_managment-room" width="427" height="640" /></p>
<p><img class="aligncenter size-full wp-image-910" title="oncast_operating-management" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_operating-management.jpg" alt="oncast_operating-management" width="640" height="427" /></p>
<blockquote><p><strong><em>Fernanda Dill</em></strong> &#8211; Na sala de reuniões buscamos um ambiente um pouco mais tradicional e sofisticado afim de receber clientes e abrigar reuniões de planejamento da empresa. Nas salas da presidência, marketing comercial e diretoria de operações, o conceito foi  a personalização. As salas são temáticas, estampando nas paredes literalmente a identidade dos seus colaboradores.</p></blockquote>
<p><img class="aligncenter size-full wp-image-899" title="oncast_development-stations" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_development-stations.jpg" alt="oncast_development-stations" width="640" height="427" /></p>
<div>
<blockquote>
<div><strong><em>Vitor Pelizza</em></strong> &#8211; O OnCastLab é mais que um ambiente de trabalho. É um ambiente  onde estamos trocamos experiências, nos divertimos e exploramos nossas  idéias, aproveitando todo o apelo criativo. É a materialização da &#8220;cara&#8221;  da OnCast!</div>
<div>Foi sensacional a primeira reunião de integração  (nossa reunião geral) com todos confortáveis nos puffs, apresentando o  material caminhando sobre a grama, jogando um video-game no intervalo&#8230;  Sem dúvida encontramos nossa casa para tornar nossa cultura cada vez  mais forte, nosso software cada dia com mais qualidade e definitivamente  o local para conseguirmos alcançar a realização profissional e pessoal  de cada um.</div>
</blockquote>
</div>
<p><img class="aligncenter size-full wp-image-909" title="oncast_open-space" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_open-space.jpg" alt="oncast_open-space" width="640" height="427" /></p>
<blockquote><p><strong><em>Fernanda Dill</em></strong> &#8211; A área de desenvolvimento comporta até 35 pessoas. As equipes ficam integradas, porém inúmeros quadros brancos entre elas, garantem a privacidade para que cada uma possa discutir seu projeto. Os Open Spaces, posicionados na área de desenvolvimento, trazem um conceito lúdico, representado na utilização de grama sintética, puffs coloridos e adesivagens nas paredes. Esses materiais e cores, estimulam a criatividade, a interação entre os colaboradores e proporcionam momentos de descontração que potencializam os resultados das equipes.</p></blockquote>
<p><img class="aligncenter size-full wp-image-907" title="oncast_living-3" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_living-3.jpg" alt="oncast_living-3" width="640" height="427" /></p>
<p><img class="aligncenter size-full wp-image-906" title="oncast_living-2" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_living-2.jpg" alt="oncast_living-2" width="640" height="427" /></p>
<p><img class="aligncenter size-full wp-image-905" title="oncast_leaving-1" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_leaving-1.jpg" alt="oncast_leaving-1" width="640" height="427" /></p>
<p><img class="aligncenter size-full wp-image-912" title="oncast_play-station" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_play-station.jpg" alt="oncast_play-station" width="427" height="640" /></p>
<blockquote><p><strong><em>Fernanda Dill</em></strong> &#8211; Por fim, o Living, sem dúvida o espaço preferido da equipe nas horas de descanso, é um lugar de entretenimento e de convivência. Conta com uma pequena cozinha, espaço para tomar uma café, &#8220;Bater um papo&#8221; com os amigos e distrair a mente e o corpo descansando em um puff ou jogando video game.<br />
É importante destacar que aspectos ergonômicos foram a base de todo o projeto, proporcionando maior conforto aos usuários e gerando um espaço propício para que cada um desenvolva suas atividades com a máxima qualidade e performance.</p></blockquote>
<p><img class="aligncenter size-full wp-image-898" title="oncast_center-open-space" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_center-open-space.jpg" alt="oncast_center-open-space" width="640" height="427" /></p>
<p><img class="aligncenter size-full wp-image-903" title="oncast_global" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_global.jpg" alt="oncast_global" width="640" height="427" /></p>
<p><img class="aligncenter size-full wp-image-896" title="oncast_birthday-wall" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_birthday-wall.jpg" alt="oncast_birthday-wall" width="640" height="427" /></p>
<p><img class="aligncenter size-full wp-image-897" title="oncast_brand" src="http://www.oncast.com.br/blog/wp-content/uploads/2010/09/oncast_brand.jpg" alt="oncast_brand" width="640" height="427" /></p>
<blockquote><p><em><strong>Fernanda Dill</strong></em> &#8211; Um espaço nada convencional, nada tradicional, mas pronto para receber a melhor equipe de desenvolvedores e demais profissionais que a Oncast possa ter. Um ambiente pronto para fazer com que cada pessoa tenha prazer de fazer parte da Família Oncast.</p></blockquote>
<p>Este espaço é um pouco do que estamos fazendo para mudar a indústria de software. Faça parte desta mudança você também, venha nos fazer uma visita e descobrir como. Grande abraço&#8230;</p>

]]></content:encoded>
			<wfw:commentRss>http://onca.st/blog/?feed=rss2&#038;p=894</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
	</channel>
</rss>

