"Nada na vida é completamente errado. Até um relógio quebrado, duas vezes ao dia está marcando a hora certa."

counterstrikeOlá Pessoal! Não escondo que sou “meio” viciado em quadrinhos, games, filmes, etc. Pois bem, depois de algum tempo parado decidi voltar a jogar um dos games mais viciantes da minha adolescência: O Counter-Strike. Voltei a jogar somente para dar uma surra no pessoal do escritório (@hrosko e @andrepiresmct), mas acabei deixando-o instalado e jogando eventualmente.

Apensar das coisas não terem muito a ver uma com a outra, comecei a traçar uma linha entre Counter-Strike e Desenvolvimento de Software, uma espécie de “boas práticas” comuns para ambos. Pensei muito antes de escrever esse post, depois desencanei e vi que o máximo que pode acontecer é que essas dicas ajudem vocês a desenvolver melhor ou a jogar melhor, então vamos lá:

Não adianta ser estrela em time que está perdendo: Mesmo com o melhor jogador no seu time, não há garantias de que o mesmo será campeão. É muito mais efetivo ter membros de nível mediano e bem entrosados em um time do que ter várias “estrelas” jogando no estilo cada um por si.

Evite ser herói: Quando damos de cara com vários membros do time adversário, a melhor estratégia é “correr”. Correndo você poderá enfrentar cada adversário separadamente. Alguns desenvolvedores/times trabalham com várias estórias em simultâneo, o que dá uma falsa impressão de produtividade. Quando falamos em requisitos, a melhor estratégia também é dividir para conquistar, ou seja, ao invés de “atacar” várias ao mesmo tempo, podemos atacá-las uma de cada vez (Imagine todo o time atirando em um único membro do time adversário :) ).

90% não é 100%: É sempre melhor tirar 100% de um adversário do que 70% de dois. Um adversário com 1% de life ainda atira, e com ajuda da Lei de Murphy ele pode levar vários membros do time antes de morrer.  Em uma Sprint temos que nos concentrar em terminar cada estória antes de passar para próxima, assim, ao final da Sprint mesmo que não tenhamos concluído todas as estórias teremos algumas concluídas ao invés de todas em 90% (e nada efetivo para entregar).

Ao final de um round, devemos nos preparar para o próximo: Fases rápidas não habilitam a compra de itens no início do round, porém, ao final podemos ir a pontos específicos do mapa e comprar coletes e granadas. Estar preparado no início de uma Sprint pode fazer tanta diferença quanto lançar uma granada no início do round, mas, afinal de contas o que seria estar preparado? Poderia ser a obtenção de um conhecimento específico que adiantaria todos os requisitos em 50% de todas as estórias por exemplo.

Ser efetivo e econômico traz grandes vantagens: Se você pode acabar com um adversário com uma única bala (Headshot), por que usar 10? Quanto menos balas você gastar menos terá que recarregar durante o round, o que pode salvar sua vida. Ninguém começa no CS conseguindo 100% de Headshots, esse número vai crescendo com o tempo e experiência (pelo menos com os jogadores normais). Na área de desenvolvimento, ninguém nasce extremamente produtivo, porém, é nossa obrigação buscar aumentar a produtividade através de novos conhecimentos e/ou novas ferramentas.

Quem fica parado morre: Preciso argumentar? :)

Adaptabilidade é crucial: Você pode ter sua arma predileta, mas ela pode não ser a mais efetiva em algumas fases ou em algumas situações. Na área de desenvolvimento temos cada desenvolvedor tem sua ferramenta preferida, pode ser um linguagem, um framework, uma IDE, etc. O ideal no ramo de desenvolvimento é não ficar preso as coisas somente pela predileção, mas sim pela sua efetividade no contexto em que será aplicada.

Poderia enumerar aqui várias outras práticas que ajudam em ambas as partes, mas prefiro deixar vocês pensarem no assunto e quem sabe compartilharem aqui os seus pensamentos.

Para variar, vou jogar um pouquinho.

Abraços!

Tagged with:
 

Mercado e Carreira em Desenvolvimento de Software

"Otimismo é a fé que conduz ao sucesso." - Bruce Lee

A pedido do Prof. Lourival Cristofoletti apresentei para uma turma e Ciência da Computação na Faculdade Faesa dicas sobre o mercado e a carreira de desenvolvimento de software. Essa palestra já foi há algum tempo, mas estava organizando as apresentações no meu computador e esbarrei com essa palestra.

Engraçado como as coisas acontecem, olhando as fotos da palestra vejo que um dos coordenadores do MSDev-ES e atual membro do time de desenvolvimento da Mindworks estava lá, o Rafael Hrasko. A foto também mostra o ponto onde iniciei algumas boas amizades, afinal, ainda sou formando na Faesa.

A idéia da palestra surgiu a partir de algumas conversas com o Prof. Lourival, que sempre foca nas suas aulas em dicas sobre a carreira e no desenvolvimento profissional dos alunos. Fiquei muito feliz com a confiança depositada em mim pelo Prof. Lourival, afinal de contas, não sou tão mais velho do que os alunos daquela turma, só iniciei na área mais cedo. Depois dessa palestra, decidi escrever algumas idéias sobre Mercado e Carreira, e ingressei no time de colaboradores do Portal Minha Carreira.

Decidi gravar a palestra no formato de screencast e disponibilizá-la aqui no entuito de ajudar quem estiver começando nessa área da qual me orgulho tanto trabalhar. Espero que gostem. Aguardo o Feedback de vocês.

Screencast

Fotos

Apresentação

Tagged with:
 
"Meus seguidores em Jeet Kune Do, atendem a isso: todas as normas fixas são incapazes de adaptabilidade ou flexibilidade; a verdade está fora de todas as normas fixas." - Bruce Lee

No dia 16/06 tive a oportunidade e a honra de palestrar na faculdade UNES em Cachoeiro-ES. O Evento foi organizado pelo MIC e marcou a inauguração do mais novo prédio da faculdade. A minha palestra representou a comunidade de desenvolvedores capixabas, o MSDev-ES. A segunda palestra foi realizada pelo Cleyton Santana do grupo MSInfraES.

Falar para pessoas que estão iniciando na área de desenvolvimento de software é uma extrema responsabilidade, por isso, ao invés de falar somente sobre TDD procurei mostrar alguns problemas da área e boas práticas através do case do meu primeiro projeto de software relevante (tinha 17 ou 18). Esse projeto foi realmente traumático, porém, definiu muitos dos meus paradigmas atuais sobre a carreira e o desenvolvimento de software em geral.

Troquei muitas informações com os profissionais locais após a minha palestra, fizemos tanto networking que acabei nem assistindo a segunda palestra do evento. Outro ponto relevante é que muitas pessoas que estavam lá tinham comparecido ao Maré-VIX, evento que organizei no CET-Faesa poucos dias antes.

Fotos

Slides da apresentação

Espero que os presentes tenham gostado do evento assim como eu gostei. Agradeço ao MIC e a UNES pela oportunidade e pela confiança.

Abraços!

Tagged with:
 
"A preguiça é a mãe do progresso. Se o homem não tivesse preguiça de caminhar, não teria inventado a roda."

PrevisibilidadeA cada dia que passo na área de desenvolvimento de software percebo que a mesma é peculiar em vários aspectos. É comum pessoas de outras áreas formarem opiniões sobre a nossa área usando como referência suas áreas de conhecimento, o problemas disso é que, geralmente, só quem é da área de software consegue ter uma visão realista sobre as características e problemas da área.

Após vários debates sobre o tema, decidi fazer um post sobre Previsibilidade em desenvolvimento de software. Decidi abordar o tema em uma apresentação ao invés de escrever, pois acredito que assim consegui expressar melhor as características que fazem com que seja tão difícil na nossa área estimar o tempo de desenvolvimento dos projetos.

Veja mais sobre previbilidade em desenvolvimento de software na tag “Previsibilidade” no delicious: delicious.com/denisferrari/Previsibilidade

Fico no aguardo dos feedbacks!

Abraços!

Tagged with:
 

Guia de estudo: Exame 70-536

"Quanto mais aumenta nosso conhecimento, mais evidente fica nossa ignorância." (John F. Kennedy)

Sheldon ensinando...Como comentei no post anterior pretendo publicar todo conteúdo que tenho off-line, e o que meus alunos e colegas de trabalho mais solicitam são os resultados das pesquisas que fiz quando estava estudando para realizar as provas da Microsoft.

Como já trabalhava há algum tempo com desenvolvimento, não foi tão difícil completar os skills que eram necessários para realizar a prova com segurança, mas como estudar não mata ninguém resolvi revisar uma série de aspectos do framework que não trabalhava com tanta frequência, foi a melhor coisa que fiz. Você realmente conhece o framework .net? Reflita um pouco, respire fundo e olhe os assuntos abordados nas provas conceituais e técnicas, você vai se surpreender.

As provas e certificações não são um fim, mas sim um meio de se obter o conhecimento necessário para dominar a plataforma ou ferramenta que você trabalha, sendo assim, a postura de profissionais que acham que suas certificações os diferenciam em alguma coisa não é uma verdade absoluta, o que realmente diferencia um profissional é o fato dele saber usar corretamente o seu “cinto de utilidades“, ou seja, saber aplicar corretamente o conhecimento adquirido ao longo de sua carreira. Participei de uma mesa redonda no grupo DFTestes onde vários profissionais apresentaram suas visões sobre o assunto, o resumo está disponível no site QualidadeBR, invista um tempo para refletir sobre os comentários feitos lá.

Vamos ao que interessa, seguem os links que me ajudaram a estudar para o exame 70-536:

Página oficial do exame
http://www.microsoft.com/australia/learning/exams/70-536.mspx

E-book
http://www.free-ebooks-download.org/free-ebook/dotnet/MCTS%20Dumps/mcpd-70-536.php

Links e artigos com o conteúdo da prova

Nessa relação constam artigos do MSDN, Israel Aece e Macoratti.

Developing applications that use system types and collections

Manage data in a .NET Framework application by using .NET Framework system types

Value Types (C# Reference)
Nullable Types (C# Programming Guide)
Reference Types (C# Reference)
Attributes (C# Programming Guide)
Generic Type Parameters (C#)
Exception Class
Boxing and Unboxing (C# Programming Guide)
TypeForwardedToAttribute Class (System.Runtime.CompilerServices)

TypeForwardedToAttribute at C# Online.NET (CSharp-Online.NET)Tipos de dados em .NET

Manage a group of associated data in a .NET Framework application by using collections

BitArray Class (System.Collections)
ICollection Interface (System.Collections)
Queue Class (System.Collections)
ReadOnlyCollectionBase Class (System.Collections)
LinkedList Generic Class (System.Collections.Generic)
EqualityComparer(T) Class (System.Collections.Generic)

Israel Aéce – Trabalhando com Coleções – Parte 1
Israel Aéce – Trabalhando com Coleções – Parte 2
Israel Aéce – Trabalhando com Coleções – Parte 3
Israel Aéce – Trabalhando com Coleções – Parte 4

Manage data in a .NET Framework application by using specialized collections

BitVector32 Structure (System.Collections.Specialized)

Implement .NET Framework interfaces to cause components to comply with standard contracts

IComparable Interface (System)
IDisposable Interface (System)
IConvertible Interface (System)
ICloneable Interface (System)
IEquatable(T) Interface (System)
IFormattable Interface (System)

Liberando os objetos de forma apropriada

Control interactions between .NET Framework application components by using events and delegates

Delegate Class (System)
EventArgs Class (System)
EventHandler Delegate (System)
delegate (C#)
How to: Combine Delegates (Multicast Delegates)(C#)

Simple and Multicast Delegates in C#.net
Linha de Código – Delegates e Eventos com C#.NET

Implementing service processes, threading, and application domains in a .NET Framework application

Implement, install, and control a service

Linha de Código – Por dentro da Base Classe Library – Capítulo 11 – Criando Serviços do Windows

Develop multithreaded .NET applications

Thread Class (System.Threading)
ThreadPool Class (System.Threading)
WaitCallback Delegate (System.Threading)

Foreground and Background Threads
Linha de Código – Usando Threads e Timer em ASP.NET
Israel Aéce – Threading – Parte 1
Israel Aéce – Threading – Parte 2
Israel Aéce – Threading – Parte 3
Israel Aéce – Threading – Parte 4

Embedding configuration, diagnostic, management, and installation features into a .NET Framework application

Embed configuration management functionality into a .NET Framework application

Linha de Código – Por dentro da Base Classe Library – Capitulo 3 – Utilização de Assemblies

Manage an event log by using the System.Diagnostics namespace

EventLog Class (System.Diagnostics)
How to: Create EventLog Component Instances
How to: Read Event Log Entries

Israel Aéce – Monitoramento e depuração de aplicações – Parte 1

Manage system processes and monitor the performance of a .NET application by using the diagnostics functionality of the .NET Framework

Process Class (System.Diagnostics)
PerformanceCounter Class (System.Diagnostics)
PerformanceCounterCategory Class (System.Diagnostics)
CounterCreationData Class (System.Diagnostics)
StackTrace Class (System.Diagnostics)
StackFrame Class (System.Diagnostics)

Retrieving Information About Processes
Process.GetProcessesByName Method (String) (System.Diagnostics)
How to: View Running Processes
How to: Investigate Libraries Loaded by Processes
Israel Aéce – Monitoramento e depuração de aplicações – Parte 2
Linha de Código – Manipulando processos através da classe System.Diagnostics.Process
How to get the Process Name in C#? C# Friends

Debug and trace a .NET Framework application by using the System.Diagnostics namespace

Debug Class (System.Diagnostics)
Classe Debugger (System.Diagnostics)
Classe Trace (System.Diagnostics)
TraceSource Class (System.Diagnostics)
SourceSwitch Class (System.Diagnostics)
CorrelationManager Class (System.Diagnostics)
TraceSwitch Class (System.Diagnostics)

Israel Aéce – Criando um DebuggerVisualizer
What is the difference between the Debug class and Trace class?
Israel Aéce – Monitoramento e depuração de aplicações – Parte 2
Israel Aéce – Monitoramento e depuração de aplicações – Parte 3
Israel Aéce – Monitoramento e depuração de aplicações – Parte 4
Israel Aéce – Monitoramento e depuração de aplicações – Parte 5
Usando técnicas de Trace e Debug – Tiago Colombo – .Net

Embed management information and events into a .NET Framework application

Retrieving Collections of Management Objects
WQL (SQL for WMI) (Windows)
Windows Management Instrumentation (Windows)
Win32_Environment Class (Windows)
Win32_Service Class (Windows)
SelectQuery Class (System.Management)
ManagementQuery Class (System.Management)
ManagementObjectSearcher Class (System.Management)
ManagementOperationObserver Class (System.Management)
CompletedEventHandler Delegate (System.Management)
ObjectReadyEventHandler Delegate (System.Management)

Implementing serialization and input/output functionality in a .NET Framework application

Serialize or deserialize an object or an object graph by using runtime serialization techniques

System.Runtime.Serialization Namespace ()
StreamingContext Structure (System.Runtime.Serialization)
FormatterServices Class (System.Runtime.Serialization)
FormatterConverter Class (System.Runtime.Serialization)
Formatter Class (System.Runtime.Serialization)
ObjectManager Class (System.Runtime.Serialization)
SerializationInfo Class (System.Runtime.Serialization)

Linha de Código – Por dentro da Base Classe Library – Capítulo 6 – Serialização

Control the serialization of an object into XML format by using the System.Xml.Serialization namespace

System.Xml.Serialization Namespace ()
XmlSerializer Class (System.Xml.Serialization)

Implement custom serialization formatting by using the Serialization Formatter classes

SoapFormatter Class (System.Runtime.Serialization.Formatters.Soap)
BinaryFormatter Class (System.Runtime.Serialization.Formatters.Binary)

Access files and folders by using the File System classes

Linha de Código – Por dentro da Base Classe Library – Capítulo 5 – Manipulando o sistema de arquivos

Manage .NET Framework application data by using Reader and Writer classes

StringReader Class (System.IO)
StringWriter Class (System.IO)
TextWriter Class (System.IO)
TextReader Class (System.IO)
StreamReader Class (System.IO)
StreamWriter Classe (System.IO)
Classe BinaryWriter (System.IO)
BinaryReader Classe (System.IO)
System.IO Namespace ()

VB.NET -  Lendo e escrevendo em arquivo Textos
Linha de Código – System.IO: Criando um arquivo usando Visual Studio.NET 2005

Compress or decompress stream information in a .NET Framework application and improve the security of application data by using isolated storage

System.IO.Compression Namespace ()
DeflateStream Class (System.IO.Compression)
GZipStream Class (System.IO.Compression)
IsolatedStorageFileStream Class (System.IO.IsolatedStorage)
IsolatedStorageFile Class (System.IO.IsolatedStorage)

Como: obter armazenamentos para o armazenamento isolado
Israel Aéce – Compressão de Arquivos no .NET
Macoratti – Compactando e Descompactando arquivos
Compactando e Descompactando Arquivos com a classe GZipStream

Improving the security of .NET Framework applications by using the .NET Framework security features

Implement access control by using the System.Security.AccessControl classes

System.Security.AccessControl Namespace ()
DirectorySecurity Class (System.Security.AccessControl)
FileSecurity Class (System.Security.AccessControl)
FileSystemSecurity Class (System.Security.AccessControl)
RegistrySecurity Class (System.Security.AccessControl)
AccessRule Class (System.Security.AccessControl)
AuthorizationRule Class (System.Security.AccessControl)
AuthorizationRuleCollection Class (System.Security.AccessControl)
CommonAce Class (System.Security.AccessControl)
CommonAcl Class (System.Security.AccessControl)
CompoundAce Class (System.Security.AccessControl)
GenericAce Class (System.Security.AccessControl)
GenericAcl Class (System.Security.AccessControl)
AuditRule Class (System.Security.AccessControl)
MutexSecurity Class (System.Security.AccessControl)
ObjectSecurity Class (System.Security.AccessControl)
SemaphoreSecurity Class (System.Security.AccessControl)

Implement a custom authentication scheme by using the System.Security.Authentication classes

System.Security.Authentication Namespace ()

Encrypt, decrypt, and hash data by using the System.Security.Cryptography classes

System.Security.Cryptography Namespace ()
DES Class (System.Security.Cryptography)
DESCryptoServiceProvider Class (System.Security.Cryptography)
SHA1CryptoServiceProvider Class (System.Security.Cryptography)
SHA1 Class (System.Security.Cryptography)
DSACryptoServiceProvider Class (System.Security.Cryptography)
DSA Class (System.Security.Cryptography)
HashAlgorithm Class (System.Security.Cryptography)
TripleDES Class (System.Security.Cryptography)
RC2CryptoServiceProvider Class (System.Security.Cryptography)
RC2 Class (System.Security.Cryptography)
CryptoConfig Class (System.Security.Cryptography)
CryptoStream Class (System.Security.Cryptography)
RandomNumberGenerator Class (System.Security.Cryptography)
MD5CryptoServiceProvider Class (System.Security.Cryptography)
MD5 Class (System.Security.Cryptography)
TripleDESCryptoServiceProvider Class (System.Security.Cryptography)
HMAC Class (System.Security.Cryptography)
CryptoAPITransform Class (System.Security.Cryptography)
CspParameters Class (System.Security.Cryptography)
RijndaelManagedTransform Class (System.Security.Cryptography)
RijndaelManaged Class (System.Security.Cryptography)
ProtectedData Class (System.Security.Cryptography)
ProtectedMemory Class (System.Security.Cryptography)
AsymmetricAlgorithm Class (System.Security.Cryptography)
SymmetricAlgorithm Class (System.Security.Cryptography)

Linha de Código – Por dentro da Base Classe Library – Capítulo 8 – Criptografia
Linha de Código – Por dentro da Base Classe Library – Capítulo 8 – Criptografia
Linha de Código – Por dentro da Base Classe Library – Capítulo 8 – Criptografia

Control permissions for resources by using the System.Security.Permission classes

Code Access Security
Code Groups
Evidence
Named Permission Sets
System.Security.Permissions Namespace ()
SecurityPermission Class (System.Security.Permissions)
PrincipalPermission Class (System.Security.Permissions)
Evidence Class (System.Security.Policy)
FileIOPermission Class (System.Security.Permissions)
StrongNameIdentityPermission Class (System.Security.Permissions)
UrlIdentityPermission Class (System.Security.Permissions)
DataProtectionPermission Class (System.Security.Permissions)
IsolatedStorageFilePermission Class (System.Security.Permissions)
IUnrestrictedPermission Interface (System.Security.Permissions)
SiteIdentityPermission Class (System.Security.Permissions)
StorePermission Class (System.Security.Permissions)
ReflectionPermission Class (System.Security.Permissions)
KeyContainerPermission Class (System.Security.Permissions)
System.Security.Policy Namespace ()
PermissionRequestEvidence Class (System.Security.Policy)
ApplicationTrust Class (System.Security.Policy)
ApplicationSecurityManager Class (System.Security.Policy)
ApplicationSecurityInfo Class (System.Security.Policy)
UnionCodeGroup Class (System.Security.Policy)
NetCodeGroup Class (System.Security.Policy)
FirstMatchCodeGroup Class (System.Security.Policy)
FileCodeGroup Class (System.Security.Policy)
CodeGroup Class (System.Security.Policy)
IIdentityPermissionFactory Interface (System.Security.Policy)
IMembershipCondition Interface (System.Security.Policy)
IApplicationTrustManager Interface (System.Security.Policy)
PolicyStatement Class (System.Security.Policy)
PolicyLevel Class (System.Security.Policy)

Israel Aéce – Utilizando Code Access Security – CAS – Parte 1
Israel Aéce – Utilizando Code Access Security – CAS – Parte 2
Israel Aéce – Utilizando Code Access Security – CAS – Parte 3
Code Access Security – Wikipedia, the free encyclopedia

Implementing interoperability, reflection, and mailing functionality in a .NET Framework application

Expose COM components to the .NET Framework and .NET Framework components to COM

Platform Invoke Data Types
Linha de Código – Por dentro da Base Classe Library – Capítulo 12 – Interoperabilidade com componentes COM

Implement reflection functionality in a .NET Framework application, and create metadata, Microsoft intermediate language (MSIL), and a PE file by using the System.Reflection.Emit namespace

AppDomain Class (System)
Type Class (System)
System.Reflection Namespace ()
System.Reflection.Emit Namespace ()
MethodInfo Class (System.Reflection)
MethodBase Class (System.Reflection)
MethodBody Class (System.Reflection)
Assembly Class (System.Reflection)
AssemblyName Class (System.Reflection)
BindingFlags Enumeration (System.Reflection)
Binder Class (System.Reflection)
AssemblyBuilder Class (System.Reflection.Emit)

Linha de Código – Consultando e invocando métodos dincamicamente usando Reflection
Linha de Código – Por dentro da Base Classe Library – Capítulo 13 – Reflection
Linha de Código – Por dentro da Base Classe Library – Capítulo 13 – Reflection
Linha de Código – Por dentro da Base Classe Library – Capítulo 13 – Reflection
Linha de Código – Por dentro da Base Classe Library – Capítulo 13 – Reflection

Send electronic mail to a Simple Mail Transfer Protocol (SMTP) server for delivery from a .NET Framework application

Linha de Código – Por dentro da Base Classe Library – Capítulo 10 – Envio de Mensagens (E-mails)

Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application

Format data based on culture information

CultureInfo Class (System.Globalization)
CultureInfo.CurrentCulture Property (System.Globalization)
CompareInfo Class (System.Globalization)
RegionInfo Class (System.Globalization)
CultureAndRegionInfoBuilder Class (System.Globalization)
Using the CultureInfo Class
Formatting Numeric Data for a Specific Culture
Formatting Date and Time for a Specific Culture
Performing Culture-Insensitive String Comparisons

Using Custom Cultures—Using CultureAndRegionInfoBuilder at C# Online.NET (CSharp-Online.NET)
Israel Aéce – Globalização de Aplicações – Parte 1
Israel Aéce – Globalização de Aplicações – Parte 2
Israel Aéce – Globalização de Aplicações – Parte 3

Fique ligado, em breve estarão disponíveis outros guias de estudo.

Abraços!

Tagged with:
 

Para variar, Hello World!

"O conhecimento é o processo de acumular dados; a sabedoria reside na sua simplificação." (Martin H. Fischer)

Heróis da T.I.Depois da experiência com outro blog no ano passado, decidi reestruturar minha linha de publicações criando um blog exclusivamente para tratar de desenvolvimento de software.

Este blog é a saída que encontrei para apresentar idéias sobre a área e poder divulgar pesquisas, estudos e treinamentos. Não tenho como objetivo criar conteúdos exclusivos ou fazer propaganda, o objetivo deste blog é simplesmente ajudar a comunidade com informações técnicas e reflexões sobre práticas, metodologias e manias que fazem da nossa área uma das áreas mais interessantes para se atuar (se você não gosta de ficar acomodado :) ).

Como tenho uma série de artigos preparados e muito conteúdo off-line, grande parte das publicações terão temas técnicos sobre .net e outras plataformas, porém, não acredito que nossa área seja deficiente nesse aspecto, acredito que muitos dos nossos profissionais precisem aprender a olhar o todo independente do papel que desempenham na equipe, no projeto ou na empresa onde estão.

Como profissionais de desenvolvimento, precisamos conhecer sobre diversas áreas, entender e mapear processos, criar realidades nos sistemas de informação que muitas vezes funcionam melhor do que no mundo real. Ajudamos empresas a melhorar seus processos e a otimizar suas rotinas, sem falar que nosso trabalho cria vantagens competitivas e também reduz drasticamente custos. Realmente somos heróis do mundo moderno, porém, infelizmente somos desconhecidos, somos desenvolvedores de software.

A partir de hoje vou usar outro twitter para publicar novidades sobre a área, irei usar o twitter do blog @heroisdati.

Fiquem ligados e contribuam com feedbacks.

Abraços!

Tagged with: