A Arte de Programar

Post on 27-Jun-2015

222 views 11 download

description

A disciplina de programação de computadores, apesar de jovem se comparada com as demais disciplinas, têm se tornado de grande importância com o passar dos anos. No entanto, mesmo com os avanços tecnológicos dos computadores, como previsto na lei de Moore, programação destes computadores ainda é uma habilidade difícil de se aprender e praticar. Desde sua concepção até a atualidade, mesmo com inúmeras tentativas tornar programação de computadores em uma atividade de mais fácil entendimento e maior acesso (seja com linguages de programação mais naturais ou com processos de desenvolvimento de software por exemplo), ainda percebe-se que é uma habilidade que poucos a dominam com propriedade, e ainda assim ela é cada vez mais necessária com o passar dos anos. Tendo em vista a crescente necessidade de pessoas com tais habilidades, as oportunidades de mercado são bastante amplas para estes profissionais. Ainda num cenário em que se observa o crescimento nos cursos de capacitação tecnológicos na área de computação, para se sobressair neste emergente mercado, seja em qualquer área de atuação em T.I., é impressindível o domínio da disciplina de programação de computadores. A arte de programar ainda é jovem e tem muito a evoluir. No atual momento, o que podemos fazer para participar dessa evolução, seja como profissionais ou mesmo como entusiastas? Como podemos nos tornar melhores programadores e assim, aprimorar ainda mais a arte em si?

Transcript of A Arte de Programar

{ A Arte de Programar}

/** * @author: Pablo Cabrera <pablo.cabrera.munoz@gmail.com> */

// Programação como Arte

{ Donald Knuth The Art of Computer Programming}

// Programação como Arte

{ Do latim ars ou artis quer dizer “habilidade” Do grego τεχνη radical para “técnica” e “tecnologia”}

// Programação como Arte

{ Necessita Disciplina, Técnica e Estilo

Produz objetos Complexos, Elegantes e de Valor }

{

}

// Computação ubíqua

{ Vários sistemas falhos e/ou inoperantes

}

// FIXME: Y2K Bug

{ Falha por conversão de sistema métrico para imperial

}

// FIXME: Mars Climate Orbiter

{ Prejuízo de U$ 440 milhões por conta de um teste que foi para produção

}

// FIXME: Knight Capital

{ Parou em alto mar por conta de uma divisão por zero

}

// FIXME: USS Yorktown

{ Aplicava dose 100x de radiação devido a uma condição de corrida

}

// FIXME: Therac-25

// Crise de Software

{ Edsger Dijkstra The Humble Programmer}

// Crise de Software

{

Projetos estourando o orçamento;

Projetos estourando o prazo;

Software de baixa qualidade;

Software não atingiam os requisitos;

Projetos ingerenciáveis;

Código difícil de manter;

}

// Inúmeras Metodologias

{

}

// Certificações de Qualidade

{

}

// Fábrica de Software

{

Linha de Montagem de Software;

Utilização de Frameworks e Processos;

Elimina codificação da camada de aplicação;

}

// Disciplina desvalorizada

{

Programação é um mal necessário;

Mão de obra não especializada;

Atividade pouco nobre/segunda classe;

}

// Cargos glorificados

{

Consultor, Analista, Arquiteto, Engenheiro…

… Implementador, de Produto, de Software,

de Sistemas, de Processo, Projetista etc

}

// Aprendizado banalizado

{

“Teach yourself PHP in 24 hours”

“Teach yourself JavaScript in 21 days”

“Perl for Dummies”

“C Programming in easy steps”

}

// Programação é Difícil

{ Peter Norvig Teach Yourself Programming in Ten Years}

// Programação é Difícil

{ 10 anos para dominar uma habilidade; 10.000 horas de prática; Exemplos: Mozart praticou durante 13 anos The Beatles tocaram por 10 anos}

// Programação é o Principal

{ Steve McConnell Code Complete}

// Programação é o Principal

{ Leva de 30% a 80% no projeto; Atividade central; Impacto de produtividade; Código é a melhor descrição formal; Atividade indispensável;}

Programming, MotherfuckerDo you speak it?

Our ValuesThey Claim to Value They Really Value We Fucking Do

Individuals and interactions Tons of billable hours Programming,

Motherfucker

Working software Tons of pointless tests Programming, Motherfucker

Customer collaboration Bleeding clients dry Programming,

Motherfucker

Responding to change

Instability and plausible deniability

Programming, Motherfucker

We think the shit on the left, is really just the con in the middle, and that we really need to just do the thing on the right… Programming,

Motherfucker.

// Cenário

{ Cada vez mais sistemas; Demanda crescente de profissionais; Escassez de talentos; Profissão do futuro; }

// Hello World!

{ Instituição de Ensino; Mentores iniciais; Conhecimento abrangente; Direcionamento inicial; Reconhecimento básico;}

// Cursos e Eventos

{ Disciplinas específicas; Baixo custo de aprendizado; Conhecer outros programadores; Marketing pessoal; Fomentar a área;}

// Já sei programar...

{ Conceitos são imprescindíveis; Tecnologia é com o que trabalhamos; Disciplinas relacionadas;}

// Conceitos

{ Conceitos são perenes; Base das tecnologias; Compartilhados entre arquiteturas e sistemas;}

// Tecnologia

{ Ferramentas disponíveis; Aplicações específicas; Diferentes domínios; }

// Trabalho em Equipe

{ Aprenda com a experiência; Ensine os mais novos; Discuta alternativas; Peça e dê feedback; Lidere e inspire;}

// Projetos distintos

{ Diversifique seus conhecimentos; Diferentes times; Torne-se auto-suficiente;}

// Learn by Doing

{ Prática leva a perfeição; Enfrente desafios; Adquira experiência;}

// Datilografia

{ Somos digitadores; Interface que usamos; Fácil de aprender;}

// Code Heroes

{ Inspire-se neles; Reconheça seu trabalho; Busque ser melhor;}

// Programadores influentes

{

}

// Orgulho de ser Programador

{ The Humble Programmer}

// Evoluir é com a gente

{

}

// Então?! Então?!

{

}