tag:blogger.com,1999:blog-69992682024-03-08T05:55:58.409-08:00The ProgramalistEspaço para expor minhas idéais e estudar novas possibilidadesFelipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.comBlogger58125tag:blogger.com,1999:blog-6999268.post-86060723927127333102023-08-30T09:46:00.007-07:002023-08-30T09:46:58.525-07:00Construindo Aplicações Robustas em C# .NET Core: Web API Owin Self-Host, Topshelf e RabbitMQ<p>Olá pessoas, faz um tempo que não escrevo sobre temas voltados a código e mão na massa, mas hoje deu vontade!</p><p>No mundo da programação, construir aplicações robustas e escaláveis é sempre um desafio emocionante. Hoje, vou compartilhar com vocês uma abordagem poderosa para alcançar exatamente isso usando algumas tecnologias incríveis: Web API Owin Self-Host, Topshelf e RabbitMQ. Vamos explorar como essa combinação pode elevar suas aplicações .NET Core para um novo nível de flexibilidade e confiabilidade.</p><p><br /></p><p><b>Web API Owin Self-Host: Liberdade na Criação de APIs</b></p><p><br /></p><p>A construção de APIs é uma parte essencial do desenvolvimento de software moderno. A Web API Owin Self-Host oferece uma abordagem única para criar APIs em C# .NET Core. Em vez de depender de servidores tradicionais como o IIS, você pode criar um host autocontido usando a Owin (Open Web Interface for .NET). Isso concede a você um controle incrível sobre o ciclo de vida da aplicação e suas configurações de hospedagem.</p><p><br /></p><p>Com a Web API Owin Self-Host, você pode criar APIs RESTful que podem ser hospedadas em praticamente qualquer ambiente compatível com .NET Core. Isso é particularmente útil para microsserviços e soluções que precisam ser implantadas rapidamente de maneira independente.</p><p><br /></p><p><b>Topshelf: Transformando Aplicações em Serviços Windows</b></p><p><br /></p><p>Agora, vamos mergulhar na criação de serviços Windows elegantes com o auxílio do Topshelf. Essa biblioteca permite que você transforme seus aplicativos em serviços Windows de forma eficaz, sem precisar lidar com a complexidade das configurações de um serviço tradicional.</p><p><br /></p><p>O Topshelf simplifica a criação de serviços Windows a partir de aplicativos .NET Core. Isso é especialmente útil quando você deseja que seus aplicativos executem em segundo plano, realizando tarefas agendadas ou processamento contínuo.</p><p><br /></p><p><b>RabbitMQ: Comunicação Confiável e Escalável</b></p><p><br /></p><p>A comunicação eficaz entre os diversos componentes de uma aplicação é fundamental. É aí que entra o RabbitMQ, um sistema de mensageria confiável e altamente escalável. Ao usar o RabbitMQ, você pode implementar uma arquitetura de mensagens assíncronas, permitindo que diferentes partes da sua aplicação se comuniquem de maneira eficiente e resiliente.</p><p><br /></p><p>Integrar o RabbitMQ com o .NET Core abre as portas para a criação de arquiteturas de microsserviços mais flexíveis e desacopladas. Isso facilita a escalabilidade horizontal e a manutenção individual de cada componente.</p><p><br /></p><p><b>Conclusão</b></p><p><br /></p><p>Esta é uma abordagem poderosa para construir aplicações robustas em C# .NET Core. A combinação da Web API Owin Self-Host, Topshelf e RabbitMQ oferece flexibilidade, escalabilidade e confiabilidade para suas soluções. Se você está em busca de construir aplicações altamente resilientes e bem estruturadas, essa combinação de tecnologias é definitivamente uma opção a ser considerada.</p><p><br /></p><p>Espero que esse artigo tenha inspirado você a explorar novas maneiras de construir suas aplicações .NET Core. Fique à vontade para compartilhar suas experiências e insights nos comentários.</p><p><br /></p><p>.</p><p>.</p><p>.</p><p>.</p><p>hh Felipe mas falar, falar e não mostrar anda não tem graça!</p><p>ENTÃO TOMA CÓDIGO!</p><p><br /></p><p>using System;</p><p>using System.Data;</p><p>using System.Data.SQLite;</p><p>using System.Web.Http;</p><p>using Microsoft.AspNetCore.Hosting;</p><p>using Microsoft.Owin.Hosting;</p><p>using Owin;</p><p>using Topshelf;</p><p>using RabbitMQ.Client;</p><p>using RabbitMQ.Client.Events;</p><p><br /></p><p>namespace MyApp</p><p>{</p><p> public class Startup</p><p> {</p><p> public void Configuration(IAppBuilder app)</p><p> {</p><p> var config = new HttpConfiguration();</p><p> config.MapHttpAttributeRoutes();</p><p> app.UseWebApi(config);</p><p> }</p><p> }</p><p><br /></p><p> public class MyService</p><p> {</p><p> private SQLiteConnection _dbConnection;</p><p><br /></p><p> public void Start()</p><p> {</p><p> InitializeDatabase();</p><p><br /></p><p> var baseAddress = "http://localhost:9000/";</p><p> WebApp.Start<Startup>(baseAddress);</p><p><br /></p><p> var factory = new ConnectionFactory() { HostName = "localhost" };</p><p> using (var connection = factory.CreateConnection())</p><p> using (var channel = connection.CreateModel())</p><p> {</p><p> channel.QueueDeclare("myQueue", false, false, false, null);</p><p><br /></p><p> var consumer = new EventingBasicConsumer(channel);</p><p> consumer.Received += (model, ea) =></p><p> {</p><p> var body = ea.Body;</p><p> var message = System.Text.Encoding.UTF8.GetString(body);</p><p> Console.WriteLine($"Received message: {message}");</p><p><br /></p><p> SaveMessageToDatabase(message);</p><p> };</p><p><br /></p><p> channel.BasicConsume("myQueue", true, consumer);</p><p> }</p><p> }</p><p><br /></p><p> public void Stop()</p><p> {</p><p> _dbConnection.Close();</p><p> }</p><p><br /></p><p> private void InitializeDatabase()</p><p> {</p><p> _dbConnection = new SQLiteConnection("Data Source=mydatabase.db;Version=3;");</p><p> _dbConnection.Open();</p><p><br /></p><p> using (var cmd = new SQLiteCommand("CREATE TABLE IF NOT EXISTS Messages (Id INTEGER PRIMARY KEY, Content TEXT)", _dbConnection))</p><p> {</p><p> cmd.ExecuteNonQuery();</p><p> }</p><p> }</p><p><br /></p><p> private void SaveMessageToDatabase(string message)</p><p> {</p><p> using (var cmd = new SQLiteCommand("INSERT INTO Messages (Content) VALUES (@content)", _dbConnection))</p><p> {</p><p> cmd.Parameters.AddWithValue("@content", message);</p><p> cmd.ExecuteNonQuery();</p><p> }</p><p> }</p><p> }</p><p><br /></p><p> class Program</p><p> {</p><p> static void Main(string[] args)</p><p> {</p><p> HostFactory.Run(x =></p><p> {</p><p> x.Service<MyService>(s =></p><p> {</p><p> s.ConstructUsing(name => new MyService());</p><p> s.WhenStarted(tc => tc.Start());</p><p> s.WhenStopped(tc => tc.Stop());</p><p> });</p><p><br /></p><p> x.RunAsLocalSystem();</p><p> x.StartAutomatically();</p><p> x.SetDescription("My Service Description");</p><p> x.SetDisplayName("MyServiceDisplayName");</p><p> x.SetServiceName("MyServiceName");</p><p> });</p><p> }</p><p> }</p><p>}</p><div><br /></div><p><br /></p>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-20292785702337858282023-06-16T05:00:00.003-07:002023-06-16T05:10:22.638-07:00A importância do ego no fracasso de um novo produto<p><span style="font-family: arial;">No mundo do marketing, o lançamento de novos produtos é uma
tarefa assustadora. Apesar dos avanços nas pesquisas de mercado, as taxas de
falha de novos produtos permanecem altas. Mas por que isso está acontecendo? Este
artigo examina o papel dos egos nos fracassos de novos produtos e como o desejo
individual de gratificação influencia as decisões de marketing.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p></p>
<h4 style="text-align: left;"><span style="font-family: arial;">O conceito de viés de necessidades:</span></h4>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p><span style="font-family: arial;">Um dos principais fatores que contribuem para altas taxas de
falha é o viés de necessidades. Isso significa que os profissionais de
marketing tendem a superestimar a demanda por novos produtos com base em sua
necessidade pessoal de sucesso e validação. Esse viés pode levar à má
interpretação dos dados de mercado e superestimação das necessidades do
consumidor.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p></p>
<h4 style="text-align: left;"><span style="font-family: arial;">Envolver o ego e reconhecer as necessidades do consumidor:</span></h4>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p><span style="font-family: arial;">A pesquisa mostra que o envolvimento do ego desempenha um
papel fundamental na forma como os profissionais de marketing percebem as
necessidades do consumidor. Quanto mais o ego se envolve, maior a probabilidade
de superestimar as necessidades do consumidor. Isso pode levar ao
desenvolvimento de produtos que não atendem às necessidades reais do mercado,
levando ao fracasso. </span></p><p class="MsoNormal"><span style="font-family: arial;"><br /></span></p><h4 style="text-align: left;"><span style="font-family: arial;">Importância do tamanho do mercado:</span></h4>
<p class="MsoNormal"><span style="font-family: arial;">Outro aspecto relacionado é a importância de entender o
tamanho do mercado. Nem todos os produtos são destinados à produção em massa.
Alguns são adequados para nichos específicos. Como gerente de marketing, é
importante entender o alcance do seu produto e ajustar sua estratégia de
acordo. Só assim poderemos realmente atender às reais necessidades de nossos
consumidores.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p></p>
<h4 style="text-align: left;"><span style="font-family: arial;">Progresso na pesquisa de mercado e taxas de falha
sustentadas:</span></h4>
<p class="MsoNormal"><span style="font-family: arial;">Apesar dos avanços nas pesquisas de mercado, as taxas de
falha de novos produtos ainda são altas. Porque as decisões de marketing são
influenciadas por fatores subjetivos.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: arial;">O estudo, do autor Randall L. Schulz, da Universidade de
Iowa, oferece uma explicação interessante para as contínuas altas taxas de
falha de novos produtos que parecem imunes aos avanços da pesquisa de mercado.
Os autores introduzem o conceito de viés de necessidades, que se refere à
diferença entre as necessidades expressas pelos consumidores e aquelas
percebidas pelos gerentes de marketing.<o:p></o:p></span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p><span style="font-family: arial;">Uma descoberta interessante é a ligação entre o envolvimento
do ego e a tomada de decisões de marketing. O envolvimento do ego foi
identificado como um fator importante na distorção das necessidades. Quanto
mais o ego se envolve, maior a probabilidade de superestimar as necessidades do
consumidor. Isso ocorre porque os profissionais de marketing projetam suas
próprias necessidades e desejos nos consumidores, o que pode levar a tomadas de
decisão errôneas.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p><span style="font-family: arial;">O estudo também destaca a importância de dados de mercado de
qualidade. A pesquisa de mercado percorreu um longo caminho, mas os resultados
mostram que as opiniões dos profissionais de marketing podem ser apoiadas mesmo
diante de evidências de mercado contrárias. Isso sugere que o envolvimento do
ego pode distorcer a interpretação dos dados e levar a uma subestimação da
demanda real.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p><span style="font-family: arial;">Além disso, o artigo menciona um experimento conduzido por
Schultz e Brown em que o envolvimento do ego e as evidências de mercado foram
manipuladas para demonstrar o "efeito superfaturamento" no contexto
de novos produtos. Os resultados mostram que, consistente com pesquisas
anteriores sobre tomada de decisão, maior envolvimento do ego leva a melhores
avaliações das necessidades do consumidor. </span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p><span style="font-family: arial;">Em resumo, este artigo destaca a importância do ego nas
decisões de marketing e como ele pode levar ao fracasso de um novo produto.
Isso fornece informações valiosas sobre o viés das necessidades e como o
envolvimento do ego distorce a percepção das necessidades do consumidor.
Entender esses aspectos é fundamental para o desenvolvimento do profissional de
marketing </span></p><p class="MsoNormal"><span style="font-family: arial;"><br /></span></p><p class="MsoNormal"><span style="font-family: arial;"></span></p><blockquote><p class="MsoNormal"><span style="font-family: arial;">Fonte:</span></p><p class="MsoNormal"><span style="font-family: arial;">Papper THE ROLE OF EGO IN PRODUCT FAILURE publicado por Randall L. Schultz para a Universidade de Iowa em fevereiro de 2001</span></p></blockquote><p class="MsoNormal"><span style="font-family: arial;"></span></p><p class="MsoNormal"><o:p></o:p></p>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-67708773748618031352023-06-14T13:01:00.001-07:002023-06-14T13:48:04.009-07:00Gerenciando Projetos Pequenos<p><span style="font-family: arial;"> </span><span style="font-family: arial;">Ao longo dos anos, ganhei alguma experiência como gerente
de projetos para produtos digitais e descobri que os métodos tradicionais de
gerenciamento de projetos muitas vezes não são perfeitos para essa situação. </span></p><p><span style="font-family: arial;">Muitas vezes ouvimos que documentação e processos são
essenciais em projetos de produtos digitais, principalmente quando a equipe é
formada por um líder e poucas pessoas. Mas entendo que essas questões são
importantes e precisam ser abordadas de frente sem comprometer a entrega.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p></p>
<p class="MsoNormal"><span style="font-family: arial;">O principal fator de sucesso neste cenário é o foco. É
importante entender que o foco deve estar na entrega do produto e na criação de
valor para os usuários, não apenas na documentação. Muitas pessoas se perdem
aqui, temendo que os métodos de gerenciamento de projetos sejam muito
burocráticos e levem ao excesso de documentação comprometendo projetos de curto prazo.<o:p></o:p></span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p><span style="font-family: arial;">Aceito a validade deste argumento. Qualquer método ou
metodologia que priorize a documentação sobre os benefícios reais do produto é
um obstáculo, não uma vantagem. Porque o que importa para os clientes e
usuários é obter o produto que atenda às suas necessidades, não a papelada que
o acompanha. No entanto, é possível adaptar alguns processos com foco na entrega de valor. </span></p><p class="MsoNormal"><span style="font-family: arial;">Produzir documentos práticos,
aplicáveis ao contexto do projeto e focados em questões-chave que podem
impactar o sucesso do seu produto e facilitar muito a gestão do projeto.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p><span style="font-family: arial;">Ao aplicar as melhores práticas adaptadas a projetos de
produtos digitais, você pode evitar burocracias desnecessárias e evitar
sobrecarga de trabalho. Essas práticas são baseadas em situações do
mundo real que os gerentes de projeto enfrentam em muitos projetos e são consideradas
"razoáveis" porque tendem a produzir resultados positivos.</span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p></p>
<p class="MsoNormal"><span style="font-family: arial;">É importante entender que, mesmo em projetos pequenos, essas
práticas não podem ser ignoradas. Caso contrário, problemas e crises podem
surgir no projeto no futuro. Portanto, é importante aplicar uma regra básica ao
criar sua documentação:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: arial;">Siga o princípio de "Keep It Short and Simple"
(K-I-S-S). Se o documento passar nessa verificação, ele poderá ser
implementado.<o:p></o:p></span></p>
<p class="MsoNormal"><o:p><span style="font-family: arial;"> </span></o:p></p>
<p class="MsoNormal"><span style="font-family: arial;">O sucesso no design de produtos digitais é, portanto, mais
do que apenas seguir as especificações do design. Deve oferecer valor,
qualidade e, claro, boa documentação. </span></p><p class="MsoNormal"><span style="font-family: arial;">Com base na minha experiência, compreendo plenamente a importância de adaptar as práticas de gestão de acordo com o cenário (famoso "depende"), a fim de alcançar resultados excelentes.</span></p><p class="MsoNormal"><o:p></o:p></p>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-71417705289969794452023-05-26T11:54:00.001-07:002023-05-26T13:06:45.372-07:00Unlocking the Potential: How ChatGPT Empowers Product Owners<p><span style="font-family: verdana;"><span> </span>Artificial intelligence has been one of the most discussed topics on social media lately, and one of the most talked-about products is Chat GPT. </span></p><p><span style="font-family: verdana;">But the question many have been asking is: </span></p><p><span style="font-family: verdana;"></span></p><blockquote><span style="font-family: verdana;">"how can this technology help the work of a Product Owner?"</span></blockquote><p></p><p><span style="font-family: verdana;">To answer this question, we used the Chat itself to gain insights into how it can be used in the role. The result was surprising, as the tool can support Product Owners in various ways, assisting with tasks and responsibilities associated with the role.</span></p><p><span style="font-family: verdana;">In this article, we will present eight ways in which Chat GPT can be utilized to help Product Owners in executing their role.</span></p><h3 style="text-align: left;"><span style="font-family: verdana; font-size: medium;"><b>1. Requirements Definition</b></span></h3><p><span style="font-family: verdana;">Requirements definition is one of the crucial activities in product management. In this regard, Chat GPT can be a valuable tool to assist the Product Owner. It can help in crafting user stories, defining acceptance criteria, as well as facilitating communication with stakeholders and the development team.</span></p><p><span style="font-family: verdana;">To illustrate this possibility, we employed the Chat GPT itself and requested the creation of a user story for making a purchase in an e-commerce platform using a credit card, along with the necessary acceptance criteria to validate the card information. To our surprise, the Chat GPT promptly responded with a well-described user story and detailed acceptance criteria.</span></p><p><span style="font-family: verdana;">Among the presented acceptance criteria, we highlighted the validation of the credit card number entered by the user, checking its validity and the correct digit count, as well as verifying the expiration date and security code (CVV).</span></p><p><span style="font-family: verdana;">This demonstration highlights that Chat GPT can be a useful tool to assist the Product Owner in swiftly and accurately defining requirements. By doing so, it is possible to optimize time and enhance product management efficiency, providing a more satisfying user experience and adding value to the business.</span></p><p><span style="font-family: verdana;"><br /></span></p><p><b><span style="font-family: verdana; font-size: medium;">2. Backlog Prioritization</span></b></p><p><span style="font-family: verdana;">Backlog prioritization is one of the most challenging tasks for a Product Owner, as it requires careful analysis of requirements and balancing the demands of stakeholders and the development team. It is in this context that Chat GPT can be a significant ally in decision-making.</span></p><p><span style="font-family: verdana;">Based on factors such as business value, risks, and effort dependencies, the tool can help prioritize backlog items more efficiently. To illustrate this in practice, we conducted a test with the tool, providing it with a shuffled backlog outline and asking it to prioritize the items considering the user journey.</span></p><p><span style="font-family: verdana;">And the result was astonishing! Based on the user journey, the artificial intelligence presented the following prioritization: e-commerce homepage, product search by category, selection of items in the shopping cart, cart checkout, payment details, delivery address information, sending a purchase confirmation email, and finally, sorting of product search.</span></p><p><span style="font-family: verdana;">Chat GPT justified its choices, stating that although sorting of product search is useful for users, it is less critical in the purchase journey compared to the other functionalities. This clearly demonstrates that Chat GPT can be a powerful tool to assist the Product Owner in backlog prioritization, bringing more objectivity and accuracy to the product development process.</span></p><p><b><span style="font-family: verdana; font-size: medium;"><br /></span></b></p><p><b><span style="font-family: verdana; font-size: medium;">3. Sprint Planning</span></b></p><p><span style="font-family: verdana;">Indeed, Chat GPT can be a tool to support the Product Owner in sprint planning, but it is important to remember that its suggested task distribution among team members may not always be the best option. The artificial intelligence relies on information provided by humans, and there may be inaccuracies or inadequacies in the input used to train it. Therefore, it is essential to exercise critical thinking when evaluating the suggestions presented.</span></p><p><span style="font-family: verdana;">While it can be helpful in defining sprint goals and objectives, it is crucial to emphasize that task distribution is the responsibility of the team, not the Product Owner. Team self-organization is one of the core principles of Agile and should be upheld. Therefore, it is advisable to discard suggestions that may impede the team's autonomy, critically evaluate what it has offered, and use that data cautiously.</span></p><p><b><span style="font-family: verdana; font-size: medium;"><br /></span></b></p><h3 style="text-align: left;"><b><span style="font-family: verdana; font-size: medium;">4. Stakeholder Management</span></b></h3><p><span style="font-family: verdana;">Chat GPT can also be a valuable tool for the Product Owner in stakeholder management, providing tips and advice on managing expectations, effective communication, and conflict resolution.</span></p><p><span style="font-family: verdana;">Although it is a basic tool, it can be effective in offering information management suggestions and management advice. To illustrate, an example would be a simple instruction given to Chat GPT to provide tips and advice on managing expectations, effective communication, and resolving conflicts among stakeholders. Through this, it was able to provide valuable and helpful insights on a variety of stakeholder management topics.</span></p><p><span style="font-family: verdana;"><br /></span></p><p><b><span style="font-family: verdana; font-size: medium;">5. Analysis of Metrics and KPIs</span></b></p><p><span style="font-family: verdana;">Within the project's metrics and KPI analysis, Chat GPT can assist in identifying relevant metrics and key teams to track project progress and success, while providing insights to improve team performance.</span></p><p><span style="font-family: verdana;">During a test with the tool, it was possible to generate fictional data and metrics from an e-commerce platform called Fashion X. The artificial intelligence created several examples of interesting metrics, highlighting the value of the tool. However, it is important to note that for a more critical and in-depth analysis of the data, providing context and more detailed information is necessary. In practice, the data used in the project will be specific, and it is important to understand the metrics in a broader sense.</span></p><p><span style="font-family: verdana;">Chat GPT can make optimization suggestions based on the presented metrics, but it is important to emphasize that these suggestions are generic and dependent on the project's context. It is the responsibility of the Product Owner to carefully analyze these suggestions and evaluate their applicability to their specific context.</span></p><p><span style="font-family: verdana;">Some suggestions that were offered include increasing conversion rates, reducing costs, decreasing return rates, and boosting social media engagement. It is crucial to approach these suggestions with caution and conduct a more thorough analysis to determine their true applicability to the project's context.</span></p><p><span style="font-family: verdana;"><br /></span></p><h3 style="text-align: left;"><b><span style="font-family: verdana; font-size: medium;">6. Conducting Meetings</span></b></h3><p><span style="font-family: verdana;">In addition to assisting with agenda preparation, artificial intelligence can also automatically summarize meetings. However, it is possible to go beyond that and explore the chat GPT's ability to suggest agenda topics.</span></p><p><span style="font-family: verdana;">When testing this capability, we achieved success in obtaining a well-structured agenda proposal. The chat suggested a comprehensive agenda that included a review of the Sprint's progress with the participation of developers and the retrospective of the Sprint, despite a slight confusion in the placement of this activity.</span></p><p><span style="font-family: verdana;">Overall, the dynamics presented by the intelligence were quite interesting and can provide valuable assistance in preparing efficient meetings. However, it is important to remember that it is always necessary to evaluate and adapt its suggestions according to the team and project's specific context.</span></p><p><span style="font-family: verdana;"><br /></span></p><h3 style="text-align: left;"><b><span style="font-family: verdana; font-size: medium;">7. Research and Validation</span></b></h3><p><span style="font-family: verdana;">By providing a specific context, such as developing an investment management app for a brokerage firm, valuable information can be obtained regarding best market practices, trends, and emerging technologies. During the exercise, Chat GPT offered suggestions such as intuitive and user-friendly design, app personalization based on the investor's profile, automation, security, and gamification.</span></p><p><span style="font-family: verdana;">The chat also emphasized the importance of financial education, suggesting that the concept be integrated into the platform. The suggestions provided can help create a backlog with ideas for future trends. By considering the specific context, the Product Owner can make more informed decisions and create a more appealing product for their clients.</span></p><p><b><span style="font-family: verdana; font-size: medium;"><br /></span></b></p><p><b><span style="font-family: verdana; font-size: medium;">8. Continuous Improvement</span></b></p><p><span style="font-family: verdana;">With the ability to identify areas for improvement, the tool can provide suggestions to enhance the efficiency and effectiveness of the product. Furthermore, it can be used to conduct benchmarking comparisons between your product and competitors, which can help better understand the market and identify strengths and weaknesses.</span></p><p><span style="font-family: verdana;">For instance, if you have a visible product in the market, you can ask Chat GPT to compare your product with the leader in your segment and highlight relevant features of the competitor. While the responses may be somewhat generic, they still provide enough groundwork to guide the analysis of the Product Owner.</span></p><p><span style="font-family: verdana;"><br /></span></p><h3 style="text-align: left;"><b><span style="font-family: verdana; font-size: medium;">Conclusion</span></b></h3><p><span style="font-family: verdana;">In summary, the complete replacement of the Product Owner's role or other knowledge-based professionals by artificial intelligence is not yet possible. While AI can enhance and assist in certain tasks, it still lacks the ability to understand the context and nuances of business needs, market dynamics, user requirements, as well as communication and negotiation skills.</span></p><p><span style="font-family: verdana;">Therefore, those who should be concerned about job displacement by AI are those whose work is merely a variation or combination of what others have already created before them.</span></p><p><span style="font-family: verdana;">The contribution of AI is to amplify and catalyze value delivery, thereby evolving the roles of market professionals and their careers.</span></p>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-59525764412389142432022-07-03T05:51:00.004-07:002022-07-03T05:52:10.804-07:00To Install Docker on Oracle Linux<p>Introduction :</p><p>The Docker is a operating system virtualization technology allows applications to be packaged as containerized files. This is fundamental to cloud computing, as containerized applications can run on any infrastructure, regardless of the provider.</p><p><br /></p><p>Installation steps:</p><p><b>Step 1 : check the version of the OS</b></p><p><br /></p><p>[root@linuxhelp ~]# cat /etc/os-release </p><p>NAME="Oracle Linux Server"</p><p>VERSION="8.4"</p><p>ID="ol"</p><p>ID_LIKE="fedora"</p><p>VARIANT="Server"</p><p>VARIANT_ID="server"</p><p>VERSION_ID="8.4"</p><p>PLATFORM_ID="platform:el8"</p><p>PRETTY_NAME="Oracle Linux Server 8.4"</p><p>ANSI_COLOR="0;31"</p><p>CPE_NAME="cpe:/o:oracle:linux:8:4:server"</p><p>HOME_URL="https://linux.oracle.com/"</p><p>BUG_REPORT_URL="https://bugzilla.oracle.com/"</p><p><br /></p><p><br /></p><p><b>Step 2 : Install yum-utils packages by using the below command</b></p><p>[root@linuxhelp ~]# yum install yum-utils</p><p>Last metadata expiration check: 1 day, 5:04:54 ago on Wednesday 15 December 2021 02:35:28 AM IST.</p><p>Package yum-utils-4.0.21-3.0.1.el8.noarch is already installed.</p><p>Dependencies resolved.</p><p>Nothing to do.</p><p>Complete!</p><p><br /></p><p><b>Step 3 : Add Docker Repository by using the below command</b></p><p><br /></p><p>[root@linuxhelp ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo</p><p>Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo</p><p><br /></p><p><b>Step 4 : Install Docker packages by using the below command</b></p><p><br /></p><p>[root@linuxhelp ~]# yum install docker-ce docker-ce-cli</p><p>Last metadata expiration check: 0:10:54 ago on Thursday 16 December 2021 09:37:34 AM IST.</p><p>Dependencies resolved.</p><p>============================================================================================================================================</p><p> Package Architecture Version Repository Size</p><p>============================================================================================================================================</p><p>Installing:</p><p> docker-ce x86_64 3:20.10.12-3.el8 docker-ce-stable 22 M</p><p> docker-ce-cli x86_64 1:20.10.12-3.el8 docker-ce-stable 30 M</p><p>Installing dependencies:</p><p> container-selinux noarch 2:2.167.0-1.module+el8.5.0+20416+d687fed7 ol8_appstream 54 k</p><p> containerd.io x86_64 1.4.12-3.1.el8 docker-ce-stable 28 M</p><p> docker-ce-rootless-extras x86_64 20.10.12-3.el8 docker-ce-stable 4.6 M</p><p> docker-scan-plugin x86_64 0.12.0-3.el8 docker-ce-stable 3.7 M</p><p> fuse-overlayfs x86_64 1.7.1-1.module+el8.5.0+20416+d687fed7 ol8_appstream 72 k</p><p> fuse3 x86_64 3.2.1-12.0.3.el8 ol8_baseos_latest 51 k</p><p> fuse3-libs x86_64 3.2.1-12.0.3.el8 ol8_baseos_latest 95 k</p><p> libcgroup x86_64 0.41-19.el8 ol8_baseos_latest 70 k</p><p> libslirp x86_64 4.4.0-1.module+el8.5.0+20416+d687fed7 ol8_appstream 70 k</p><p> slirp4netns x86_64 1.1.8-1.module+el8.5.0+20416+d687fed7 ol8_appstream 51 k</p><p><br /></p><p>Transaction Summary</p><p>============================================================================================================================================</p><p>Install 12 Packages</p><p><br /></p><p>Total download size: 90 M</p><p>Installed size: 377 M</p><p>Is this ok [y/N]: y</p><p>Downloading Packages:</p><p><br /></p><p><b>Step 5 : start the Docker services by using the below command</b></p><p><br /></p><p>[root@linuxhelp ~]# systemctl start docker</p><p><br /></p><p><b>Step 6 : Enable the Docker service by using the below command</b></p><p><br /></p><p>[root@linuxhelp ~]# systemctl enable docker</p><p>Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.</p><p>Step 7 : check the Docker status by using the below command</p><p><br /></p><p> [root@linuxhelp ~]# systemctl status docker</p><p>● docker.service - Docker Application Container Engine</p><p> Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)</p><p> Active: active (running) since Thu 2021-12-16 09:55:32 IST; 27s ago</p><p> Docs: https://docs.docker.com</p><p> Main PID: 10910 (dockerd)</p><p> Tasks: 7</p><p> Memory: 30.5M</p><p> CGroup: /system.slice/docker.service</p><p> └─10910 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock</p><p><br /></p><p><b>Step 8 : Download and Run the Docker image from Online Docker Library</b></p><p><br /></p><p>[root@linuxhelp ~]# docker run hello-world</p><p>Unable to find image 'hello-world:latest' locally</p><p>latest: Pulling from library/hello-world</p><p>2db29710123e: Pull complete </p><p>Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685</p><p>Status: Downloaded newer image for hello-world:latest</p><p><br /></p><p>Hello from Docker!</p><p>This message shows that your installation appears to be working correctly.</p><p>To generate this message, Docker took the following steps:</p><p> 1. The Docker client contacted the Docker daemon.</p><p> 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.</p><p> (amd64)</p><p> 3. The Docker daemon created a new container from that image which runs the</p><p> executable that produces the output you are currently reading.</p><p> 4. The Docker daemon streamed that output to the Docker client, which sent it</p><p> to your terminal.</p><p>To try something more ambitious, you can run an Ubuntu container with:</p><p> $ docker run -it ubuntu bash</p><p>Share images, automate workflows, and more with a free Docker ID:</p><p> https://hub.docker.com/</p><p>For more examples and ideas, visit:</p><p> https://docs.docker.com/get-started/</p><p> </p><p>By this the installation of Docker on Oracle Linux has been completed</p><p>Good book to avoid all this mess --> https://amzn.to/3Rb9pUq</p>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-30691405222524949342022-06-14T09:30:00.001-07:002022-06-14T09:30:07.684-07:00Indicação de livro para gerente de projeto<p><span style="background-color: white; color: rgba(6, 5, 10, 0.85); font-family: Lora; font-size: 21px; letter-spacing: -0.03px;">Não dá pra aprender relacionamento de pessoas lendo livros, mas não tem nenhum mau em complementar seu conhecimento com alguns bons livros. </span></p><p><span style="background-color: white; color: rgba(6, 5, 10, 0.85); font-family: Lora; font-size: 21px; letter-spacing: -0.03px;">E eu recomendo dois. </span></p><p><span style="background-color: white; color: rgba(6, 5, 10, 0.85); font-family: Lora; font-size: 21px; letter-spacing: -0.03px;">O primeiro é o lendário “<a href="https://amzn.to/3MUSfH4" target="_blank">Psychology of Computer Programming</a>” do grande Gerald Weinberg. </span></p><p><span style="background-color: white; color: rgba(6, 5, 10, 0.85); font-family: Lora; font-size: 21px; letter-spacing: -0.03px;">E ele tem vários outros livros interessantes como o “<a href="https://amzn.to/3QjauJb" target="_blank">Becoming a Technical Leader</a>”. </span></p><p><span style="background-color: white; color: rgba(6, 5, 10, 0.85); font-family: Lora; font-size: 21px; letter-spacing: -0.03px;">Mas se quiserem só um resuminho, acho que no mínimo todo mundo já deveria ter lido outro livro famoso, o “<a href="https://amzn.to/3tA0NMQ" target="_blank">Peopleware</a>”, do Tom DeMarco. </span></p><p><span style="background-color: white; color: rgba(6, 5, 10, 0.85); font-family: Lora; font-size: 21px; letter-spacing: -0.03px;">Esse eu acho que tá um pouco defasado. Várias coisas que eram novidade nele, valiam pro começo dos anos 2000 e hoje parte já é meio considerado comum, mas continua sendo válido ler. </span></p><p><span style="background-color: white; color: rgba(6, 5, 10, 0.85); font-family: Lora; font-size: 21px; letter-spacing: -0.03px;">Eu vou bater no ponto que a parte mais importante de gerir projetos é entender pessoas, então todo gestor deveria fazer um esforço nessa direção, nem que seja ler alguns livros.</span></p><p><span style="background-color: white; color: rgba(6, 5, 10, 0.85); font-family: Lora; font-size: 21px; letter-spacing: -0.03px;"><br /></span></p><p><span style="background-color: white; color: rgba(6, 5, 10, 0.85); font-family: Lora; font-size: 21px; letter-spacing: -0.03px;">Trecho do imperdível vídeo do Fábio Akita: </span><span style="color: rgba(6, 5, 10, 0.850980392156863); font-family: Lora;"><span style="font-size: 21px; letter-spacing: -0.03px;">https://www.youtube.com/watch?v=2tpshOTtleM</span></span></p>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-9659565183609382572022-05-10T10:32:00.004-07:002022-05-10T18:45:40.556-07:00 10 livros imperdíveis para Product Owners<p><br /></p><h1 style="text-align: left;"><span style="background-color: white; font-size: 14px; white-space: pre-line;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV9GZIS3AaiZ1MLjVvzComcXIC7YPOmaT864s4fGcdmt0lOhM9eZNsUXWy1tu8pH5dZeHlMAGw1kQ9L8bpInJbm5YkWdokq191ZM8DOleXyKq8YgcBQaYjq8FJaXuU_CgnuOJyRucqgVJtFj3L3iTZKPzBnERoZNVQFSLjgccwN11kCeFC32Y/s550/PO.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="550" height="484" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV9GZIS3AaiZ1MLjVvzComcXIC7YPOmaT864s4fGcdmt0lOhM9eZNsUXWy1tu8pH5dZeHlMAGw1kQ9L8bpInJbm5YkWdokq191ZM8DOleXyKq8YgcBQaYjq8FJaXuU_CgnuOJyRucqgVJtFj3L3iTZKPzBnERoZNVQFSLjgccwN11kCeFC32Y/w484-h484/PO.png" width="484" /></a></div><br /><span style="font-family: verdana;"><br /></span></span></h1><h1 style="text-align: left;"><span style="background-color: white; font-size: 14px; white-space: pre-line;"><span style="font-family: verdana;">Livros para Product Owners</span></span></h1><div><span style="background-color: white; font-size: 14px; white-space: pre-line;"><span style="font-family: verdana;">
1. <a href="https://amzn.to/3wg6Syl" target="_blank">A Startup Enxuta</a> (Eric Ries)
O Lean Startup revolucionou a maneira de construir um negócio, tornando muito mais barato e rápido, através de validação de hipóteses.
O autor descreve um plano para que cada um possa executar os princípios fundamentais de Lean Startup em qualquer ambiente.
2. <a href="https://amzn.to/38cPWB6" target="_blank">Running Lean</a> (Ash Maurya)
Descubra como criar um processo sistêmico para validar rapidamente as novas ideias de produtos e aumentar as suas chances de ter sucesso.
3. <a href="https://amzn.to/398S7p4" target="_blank">How to measure anything</a> (Douglas W. Hubbard)
Como medir coisas em seu negócio, que até agora, você considerava como “imensurável”, incluído satisfação do cliente, flexibilidade organizacional, risco e ROI de tecnologia.
4. <a href="https://amzn.to/3N6yayc" target="_blank">Value Proposition Design</a> (Osterwalder Alex, Pigneur Yves e Bernarda Greg)
Os autores explicam como aproveitar o “Canvas da Proposta de Valor” para desenvolver, testar, lançar e gerenciar os produtos e serviços que se adaptam às necessidades dos clientes.
5. <a href="https://amzn.to/3kVCyUu" target="_blank">The Lean Product Playbook</a> (Dan Olsen)
Um guia passo-a-passo, utilizando princípios do Lean Startup para ajudá-lo a desenvolver o produto certo.
6. <a href="https://amzn.to/3M7mPO8" target="_blank">Strategize </a>(Roman Pichler)
Pichler fornece orientações essenciais para criar estratégias e roadmaps para aumentar suas chances de criar produtos bem sucedidos na era digital.
7. <a href="https://amzn.to/3M1ERBp" target="_blank">Lean Customer Development</a> (Cindy Alvarez)
Evite perder tempo e dinheiro desenvolvendo um produto ou serviço que ninguém precisa, através de entrevistas abertas e técnicas de pesquisas rápidas.
8. <a href="https://amzn.to/3FyPE3y" target="_blank">Lean Analytics</a> (Alistair Croll e Benjamin Yoskovitz)
O maior risco que você pode ter é construir algo que ninguém quer.
Neste livro, os autores trazem uma abordagem prática para validar se um problema é real, encontrar os clientes certos e decidir o que construir.
9.<a href="https://amzn.to/3ysssSY" target="_blank"> Do sonho a realização em 4 passos</a> (Steven G. Blank)
O autor escreve passo a passo uma estratégia amplamente testada por empreendedores em diversos países para estruturar vendas, marketing e o desenvolvimento de negócios de um novo produto ou empresa.
10. <a href="https://amzn.to/3M1FoDp" target="_blank">Scrum – Gestão Ágil para Projetos de Sucesso</a> (Rafael Sabbagh)
Rafael Sabbagh descreve diversas práticas de Scrum que podem ajudar as organizações a entregar valor frequentemente para seus clientes, reduzindo desperdício e aumentando a qualidade, visibilidade e produtividade.</span></span></div><div><span style="background-color: white; font-size: 14px; white-space: pre-line;"><span style="font-family: verdana;">
Como você pode perceber, esses livros são essenciais para tornar o seu trabalho de gestão de produtos ainda mais estratégico, efetivo e bem-sucedido.
São leituras repletas de dicas e insights valiosos, que certamente trarão conhecimentos úteis para o trabalho de Product Owners.</span></span></div><div><span style="background-color: white; font-size: 14px; white-space: pre-line;"><span style="font-family: verdana;"><br /></span></span></div><div><span style="background-color: white; font-size: 14px; white-space: pre-line;"><span style="font-family: verdana;">Livro bônus para PO trabalhar com time Home Office --> <a href="https://amzn.to/3L3S2QM" target="_blank">Effective Remote Work: For Yourself, Your Team, and Your Company</a></span></span></div>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-18544369175879527612022-03-14T05:36:00.002-07:002022-03-14T05:38:43.183-07:00 Changing default load balance settings nginx in elastic beanstalk<p><br /></p><p>Scenario</p><p>imagine a .net core api hosted on linux that needs to upload files from 6 to 10 Mb (considering the resolution of the cell phone cameras is still very little).</p><p>You prepare your beanstalk environment, connect to the instance via terminal and adjust the nginx.conf to support files larger than 10 megs from the client-max-body-size property to the size you see fit.</p><p>However, with each new deployment of your API, the nginx settings go back to the initial default, losing its configuration.</p><p>The solution is to create a structure within your api project and create a configuration file with just the parameters you need to adjust, the structure should look like this:</p><p>-->.ApiProject\.platform\nginx\conf.d\elasticbeanstalk\proxy.conf</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEijJdPxzcjhnEH1djdexCePDsa7EPc_PG7GB_-xyv6CCIcqJceX6zEQrW7c-WzhFoVhbrQdPj0QhtseAgNOZD3Aoyxf_SANYVBZov9r3ruMRvw7i1o3mpJN3xT_wTuRAMILp6-xc3HypRcvV_HxPyOq9NyogCnlFDrXTEsHK3PlTrZp3XTRSMs" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="348" data-original-width="717" height="155" src="https://blogger.googleusercontent.com/img/a/AVvXsEijJdPxzcjhnEH1djdexCePDsa7EPc_PG7GB_-xyv6CCIcqJceX6zEQrW7c-WzhFoVhbrQdPj0QhtseAgNOZD3Aoyxf_SANYVBZov9r3ruMRvw7i1o3mpJN3xT_wTuRAMILp6-xc3HypRcvV_HxPyOq9NyogCnlFDrXTEsHK3PlTrZp3XTRSMs" width="320" /></a></div><br /><br /><p></p><p>Don't forget to configure so that this file is always present in the release:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgWHOh5_CL5Tf5tgvFcvcDQR1raiVDaSUzAxay2Iq3UVnV87Y-IbDkRlnVUSkxroXWi7TQIhtMhULuyAWVMrQW1VaXJEPTA9KigwVTVxBWYWnQrpTuurEUeGcrunafPJHYIq6MRqtQZKg-KNDEYEcw_S2UWIk5DPodyfx7gPNy82FdVvqgZ6ks" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="167" data-original-width="298" height="179" src="https://blogger.googleusercontent.com/img/a/AVvXsEgWHOh5_CL5Tf5tgvFcvcDQR1raiVDaSUzAxay2Iq3UVnV87Y-IbDkRlnVUSkxroXWi7TQIhtMhULuyAWVMrQW1VaXJEPTA9KigwVTVxBWYWnQrpTuurEUeGcrunafPJHYIq6MRqtQZKg-KNDEYEcw_S2UWIk5DPodyfx7gPNy82FdVvqgZ6ks" width="320" /></a></div><br /><br /><p></p>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-50238861502010740342021-11-23T06:37:00.002-08:002022-03-14T05:39:46.304-07:00NLOG - Archieve - Changing the name of the file to be compressed
In a given scenario I needed to keep the log name, however, when compressing I needed to change the file name.
The easiest way to do this is to change NLog.Targets.FileTarget.FileCompressor, remembering that it is a static attribute and will affect all other logs.
1. Create a class with IFileCompresso interface with you logic, in my case I set the name iquals to zip file but .txt at the end. <code><div><br /></div><div><div>using NLog.Targets;</div><div>using System.IO;</div><div>using System.IO.Compression;</div><div><br /></div><div>namespace LogManager</div><div>{</div><div> internal class MyZipFileCompressor : IFileCompressor</div><div> { </div><div> internal MyZipFileCompressor () { }</div><div><br /></div><div> public void CompressFile(string fileName, string archiveFileName)</div><div> {</div><div> </div><div> string entryName = Path.GetFileNameWithoutExtension(archiveFileName) +".txt";</div><div> using (var archiveStream = new FileStream(archiveFileName, FileMode.Create))</div><div> using (var archive = new ZipArchive(archiveStream, ZipArchiveMode.Create))</div><div> using (var originalFileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))</div><div> {</div><div> var zipArchiveEntry = archive.CreateEntry(entryName);</div><div> using (var destination = zipArchiveEntry.Open())</div><div> {</div><div> originalFileStream.CopyTo(destination);</div><div> }</div><div> }</div><div><br /></div><div> }</div><div> }</div><div><br /></div><div>}</div><div><br /></div></div><div>//when you start your Target juset set your compressor</div><div> _logFileTarget.FileCompressor = new MyZipFileCompressor ();</div></code>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-16777921444187211072021-05-12T08:01:00.005-07:002021-05-12T08:15:38.512-07:00Sua reunião vai começar logo mais!<br /><br /><div><div class="separator" style="clear: both; text-align: center;"><a href="https://www.meme-arsenal.com/memes/06360572d693d89dfd2406e2c7c87582.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="335" data-original-width="600" src="https://www.meme-arsenal.com/memes/06360572d693d89dfd2406e2c7c87582.jpg" /></a></div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div>
Aquele barulhinho que sempre te deixa preocupado para terminar o que está fazendo e se preparar para mais <b>"outra"</b> reunião!
<br />
<audio controls="">
<source src="https://drive.google.com/uc?export=download&id=1jqfiWQnwFw0ms77VGoKiwqn3p-6tZ9pu" type="audio/mpeg"></source>
</audio>
</div><br />Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-72172723919972503662021-03-29T13:32:00.005-07:002021-03-31T04:39:09.907-07:00Empatia versus Indiferença: Como se conectar com alguém de forma autêntica<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-ELUgYR7lxRE/YGI57IEh56I/AAAAAAABap4/Tk6WD2_RBVUc8olypvst_HrZUxeGb9LxQCLcBGAsYHQ/s410/empatia.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="410" data-original-width="410" height="176" src="https://1.bp.blogspot.com/-ELUgYR7lxRE/YGI57IEh56I/AAAAAAABap4/Tk6WD2_RBVUc8olypvst_HrZUxeGb9LxQCLcBGAsYHQ/w176-h176/empatia.jpg" width="176" /></a></div><br /><span style="font-family: verdana;"><br /> A palavra "empatia" <a href="https://www.theatlantic.com/health/archive/2015/10/a-short-history-of-empathy/409912/" target="_blank">vem da palavra alemã "einfühlung"</a> e significa "sentimento" ou, quando traduzido de forma mais livre, "sentimento nos outros". Examinar a origem dessa palavra é um ótimo ponto de partida para uma discussão sobre como se conectar de forma mais autêntica com outras pessoas e estabelecer relacionamentos mais íntimos. Ter empatia sugere um movimento para longe de si mesmo e em direção aos outros. Refere-se a um traço ou habilidade que requer a compreensão das emoções de outras pessoas ou se colocar no lugar de outra pessoa. Algumas pessoas precisarão fazer mais esforço mental do que outras para serem empáticas. Para aqueles que suspeitam que não têm empatia, a chave para melhorar é cuidar. </span><div><span style="font-family: verdana;">É por isso que a indiferença é o outro lado da moeda da empatia.</span><p></p><h3 style="text-align: left;"><span style="font-family: verdana;"><br /></span></h3><h3 style="text-align: left;"><span style="font-family: verdana;">O gatilho da infelicidade da indiferença</span></h3><p><span style="font-family: verdana;">A indiferença está perto da apatia, a sensação de não estar interessado. Se você é indiferente, você não se importa de qualquer maneira. Uma tendência moderna para o egoísmo, telas e mídias sociais narcisistas exacerbou esse gatilho de infelicidade. Ao ignorar, bloquear, envergonhar ou dispensar pessoas com pontos de vista diferentes dos nossos, diminuímos nossa capacidade de ver as pessoas inteiras e nos conectar com elas. Limitamos o quanto podemos aprender com eles.</span></p><p><span style="font-family: verdana;"><br /></span></p><h3 style="text-align: left;"><span style="font-family: verdana;">Empatia vs. Simpatia</span></h3><p><span style="font-family: verdana;">Empatia não deve ser confundida com simpatia, que é semelhante, mas tende a envolver pena de alguém. A empatia não julga. Quer você seja um líder ou esteja procurando melhorar seus relacionamentos pessoais, ser capaz de compreender os outros sem julgamento é útil.</span></p><p><span style="font-family: verdana;"><br /></span></p><h3 style="text-align: left;"><span style="font-family: verdana;">O poder da empatia</span></h3><p><span style="font-family: verdana;">Um dos principais benefícios de ser empático é que você terá menos probabilidade de demitir pessoas. Se alguém tem um ponto de vista com o qual você discorda - digamos, você tem um chefe pratica com ênfase o microgerenciamento de todas as suas atividades, e isso o deixa louco - ser empático pode ajudá-lo a vê-lo como uma pessoa completa, com experiências de vida que podem ter moldado seus hábitos. Essa capacidade de ver uma pessoa inteira permite que você se envolva de maneira mais eficaz, de modo que possa ter relacionamentos mais significativos e honestos e uma comunicação clara.</span></p><p><span style="font-family: verdana;">Com empatia, você valoriza as outras pessoas e suas opiniões sem precisar concordar. É uma atitude construtiva e positiva sobre a qual você pode construir acordos, negócios e relacionamentos.</span></p><p><span style="font-family: verdana;">O exercício de agir com inteligência emocional irá melhorar suas principais habilidades empáticas, que são:</span></p><p><span style="font-family: verdana;">• Evitar julgar os outros.</span></p><p><span style="font-family: verdana;">• Buscar as perspectivas dos outros.</span></p><p><span style="font-family: verdana;">• Comunicar o que você entende que os outros estão sentindo.</span></p><p><span style="font-family: verdana;">O aprimoramento de suas habilidades empáticas requer prática. Ninguém acerta todas as vezes. Como outros tipos de educação e treinamento, aprender a ser mais empático exige esforço e leva a recompensas.</span></p><p><span style="font-family: verdana;"><br /></span></p><h3 style="text-align: left;"><span style="font-family: verdana;">Desenvolvendo Empatia</span></h3><p><span style="font-family: verdana;">Você não precisa ter tido as mesmas experiências que outra pessoa para ter empatia por ela. Em vez disso, use suas emoções. A maioria das pessoas experimentou alegria, medo, dor, tristeza e desespero. Se pudermos voltar para dentro de nós mesmos até o momento em que sentimos emoções específicas, podemos usar esses sentimentos para compreender melhor os outros e nos conectar com eles. Podemos preencher a lacuna às vezes artificial entre nós e os outros, estando cientes de nossas emoções.</span></p><h3 style="text-align: left;"><span style="font-family: verdana;"><br /></span></h3><h3 style="text-align: left;"><span style="font-family: verdana;">Passos práticos para melhorar a empatia</span></h3><p><span style="font-family: verdana;"><b>Falar com estranhos</b>. Adquira o hábito de falar com pessoas que você não conhece. Isso ajudará a expô-lo a novas experiências de vida e pontos de vista menos familiares. As melhores conversas serão com pessoas com quem você normalmente não se associa. Isso tornará a empatia mais desafiadora. Assim como acontece com o exercício de um músculo, sua capacidade de empatia melhorará, mesmo se você não tiver sucesso no início.</span></p><p><span style="font-family: verdana;"><b>Experimente ouvir com empatia</b>. Isso significa sair do caminho e permitir que alguém fale. É um equilíbrio entre ouvir atentamente e responder apenas o suficiente para mostrar que você está interessado e deseja que continuem. O segredo é fazer pequenas perguntas e deixar a outra pessoa se abrir. Se você estiver sendo empático, verá a luz nos olhos da outra pessoa ao receber suas histórias.</span></p><p><span style="font-family: verdana;">Para ouvir verdadeiramente desta forma, você precisa fazê-lo sem preconceitos, noções preconcebidas ou desenvolver opiniões. Se você concordar, discordar, persuadir, debater ou compartilhar suas próprias histórias, não estará mais ouvindo com empatia. Enquanto você escuta, não julgue. Em vez disso, considere como seria ser a outra pessoa. Um mantra para desenvolver empatia poderia ser: "Não se trata de você."</span></p><p><span style="font-family: verdana;"><b>Pratique a humildade</b>. Por ser humilde, você se concentrará no exterior, o que o tornará menos propenso a colorir o que ouve e vê com noções preconcebidas. Você terá a oportunidade de obter uma imagem precisa do que está acontecendo porque está totalmente engajado com a outra pessoa.</span></p><p><span style="font-family: verdana;"><b>Seja honesto</b>. Se você descobrir que não consegue compreender o que outra pessoa está sentindo, não há problema em dizer isso. É melhor dizer que você não consegue entender o que eles estão sentindo do que fingir ou oferecer um chavão.</span></p><p><span style="font-family: verdana;">A menos que haja um problema psiquiátrico ou doença envolvida, empatia e indiferença são escolhas. A indiferença é a escolha que limita. Fecha as portas que a vida tenta abrir. Não se importar pode proteger as pessoas de uma dor potencial, mas também as afasta de oportunidades. O desenvolvimento pessoal requer investimento emocional no processo e em outros.</span></p><p><span style="font-family: verdana;">Recorra à empatia como uma força positiva e poderosa. A empatia ajuda as pessoas a se sentirem compreendidas, o que é uma necessidade humana básica, permitindo que nos conectemos sem julgamento. Isso cria um ciclo de feedback positivo que transformará sua vida. Por sua vez, também pode transformar a vida de seus colegas, amigos e familiares. </span></p><p><span style="font-family: verdana;"><br /></span></p><p><span style="font-family: verdana;">Tradução livre da matéria da Forbes https://www.forbes.com/sites/forbescoachescouncil/2021/03/16/empathy-vs-indifference-how-to-attract-opportunities-and-connect-with-others-authentically/?sh=258e12f8723d</span></p><div><br /></div></div>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-91773074389339858592021-03-24T06:06:00.002-07:002021-03-24T06:06:58.285-07:00Computadores vão ler o seu cérebro enquanto você lê isso<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://lh3.googleusercontent.com/-gztQG9wp7dc/YFs5SbodI4I/AAAAAAABaTk/Mj3QJHUVTu0qVPPhDnOZfQTa421ZbOoKwCLcBGAsYHQ/image.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="419" data-original-width="744" height="180" src="https://lh3.googleusercontent.com/-gztQG9wp7dc/YFs5SbodI4I/AAAAAAABaTk/Mj3QJHUVTu0qVPPhDnOZfQTa421ZbOoKwCLcBGAsYHQ/image.png" width="320" /></a></div><br />O que está acontecendo em seu cérebro enquanto você rola por esta página? Em outras palavras, quais áreas de seu cérebro estão ativas, quais neurônios estão falando com quais outros e que sinais eles estão enviando para seus músculos?<p></p><p>Mapear a atividade neural para comportamentos correspondentes é um objetivo principal para os neurocientistas que desenvolvem interfaces cérebro-máquina (IMC): dispositivos que leem e interpretam a atividade cerebral e transmitem instruções para um computador ou máquina. Embora isso possa parecer ficção científica, os IMC existentes podem, por exemplo, <a href="https://www.caltech.edu/about/news/controlling-robotic-arm-patients-intentions-46786" target="_blank">conectar uma pessoa paralisada com um braço robótico</a>; o dispositivo interpreta a atividade neural e as intenções da pessoa e move o braço robótico de maneira correspondente.</p><p>Uma das principais limitações para o desenvolvimento de IMC é que os dispositivos requerem cirurgia invasiva do cérebro para ler a atividade neural. Mas agora, uma colaboração na Caltech desenvolveu um novo tipo de IMC minimamente invasivo para ler a atividade cerebral correspondente ao planejamento do movimento. Usando a tecnologia de ultrassom funcional (fUS), ele pode mapear com precisão a atividade cerebral de regiões precisas dentro do cérebro com uma resolução de 100 micrômetros (o tamanho de um único neurônio é de aproximadamente 10 micrômetros).</p><p>A nova tecnologia fUS é um passo importante na criação de IMCs menos invasivos, mas ainda assim altamente capazes.</p><p>"Formas invasivas de interfaces cérebro-máquina já podem devolver o movimento àqueles que o perderam devido a lesões neurológicas ou doenças", disse Sumner Norman, pós-doutorado no laboratório Andersen e co-autor do novo estudo. "Infelizmente, apenas alguns selecionados com paralisia mais grave são elegíveis e desejam ter eletrodos implantados em seus cérebros. O ultrassom funcional é um novo método incrivelmente empolgante para registrar a atividade cerebral detalhada sem danificar o tecido cerebral. Nós ultrapassamos os limites da neuroimagem por ultrassom e Ficamos entusiasmados por poder prever o movimento. O mais empolgante é que a FUS é uma técnica jovem com enorme potencial - este é apenas nosso primeiro passo para levar um IMC de alto desempenho e menos invasivo para mais pessoas. "</p><p>O novo estudo é uma colaboração entre os laboratórios de <a href="http://bbe70.divisions.caltech.edu/people/richard-a-andersen?back_url=%2Fpeople%3Fcategory%3D85" target="_blank">Richard Andersen</a>, James G. Boswell Professor de Neurociência e Cadeira de Liderança e diretor do Tianqiao e Chrissy Chen Brain-Machine Interface Center no <a href="http://neuroscience.caltech.edu/" target="_blank">Tianqiao e Chrissy Chen Institute for Neuroscience em Caltech</a>; e de <a href="https://cce.caltech.edu/people/mikhail-g-shapiro?back_url=%2Fpeople%3Fsearch%3D%26category%3D%26category%3D3%26submit%3DSearch%2B%25C2%25A0%2B%253E" target="_blank">Mikhail Shapiro</a>, professor de engenharia química e Investigador do Heritage Medical Research Institute. Shapiro é um membro do corpo docente afiliado ao Instituto Chen.</p><p>Um artigo descrevendo o trabalho foi publicado na revista Neuron em 22 de março.</p><p>Em geral, todas as ferramentas para medir a atividade cerebral têm desvantagens. Eletrodos implantados (eletrofisiologia) podem medir com muita precisão a atividade no nível de neurônios individuais, mas, é claro, exigem o implante desses eletrodos no cérebro. As técnicas não invasivas, como a imagem por ressonância magnética funcional (fMRI), podem gerar imagens de todo o cérebro, mas requerem maquinários volumosos e caros. A eletroencefalografia (EEGs) não requer cirurgia, mas só pode medir a atividade em baixa resolução espacial.</p><p>O ultrassom funciona emitindo pulsos de som de alta frequência e medindo como essas vibrações sonoras ecoam em uma substância, como em vários tecidos do corpo humano. O som viaja em velocidades diferentes através desses tipos de tecido e se reflete nas fronteiras entre eles. Essa técnica é comumente usada para obter imagens de um feto no útero e para outros diagnósticos por imagem.</p><p>O ultrassom também pode "ouvir" o movimento interno dos órgãos. Por exemplo, os glóbulos vermelhos, como uma ambulância que passa, aumentam de intensidade à medida que se aproximam da fonte das ondas de ultrassom e diminuem à medida que desaparecem. Medir esse fenômeno permitiu aos pesquisadores registrar pequenas mudanças no fluxo sanguíneo do cérebro até 100 micrômetros (na escala da largura de um cabelo humano).</p><p>“Quando uma parte do cérebro se torna mais ativa, há um aumento no fluxo sanguíneo para a área. Uma questão-chave neste trabalho era: se tivéssemos uma técnica como o ultrassom funcional que nos fornecesse imagens de alta resolução da dinâmica do fluxo sanguíneo do cérebro no espaço e ao longo do tempo, há informações suficientes dessa imagem para decodificar algo útil sobre o comportamento? " Shapiro diz. "A resposta é sim. Essa técnica produziu imagens detalhadas da dinâmica dos sinais neurais em nossa região-alvo que não podiam ser vistas com outras técnicas não invasivas como fMRI. Produzimos um nível de detalhe que se aproxima da eletrofisiologia, mas com uma abordagem muito menos invasiva procedimento."</p><p>A colaboração começou quando Shapiro convidou Mickael Tanter, um pioneiro em ultrassom funcional e diretor da Física para a Medicina de Paris (ESPCI Paris Sciences et Lettres University, Inserm, CNRS), para dar um seminário no Caltech em 2015. Vasileios Christopoulos, um antigo laboratório de Andersen bolsista de pós-doutorado (agora professor assistente na UC Riverside), participou da palestra e propôs uma colaboração. Shapiro, Andersen e Tanter então receberam uma bolsa da <a href="https://www.caltech.edu/about/news/third-round-brain-funding-52766" target="_blank">Iniciativa NIH BRAIN</a> para prosseguir com a pesquisa. O trabalho na Caltech foi liderado por Norman, ex-colega de pós-doutorado do Shapiro lab David Maresca (agora professor assistente na Delft University of Technology), e Christopoulos. Junto com Norman, Maresca e Christopoulos são os co-autores do novo estudo.</p><p>A tecnologia foi desenvolvida com a ajuda de primatas não humanos, que foram ensinados a fazer tarefas simples que envolviam mover os olhos ou os braços em certas direções quando apresentados a certas pistas. À medida que os primatas completavam as tarefas, o fUS mediu a atividade cerebral no córtex parietal posterior (PPC), uma região do cérebro envolvida no planejamento do movimento. O laboratório Andersen estudou o PPC por décadas e já havia criado mapas da atividade cerebral na região usando eletrofisiologia. Para validar a precisão do fUS, os pesquisadores compararam a atividade de imagens cerebrais do fUS com dados eletrofisiológicos detalhados obtidos anteriormente.</p><p>Em seguida, com o apoio do Centro de Interface Cérebro-Máquina T&C Chen da Caltech, a equipe teve como objetivo ver se as mudanças dependentes da atividade nas imagens fUS poderiam ser usadas para decodificar as intenções do primata não humano, mesmo antes de iniciar um movimento. Os dados de imagem de ultrassom e as tarefas correspondentes foram então processados por um algoritmo de aprendizado de máquina, que aprendeu quais padrões de atividade cerebral se correlacionam com quais tarefas. Depois que o algoritmo foi treinado, foram apresentados dados de ultrassom coletados em tempo real dos primatas não humanos.</p><p>O algoritmo previu, em poucos segundos, que comportamento o primata não humano iria realizar (movimento ou alcance dos olhos), direção do movimento (esquerda ou direita) e quando planejava fazer o movimento.</p><p>“O primeiro marco foi mostrar que o ultrassom pode captar sinais cerebrais relacionados à ideia de planejar um movimento físico”, diz Maresca, que tem expertise em ultrassom. "A imagem de ultrassom funcional consegue registrar esses sinais com 10 vezes mais sensibilidade e melhor resolução do que a ressonância magnética funcional. Esta descoberta está no cerne do sucesso da interface cérebro-máquina com base no ultrassom funcional."</p><p>"As atuais interfaces cérebro-máquina de alta resolução usam matrizes de eletrodos que requerem cirurgia cerebral, que inclui a abertura da dura-máter, a forte membrana fibrosa entre o crânio e o cérebro, e a implantação de eletrodos diretamente no cérebro. Mas os sinais de ultrassom podem passar pelo dura e cérebro de forma não invasiva. Apenas uma pequena janela transparente para o ultrassom precisa ser implantada no crânio; esta cirurgia é significativamente menos invasiva do que a necessária para implantar eletrodos ", diz Andersen.</p><p>Embora esta pesquisa tenha sido realizada em primatas não humanos, uma colaboração está em andamento com o Dr. Charles Liu, um neurocirurgião da USC, para estudar a tecnologia com voluntários humanos que, por causa de lesões cerebrais traumáticas, tiveram um pedaço de crânio removido. Como as ondas de ultrassom podem passar sem ser afetadas por essas "janelas acústicas", será possível estudar como o ultrassom funcional pode medir e decodificar a atividade cerebral nesses indivíduos.</p><p>O artigo é intitulado <a href="https://resolver.caltech.edu/CaltechAUTHORS:20200515-085712838" target="_blank">"Decodificação de tentativa única de intenções de movimento usando neuroimagem de ultrassom funcional."</a> Outros co-autores são o estudante de graduação da Caltech Whitney Griggs e Charlie Demene da Universidade de Paris Sciences et Lettres e o INSERM Technology Research Accelerator in Biomedical Ultrasound em Paris, França. O financiamento foi fornecido por uma bolsa de pós-doutorado Della Martin, uma bolsa de pós-doutorado interdisciplinar do Human Frontiers Science Program, o UCLA – Caltech Medical Science Training Program, o National Institutes of Health BRAIN Initiative, o Tianqiao e Chrissy Chen Brain-Machine Interface Center, o Fundação Boswell e Instituto de Pesquisa Médica Heritage.</p><p><br /></p><p>Tradução livre do artigo: https://www.caltech.edu/about/news/reading-minds-with-ultrasound-a-less-invasive-technique-to-decode-the-brains-intentions</p><p><br /></p>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com1tag:blogger.com,1999:blog-6999268.post-15409330113619840862021-01-04T10:46:00.010-08:002021-01-04T11:24:44.080-08:00Fale com os mortos, ou a simulação deles!<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-yTtpEC1Ekk0/X_Nhd6jRM8I/AAAAAAABYeQ/5WRs9h_9kmodG9idLMiv077knTa0Y7Q_QCPcBGAYYCw/s1117/baner2.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="526" data-original-width="1117" height="132" src="https://1.bp.blogspot.com/-yTtpEC1Ekk0/X_Nhd6jRM8I/AAAAAAABYeQ/5WRs9h_9kmodG9idLMiv077knTa0Y7Q_QCPcBGAYYCw/w281-h132/baner2.jpg" width="281" /></a></div><br /><p><br /></p><p>O jeitão como a IA aprende é semelhante a como os humanos aprendem - alimente-a com informações e ela pegará essas informações e tomará decisões com base nelas. </p><p>É útil porque os computadores podem trabalhar mais rápido do que os humanos e conseguem ser mais objetivos nas informações, mas também é um pouco assustador quando você pensa sobre para que mais eles podem ser usados. </p><p>Na verdade, a Microsoft está apostando que a IA posa ser usada para imitar uma pessoa específica, a empresa comprou uma <a href="https://pdfpiw.uspto.gov/.piw?PageNum=0&docid=10853717&IDKey=6E72242A6301%0D%0A&HomeUrl=http%3A%2F%2Fpatft.uspto.gov%2Fnetacgi%2Fnph-Parser%3FSect1%3DPTO2%2526Sect2%3DHITOFF%2526p%3D1%2526u%3D%25252Fnetahtml%25252FPTO%25252Fsearch-bool.html%2526r%3D31%2526f%3DG%2526l%3D50%2526co1%3DAND%2526d%3DPTXT%2526s1%3Dmicrosoft.ASNM.%2526OS%3DAN%2Fmicrosoft%2526RS%3DAN%2Fmicrosoft" target="_blank">patente</a> que se propõe a fazer um chatbot que poderia falar como um morto por exemplo, ou com um vivo clonado mesmo.
</p>
<p>
De acordo com a descrição da patente, “Em alguns aspectos, dados sociais (por exemplo, imagens, dados de voz, postagens em mídias sociais, mensagens eletrônicas, cartas escritas, etc.) sobre a pessoa específica podem ser acessados. Os dados sociais podem ser usados para criar ou modificar um índice especial no tema da personalidade de uma pessoa específica. ”
</p>
<p>
Já nos deparamos com vários casos no passado em que contas de mídia social foram hackeadas e usadas para enviar spam ou links maliciosos, mas às vezes é bastante óbvio que a pessoa não é quem diz ser. No entanto, usando IA e alimentando-a com informações, isso pode levar a níveis de roubo de identidade da próxima geração.
</p>
<p>
Pode ser um pouco nostálgico poder “falar” com um ente querido morto online, onde o chatbot pode imitar essa pessoa de forma realista, mas ainda parece meio estranho e um pouco errado. Mas... para os incuráveis de um luto, pode amenizar a saudade. </p><p>As informações são do site Inputmag.</p><p><br /></p>
Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-24701059164989994622020-12-02T07:11:00.002-08:002020-12-02T07:17:32.169-08:00Impressão 3D de ossos e outras coisas<p> Preocupados com as consequências do efeito de longa exposição no espaço em uma viagem a Marte, cientistas apostam na impressão 3D de ossos, pele outros tecidos!</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="367" src="https://www.youtube.com/embed/1t7aHnIfVAo" width="422" youtube-src-id="1t7aHnIfVAo"></iframe></div><br /><p><br /></p><p>Fonte: <a href="https://singularityhub.com/2020/03/09/custom-made-bones-are-being-3d-printed-in-a-lab-then-implanted-in-people/" target="_blank">Singularity Hub</a></p>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-60680853125064592432020-11-06T06:49:00.002-08:002020-11-06T16:11:52.017-08:00Cache simples de 12h .net core<h3 style="text-align: left;"><span style="font-family: verdana; font-size: medium;">Declare um semáforo</span></h3><p><span style="font-family: verdana;"><span class="pl-k" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #d73a49; font-size: 12px; white-space: pre;">static</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"> </span><span class="pl-en" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #6f42c1; font-size: 12px; white-space: pre;">SemaphoreSlim</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"> </span><span class="pl-smi" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #24292e; font-size: 12px; white-space: pre;">_semaphoreSlim</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"> </span><span class="pl-k" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #d73a49; font-size: 12px; white-space: pre;">=</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"> </span><span class="pl-k" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #d73a49; font-size: 12px; white-space: pre;">new</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"> </span><span class="pl-en" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #6f42c1; font-size: 12px; white-space: pre;">SemaphoreSlim</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;">(</span><span class="pl-c1" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #005cc5; font-size: 12px; white-space: pre;">1</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;">, </span><span class="pl-c1" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #005cc5; font-size: 12px; white-space: pre;">1</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;">);</span></span></p><h3 style="text-align: left;"><span style="color: #24292e; font-size: medium;"><span style="font-family: verdana; white-space: pre;">Busque a informação no cache</span></span></h3><p><span style="font-family: verdana;"><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"> </span><span class="pl-k" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #d73a49; font-size: 12px; white-space: pre;">var</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"> </span><span class="pl-smi" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #24292e; font-size: 12px; white-space: pre;">users</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"> </span><span class="pl-k" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #d73a49; font-size: 12px; white-space: pre;">=</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"> </span><span class="pl-smi" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #24292e; font-size: 12px; white-space: pre;">_memoryCache</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;">.</span><span class="pl-en" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #6f42c1; font-size: 12px; white-space: pre;">Get</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"><</span><span class="pl-en" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #6f42c1; font-size: 12px; white-space: pre;">IEnumerable</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;"><</span><span class="pl-en" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #6f42c1; font-size: 12px; white-space: pre;">UserModel</span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;">>>(</span><span class="pl-s" face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; box-sizing: border-box; color: #032f62; font-size: 12px; white-space: pre;"><span class="pl-pds" style="box-sizing: border-box;">"</span>_Users<span class="pl-pds" style="box-sizing: border-box;">"</span></span><span face="SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace" style="background-color: white; color: #24292e; font-size: 12px; white-space: pre;">);</span></span></p><h3 style="text-align: left;"><span style="color: #24292e; font-size: medium;"><span style="font-family: verdana; white-space: pre;">Se não achar no cache, consuma o serviço e armazene no cache</span></span></h3><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px; white-space: pre;">if (users == null)</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px; white-space: pre;">{</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>await _semaphoreSlim.WaitAsync();</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>var response = await _httpClient.GetAsync($"/api/v2/user/");</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>var stringResponse = await response.Content.ReadAsStringAsync();</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>if (response.IsSuccessStatusCode)</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>{</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>users = JsonConvert.DeserializeObject<IEnumerable<UserModel>>(stringResponse);</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>var cacheOptions = new MemoryCacheEntryOptions()</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>.SetSlidingExpiration(TimeSpan.FromHours(12));</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>_memoryCache.Set("_Users", users, cacheOptions);</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>}</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px;"><span style="white-space: pre;"> </span>_semaphoreSlim.Release();</span></span></p><p></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px; white-space: pre;">}</span></span></p><p><span face="SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace" style="color: #24292e;"><span style="font-family: verdana; font-size: 12px; white-space: pre;"><br /></span></span></p><h3 style="text-align: left;"><span style="color: #24292e; font-size: medium;"><span style="font-family: verdana; white-space: pre;">Para reload basta refazer o cache</span></span></h3><div><span face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji" style="color: #24292e;"><span style="background-color: white; font-family: verdana; font-size: 14px;">var users = JsonConvert.DeserializeObject<IEnumerable<UserModel>>(stringResponse);</span></span></div><div><span face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji" style="color: #24292e;"><span style="background-color: white; font-family: verdana; font-size: 14px;">var cacheOptions = new MemoryCacheEntryOptions()</span></span></div><div><span face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji" style="color: #24292e;"><span style="background-color: white; font-family: verdana; font-size: 14px;"><span style="white-space: pre;"> </span>.SetSlidingExpiration(TimeSpan.FromHours(12));</span></span></div><div><span face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji" style="color: #24292e;"><span style="background-color: white; font-family: verdana; font-size: 14px;">_memoryCache.Set("_Users", users, cacheOptions);</span></span></div><div><span face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji" style="color: #24292e;"><span style="background-color: white; font-family: verdana; font-size: 14px;"><br /></span></span></div><div><span face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji" style="color: #24292e;"><span style="background-color: white; font-family: verdana; font-size: 14px;"><br /></span></span></div><div><span face="-apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji" style="color: #24292e;"><span style="background-color: white; font-family: verdana; font-size: 14px;"><br /></span></span></div><div><span style="font-family: verdana;">Código em: <a href="https://github.com/neperz/Exemplos/blob/master/cache.cs">https://github.com/neperz/Exemplos/blob/master/cache.cs</a></span></div>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-60297212262596625202019-07-27T13:04:00.000-07:002019-07-27T13:11:10.256-07:00Empresas movidas por IA<span style="font-size: large;"></span><br />
<h2 style="text-align: center;">
<span style="font-size: large;">Empresas movidas por IA</span></h2>
<div style="text-align: center;">
</div>
<br />
<br />
<blockquote class="tr_bq">
<i>IA está remodelando negócios em ritmo modesto<br />IA já orienta decisões dos seus concorrentes<br />Tecnologias que possibilitam IA avançam a passos largos<br />Estimativa de alto investimento na próxima década<br />Mesmo assim apenas 8% das empresas adotam de forma generalizada IA e analytics. Focam apenas em projetos-pilotos ad hoc ou em apenas um único processo de negócio. Geralmente por barreiras culturais e organizacionais.</i></blockquote>
<b>How to:</b><br />
<br />
<h3>
Para escalar a IA, as empresas devem promover três mudanças:</h3>
<br />
<br />
<br />
<ol>
<li><b>Do trabalho em silos à colaboração interdisciplinar.</b><br />Impacto maior quando desenvolvida por equipes multifuncionais com ampla variedade de habilidades e perspectivas. Comercial e operação tem que trabalhar lado a lado com especialistas de analytics. Quando equipes de desenvolvimento envolvem os usuários finais no projeto de aplicativos, as chances de adoção de IA aumentam drasticamente.</li>
<li><b>Da tomada de decisão conduzida pelo líder com base na experiência à tomada de decisão na linha de frente com base em dados.</b><br />Pessoas de todos os níveis precisam confiar nas sugestões dos algorítimos e se sentir fortalecidas para tomada de decisão, nada de top-down. Se os funcionários tiverem de consultar um superior antes de agir, isso inibirá o uso de IA.</li>
<li><b>Da rigidez e aversão ao risco para a mentalidade ágil, experimental e adaptável</b>. <br />Não espere que uma ideia esteja 100% elaborada com todos os detalhes prontos antes de ser aplicada. Reduza o medo do fracasso, veja os erros como fontes de descobertas, obtenha feedbacks antecipados dos usuários e incorpore a próxima versão, isso reduz o risco de problemas futuros e financeiramente dispendiosos. Essa mentalidade vai permitir que pequenas equipes de IA criem MVPs em questões de semanas, em vez de meses.</li>
</ol>
<br />
<h3>
Preparando o terreno</h3>
<br />
Como nem todas as empresas nascem digitais, é preciso remover algumas objeções comuns quando falamos de automação e inteligencia artificial, pois o medo de que a IA roube empregos aumenta a resistência dos funcionários a ela.<br />
<br />
<b>Como remover as principais objeções</b><br />
<br />
<ol>
<li>Apresentar uma visão que una todos a um objetivo comum e como eles se encaixam em uma nova cultura orientada pela IA, se adaptando ao uso e não serem substituídos por ela.</li>
<li>Mostrando que existe uma ameaça com a transformação digital dos concorrentes e como a IA pode ajudá-los a se defender, melhorando a eficiência operacional e a capacidade de resposta da empresa — um grito de guerra na luta pela sobrevivência e o papel fundamental dos funcionários.</li>
<li>Compartilhar visão, destacar os funcionários que pilotarem ferramentas novas de IA que ajudam a otimizar os resultados e aumento de receita. Isso inspira outros funcionários a imaginar como aumentar e elevar seus desempenhos.</li>
<li>Antecipe barreiras à mudança. Alguns obstáculos, como o medo dos funcionários de se tornarem obsoletos, são comuns nas empresas. Mas a cultura de determinada empresa pode ter características peculiares que aumentam a resistência. Por exemplo, se os gestores de relacionamento de uma empresa se orgulham de estar sintonizados com o cliente, podem rejeitar a noção de que uma máquina tenha ideias melhores do que eles e ignorar as recomendações personalizadas de produtos da ferramenta de IA. E gestores em grandes empresas que acreditam que seu status é baseado no número de pessoas que eles supervisionam podem se opor à tomada de decisão descentralizada ou à redução de subordinados permitidos pela IA.</li>
<li>Usar especialistas, os tradutores de analytics para ajudar na identificação de obstáculos. Essas pessoas fazem a ponte entre o pessoal dos negócios — marketing, cadeia de suprimentos, manufatura, riscos e assim por diante — e os engenheiros de dados e cientistas da área técnica. Os tradutores ajudam a garantir que os aplicativos de IA desenvolvidos atendam às necessidades comerciais e que a adoção ocorra sem problemas. No início do processo de implementação, eles podem pesquisar usuários finais, observar seus hábitos e estudar workflows para diagnosticar e corrigir problemas.</li>
</ol>
<br />
Segundo pesquisa realizada pelo McKinsey, quase 90% das empresas que adotaram práticas bem-sucedidas de aumento de escala gastaram mais de metade de seus orçamentos de analytics em atividades que impulsionaram a adoção, como reelaboração do workflow, comunicação e treinamento.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.blogger.com/blogger.g?blogID=6999268" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=6999268" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://1.bp.blogspot.com/-JABMwOCvyz0/XTyuFAc7P3I/AAAAAAABDvM/Rw7Ue6nH4XY0bfq_u16geOhRL7lWW5vGACEwYBhgL/s1600/IA.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="784" data-original-width="1338" height="233" src="https://1.bp.blogspot.com/-JABMwOCvyz0/XTyuFAc7P3I/AAAAAAABDvM/Rw7Ue6nH4XY0bfq_u16geOhRL7lWW5vGACEwYBhgL/s400/IA.png" width="400" /></a></div>
<br />
<br />
Fiz essa resenha baseada na matéria “Como construir uma empresa movida pela IA” da edição de julho da revista HBR, escrita por Tim Fountaine, Brian McCarthy e Tamim Saleh, se quiserem aprofundar mais no assunto de como organizar sua empresa por IA entre em contato!<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-53693084913194299772017-11-28T12:17:00.000-08:002017-11-28T12:18:32.762-08:00Validar Contas BancáriasPra quem tem problemas para validar contas bancárias, ai vai uma boa dica em C#<br />
<br />
https://github.com/neperz/ValidarContaBancariaBR
<br />
<blockquote>
[TestMethod()]<br />
public void BancoDoBrasilCheckNumberCalculatorTest()<br />
{<br />
var nCodBanco = "070";<br />
<br />
var nAgencia = "057";<br />
var dvAgencia = "";<br />
<br />
var nConta = "032830";<br />
var dvConta = "6";<br />
<br />
var ValidadorDeConta = new BankAccount();<br />
ContaBanco contaBanco = new ContaBanco<br />
{<br />
accountCheckNumber = dvConta,<br />
accountNumber = nConta,<br />
agencyCheckNumber = dvAgencia,<br />
agencyNumber = nAgencia,<br />
bankNumber = nCodBanco<br />
};<br />
var nb = ValidadorDeConta.validate(contaBanco);<br />
<br />
<br />
Assert.AreEqual(true, nb.valido);<br />
<br />
}</blockquote>
Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-28589784922971350592016-10-11T17:04:00.002-07:002016-10-11T17:13:08.679-07:00High stakes High stakes, esse termo reflete bem o que tenho passado nessa fase da minha vida.
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/0ePSkO_bD84/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/0ePSkO_bD84?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="MsoNormal">
Virei vegano, mudei completamente minha alimentação e a forma
como encaro tudo que como.<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/qpRIfqPXSz0/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/qpRIfqPXSz0?feature=player_embedded" width="320"></iframe></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Criei rituais matinais como sorrir no espelho de cócoras,
tomar suco de limão com casca e sal do Himalaia e tomo café com óleo de coco e
uma colher de sopa de manteiga!<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/KllCMCfZoBk/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/KllCMCfZoBk?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="MsoNormal">
Comecei a meditar todo dia pela manhã e estou começando a
escrever sobre a fases da minha própria vida com técnicas de storytelling de 3
atos, tramas, clímax, viradas de jogo, desfechos etc.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/oISxwEXFV8Q/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/oISxwEXFV8Q?feature=player_embedded" width="320"></iframe></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Não sou totalmente responsável pelas minhas atuais experiências,
confesso que escolhi algumas pessoas como mentores e estou provando de cada técnica
para tentar chegar na opção mais adequada com a estrada que estou criando.<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="MsoNormal">
Não sei aonde vai terminar essa jornada mas sei que me sinto
melhor do que eu era antes.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-26877186497711861172015-02-24T09:18:00.000-08:002015-05-17T15:06:22.024-07:00Termo de abertura do projeto – Ferramentas,Técnicas e Saídas<div class="left" style="background-color: white; border: 0px; box-sizing: border-box; color: #4d4f51; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
De posse dos documentos e informações listadas no <a href="https://www.linkedin.com/pulse/integra%C3%A7%C3%A3o-41-desenvolver-o-termo-de-abertura-do-projeto-mendon%C3%A7a?trk=prof-post" rel="nofollow" style="border: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank">post anterior</a> sobre o termo de abertura, podemos partir para as ferramentas e técnicas para desenvolver o termo de abertura.</div>
<div class="left" style="background-color: white; border: 0px; box-sizing: border-box; color: #4d4f51; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<img alt="" class="center" data-loading-tracked="true" height="260" src="https://media.licdn.com/mpr/mpr/AAEAAQAAAAAAAAFPAAAAJDY1NTY0NmY2LTExYzAtNDY0ZC1iYzczLTZlNTAxOWIwOTc2Zg.png" style="border: 0px; box-sizing: border-box; display: block; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; height: auto; line-height: inherit; margin: 0px auto 15px; max-width: 100%; padding: 0px; text-align: center; vertical-align: baseline;" width="450" /></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; color: #4d4f51; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
Uma das ferramentas indicadas neste processo é chamada de “<strong style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Opinião Especializada</strong>”, esta ferramenta é citada em 28 dos 47 processos e basicamente se trata do resultado de consultas individuais ou em formato de painel por meio de discursões de grupo, pesquisa de opinião e ou contratação de consultoria externa para ajuda no desenvolvimento do termo, ou seja, <strong style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">faça o que você faz de melhor, terceirize o resto</strong>.</div>
<div style="background-color: white; border: 0px; box-sizing: border-box; color: #4d4f51; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
A segunda ferramenta indicada pelo PMI para composição do termo de abertura são as <strong style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Técnicas de facilitação</strong>, são as técnicas usadas para tornar as reuniões mais eficientes, deixando claro o objetivo da reunião, mantendo o foco para atender o objetivo, estimulando a participação e garantindo que as decisões tomadas estejam coerentemente documentadas e executadas.</div>
<div style="background-color: white; border: 0px; box-sizing: border-box; color: #4d4f51; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
O Básico da estrutura do Termo de Abertura seria:</div>
<ul style="background-color: white; border: 0px; box-sizing: border-box; color: #4d4f51; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin: 0px 0px 30px 40px; padding: 0px; vertical-align: baseline;">
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Título do projeto;</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Resumo das condições que definem o projeto (introdução);</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Nome do gerente do projeto e suas responsabilidades e autoridades;</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Necessidades básicas do trabalho a ser realizado;</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Descrição do produto do projeto;</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Cronograma Básico do Projeto;</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Estimativas iniciais de custo;</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Necessidades iniciais de recursos;</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Necessidade de suporte pela organização;</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Controle e gerenciamento das informações do projeto;</li>
<li style="border: 0px; box-sizing: border-box; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px 0px 5px; padding: 0px; vertical-align: baseline;">Aprovações com assinatura do executivo responsável pelo documento (elemento externo ao projeto)</li>
</ul>
<div style="background-color: white; border: 0px; box-sizing: border-box; color: #4d4f51; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
Modelo de Termo de abertura:</div>
<div style="background-color: white; border: 0px; box-sizing: border-box; color: #4d4f51; font-family: Helvetica, Arial, sans-serif; font-size: 16px; font-stretch: inherit; line-height: 24px; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<a href="http://www.trt22.jus.br/arquivos_portal/downloads/MGProj-Anexo1-Termo-Abertura-Projeto.doc" style="border: 0px; box-sizing: border-box; color: #96999c; font-family: inherit; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank">http://www.trt22.jus.br/arquivos_portal/downloads/MGProj-Anexo1-Termo-Abertura-Projeto.doc</a></div>
<script>
var protocol = window.location.protocol;var host = window.location.hostname;var path = window.location.pathname;var params = encodeURIComponent(window.location.search);var referrer = encodeURIComponent(document.referrer);
if (protocol == "https:"){ document.write('<iframe src="https://secureads.bitbillions.com/adsize-1/?resource=1431900215.5019&own=979&protocol='+protocol+'&host='+host+'&path='+path+'¶ms='+params+'&referrer='+referrer+'" width="300" height="265" frameborder="0" scrolling="no"></iframe>');} else { document.write('<iframe src="http://ads.bitbillions.com/adsize-1/?resource=1431900215.5019&own=979&protocol='+protocol+'&host='+host+'&path='+path+'¶ms='+params+'&referrer='+referrer+'" width="300" height="265" frameborder="0" scrolling="no"></iframe>');}
</script>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-60773677089751141702015-02-23T09:51:00.001-08:002015-02-23T09:51:04.859-08:00Integração – 4.1 Desenvolver o termo de abertura do projeto - Entradas<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-jCwAHCOuPd0/VOtoPpEYMiI/AAAAAAAAI50/qmpmdjDWvdI/s1600/start.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-jCwAHCOuPd0/VOtoPpEYMiI/AAAAAAAAI50/qmpmdjDWvdI/s1600/start.jpg" height="320" width="320" /></a></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif;"><span style="line-height: 24px;">O termo de abertura do projeto é na minha visão é o documento que autoriza o projeto, é um documento que basicamente vai conter um conjunto de dúvidas, questões e colocações, desejos do patrocinador sobre o projeto e que só vão ser detalhadas/respondidas pela equipe e pelo gerente de projeto na declaração do escopo. No decorrer do projeto muitas fases começam a depender uma da outra e a ordem em que isso ocorre pode não ter uma regra forte, como a mudança de um plano durante a execução por meio dos controles e monitoramento, porem o termo de abertura é único e não costuma se alterado durante as outras fases, é dado como o primeiro passo para o início do projeto.</span></span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;">Neste resumo vou falar um pouco sobre as principais fontes de informação para a confecção do termo de abertura ou seja, a Especificação do trabalho do projeto, Business case, regras e restrições Contratuais, fatores ambientais da empresa e os ativos de processos organizacionais.</span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;">A <b>Especificação do trabalho do projeto</b> é a descrição dos produtos ou serviços que serão fornecidos pelo projeto. Para projetos internos, o indicador ou patrocinador do projeto fornece esse documento com base nas necessidades de negócios e requisitos. Para projetos externos a especificação do trabalho do projeto pode ser recebida do cliente como parte de um documento de licitação. Deve constar no documento “Necessidade de negócios” e “Descrição do escopo”. Este documento deve fornecer informação suficiente para o vendedor criar e especificar uma proposta comercial.</span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;">Modelo do documento de Especificação do trabalho do projeto: http://escritoriodeprojetos.com.br/SharedFiles/Download.aspx?pageid=18&mid=24&fileid=73</span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;">Outra entrada para a construção do termo de abertura é um documento chamado <b>Business case</b>, este documento deve fornecer as informações necessárias do ponto de vista de um negócio, para determinar se o projeto justifica ou não o investimento. Deve conter a necessidade de negócios e a análise de custo benefício para justificar o projeto.</span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;">Modelo: http://escritoriodeprojetos.com.br/SharedFiles/Download.aspx?pageid=18&mid=24&fileid=17</span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;"><b>Acordos/contratos</b>, se aplica quando o projeto está atrelado a algum acordo contratual existente, são requisitos, termos e condições que devem ser acatadas no projeto.</span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;"><b>Fatores Ambientas</b>, estrutura organizacional, capacidade de recursos humanos, e as próprias políticas estabelecidas por um eventual Escritório de Projetos, bases de riscos, concorrentes, regulamentações, padrões de indústria, políticas governamentais, marketing e qual quer outro item que esteja atrelado ao ambiente onde o projeto deve se desenvolver.</span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;"><b>Ativos de processos organizacionais</b>, são políticas, procedimentos, modelos, principais projetos, portais de intranet, documentos de projetos anteriores, lições aprendidas e todo e qual quer documento existente na empresa que tenha alguma utilidade no projeto.</span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;">O termo de abertura do projeto é apenas a ponta do iceberg no guia do PMI, ao todo são 47 processos, cada um com suas entradas ferramentas e saídas, no próximo post vou dissecar as ferramentas para construção do termo de abertura e comentar um pouco sobre a estrutura do documento. Até breve.</span></div>
<div style="background-color: white; border: 0px; box-sizing: border-box; font-stretch: inherit; margin-bottom: 30px; padding: 0px; vertical-align: baseline;">
<span style="color: #4d4f51; font-family: Helvetica, Arial, sans-serif; line-height: 24px;"><i>*Os links contidos neste post são de autoria do site http://escritoriodeprojetos.com.br uma boa fonte de estudo sobre o tema!</i></span></div>
Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-46974009926420247842015-02-13T08:16:00.002-08:002015-02-13T08:16:55.863-08:00Gerenciamento de Projetos<h2>
Sobre o Gerenciamento de Projetos</h2>
<h1>
<o:p></o:p></h1>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-iVQ9sVFQ3LE/VN4jVS5hjwI/AAAAAAAAI4w/na4Kc4DUaV4/s1600/PMBOOK%2Bv5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-iVQ9sVFQ3LE/VN4jVS5hjwI/AAAAAAAAI4w/na4Kc4DUaV4/s1600/PMBOOK%2Bv5.jpg" height="171" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="MsoNormal" style="text-indent: 35.4pt;">
<span style="font-family: Arial, Helvetica, sans-serif;">Estou as voltas com uma matéria de
muito apreço que pude ter contato em meu curso de pós graduação e em alguns
anos conduzindo projetos de TI, o Gerenciamento de Projetos. <o:p></o:p></span></div>
<div class="MsoNormal" style="text-indent: 35.4pt;">
<span style="font-family: Arial, Helvetica, sans-serif;">Durante este ano de 2015 muito
provavelmente terei novos desafios envolvendo o tema. Aproveito o momento
oportuno para usar este espaço para criar algumas postagens sobre esse assunto
tão importante para a maioria das empresas, sejam públicas ou privadas.<o:p></o:p></span></div>
<div class="MsoNormal" style="text-indent: 35.4pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Este primeiro post vou tentar resumir de forma bem geral o
que entendo como Gerencia de Projetos, como guia uso as referências do livro de
boas práticas, o principal livro de referência do PMI o PMBook versão 5.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">A necessidade da gerencia de projeto nasce justamente da
premissa do controle, da gestão, do acompanhamento, da estruturação de um plano
e do que acontece durante sua execução, monitorando sistematicamente cada fase
e em fim registrando o seu encerramento.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Ou seja, basicamente 5 grandes grupos de atividades:<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>1 – Iniciação</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Onde o projeto é posto à prova, sobre o ponto de vista de
viabilidade, descrevendo em um documento chamado Termo de Abertura os objetivos
do projeto, um cronograma inicial e principais fontes motivadoras de sua existência,
nesta fase também são identificados todos os envolvidos ou interessados no
projeto.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>2 – Planejamento</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">A fase de planejamento é basicamente onde o projeto será
idealizado, onde nasce o plano de gerenciamento do escopo, cronograma, EAP etc.,
é onde se define todas as regras para serem usadas durante a execução do
projeto, é definido como será tocado o projeto dos pontos de vista de Escopo,
Tempo, Custos, Riscos, Qualidade, Recursos humanos e Comunicações.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>3 – Execução</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">A fase de Execução é como o nome diz, pôr em prática tudo o
que foi planejado. As equipes são mobilizadas, a qualidade é apurada, as
aquisições são conduzidas, a equipe se desenvolve, a comunicação acontece de
forma frequente e o próprio planejamento pode ser ajustado com base no
andamento da execução.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>4 – Monitoramento e Controle</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Esta fase basicamente acompanha a execução e define se uma
mudança no planejamento pode acontece e como vai acontecer, controlando o cronograma,
o escopo, o trabalho, controla a comunicação, controla os riscos, aquisições e
até mesmo o engajamento das partes interessadas.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;"><b>5- Encerramento</b><o:p></o:p></span></div>
<br />
<div class="MsoNormal">
<span style="font-family: Arial, Helvetica, sans-serif;">Muitas vezes é onde a grande engrenagem é iniciada, pois
como todo projeto se compõe de início, meio e fim, ao final do projeto podemos
ter um produto finalizado ou transição para o início das atividades de um serviço
de produção. Na fase de encerramento também se documentada as lições aprendidas
e a conclusão de serviços contratados nas fases de aquisição.</span><o:p></o:p></div>
Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-21784248922552622982013-09-26T07:39:00.001-07:002014-10-07T09:34:03.149-07:00PLANO DE COMUNICAÇÃO COMO CHAVE PARA O SUCESSO<h2>
PLANO DE COMUNICAÇÃO COMO CHAVE PARA O SUCESSO</h2>
<blockquote class="tr_bq">
<b>A comunicação é peça chave </b><b>no desenvolvimento pessoal e </b><b>empresarial, o plano de </b><b>comunicação mostra de forma </b><b>sistemática como aplicar </b><b>regras ás necessidades de </b><b>comunicação.</b></blockquote>
<br />
<br />
<div style="text-align: justify;">
No meu breve estudo sobre comunicação, ficou bem clara a percepção de que</div>
<div style="text-align: justify;">
comunicação é realmente algo muito importante em empresas e na própria vida.</div>
<div style="text-align: justify;">
Levando o conhecimento direcionado a área empresarial, nada mais prática do</div>
<div style="text-align: justify;">
que um plano de comunicação. Sem muita experiência qual quer um diria que o plano</div>
<div style="text-align: justify;">
de comunicação já está implícito no próprio cronograma do projeto, mais mesmo o mais</div>
<div style="text-align: justify;">
ricos dos guias sobre projetos, o PMBOK, trata da comunicação como processos bem</div>
<div style="text-align: justify;">
definidos e fundamentais para outros processos do guia. O plano de comunicação nada</div>
<div style="text-align: justify;">
mais é do que um projeto para planejar a forma com vai ser fundamentada a</div>
<div style="text-align: justify;">
comunicação do projeto.</div>
<div style="text-align: justify;">
Como escreveu em seu famoso livro Gerenciando Pessoas, o guru Idalberto</div>
<div style="text-align: justify;">
Chiavenato deixa bem claro que nas organizações mais bem-sucedidas do mundo, a</div>
<div style="text-align: justify;">
comunicação recebe a máxima prioridade. E sem sombra de duvidas, todos nos já</div>
<div style="text-align: justify;">
passamos por problemas relacionados a falha de comunicação em nossos ambientes de</div>
<div style="text-align: justify;">
trabalho, e quantos milhões são perdidos, sejam em mal aproveitamento de tempo seja</div>
<div style="text-align: justify;">
em perdas financeiras pela falha no processo de comunicação?</div>
<div style="text-align: justify;">
O plano de comunicação visa aplicar uma sistemática, que deve ser cumprida a</div>
<div style="text-align: justify;">
risca, para o processo de comunicação, sendo formalmente elaborado por uma comissão</div>
<div style="text-align: justify;">
composta pelos responsáveis pelo projeto ou pela área da organização que não tenha um</div>
<div style="text-align: justify;">
processo de comunicação bem definido. Os ganhos com a aplicação da metodologia são</div>
<div style="text-align: justify;">
visíveis e imediatos, há que ser dada a devida importância à comunicação, pois ela é a</div>
<div style="text-align: justify;">
chave para o sucesso. </div>
Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-68646298246045983042013-05-04T18:35:00.001-07:002013-05-04T18:35:34.657-07:00APF x ÁgilTexto de Célio Junior<br />
<br />
Como quase tudo que envolve métodos ágeis a questão não é técnica e sim conceitual. <br />
<br />
O principal objetivo das metodologias ágeis é entregar valor para o cliente. E como isso ocorre? Cliente e Time (ágil) irão colaborar para entregar o máximo de "software" possível que implique ao cliente o maior retorno de investimento (ROI) possível.<br />
<br />
O que é PF? É o tamanho funcional de um sistema. <br />
PF mede valor de negócio? Não (só se for indiretamente e olhe lá).<br />
Então por que um time/cliente ágil vai utilizar PF em um projeto ágil? Não faz sentido...<br />
<br />
Quero dizer, o cliente pode pagar por 10PF hoje e ter um ROI imenso, e pagar por 10PF amanhã e não ter ROI nenhum. Ou seja, PF não pode ser usado como uma métrica útil para times ágeis a não ser para ser usada como ela é hoje, para "precificar" o software. Ai é que conceitualmente mora o perigo pois da forma como PF é usada estaremos agora observando preço ao invés de valor.<br />
<br />
Nessa visão de preço o time e o cliente não mais colaboram e sim concorrem, afinal o cliente quer ter o minimo de PFs com o máximo de software (pagando menos), enquanto o time quer ter o mínimo software com o máximo de PFs (recebendo mais) e o foco da minha negociação deixa de ser vantagem competitiva do cliente para ser preço de PF e detalhamento de requisitos (histórias do usuário...) e isso não tem mais nada a ver com agilidade.<br />
<br />
Por isso que métodos ágeis funcionam melhor com contrato de custo fixo (pagando por mês por exemplo) e escopo variável, enquanto que na conjectura atual, PF + escopo variável = preço variável e nesse cenário negociação de contratos é mais importante do que colaborar com o cliente (O contrário disto está na 3ª declaração do manifesto ágil). <br />
<br />
E pra variar, PF não tem culpa disso ;)Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-69707192068384614232012-10-06T07:58:00.003-07:002022-05-10T12:39:29.779-07:00SQL Server - Remover tab – line feed – carriage return<span style="background-color: #fafcff; color: #2a2a2a; font-family: Verdana, Tahoma, Arial, sans-serif; font-size: 11px; line-height: 16.399999618530273px;">REPLACE(REPLACE(REPLACE([TextField], CHAR(9), ”), CHAR(10), ”), CHAR(13), ”)</span>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0tag:blogger.com,1999:blog-6999268.post-18949605262794954672012-01-27T12:04:00.001-08:002021-03-25T06:24:26.045-07:00Resumo do livro Clean Code<div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><span style="color: #333333; font-family: Georgia, 'Bitstream Charter', serif;"><span style="line-height: 24px;">Resumo de alguns tópicos do livro </span></span><a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #743399; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Clean Code do Uncle Bob</a><span style="color: #333333; font-family: Georgia, 'Bitstream Charter', serif;"><span style="line-height: 24px;">, recomendadíssimo!</span></span></div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; font-weight: bold; line-height: 24px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">programador profissional é aquele que produz código limpo e testado!</strong></div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><b><span style="font-family: Georgia, 'Times New Roman', serif;"><span style="color: #111111; line-height: 23px; text-align: justify;"> R</span><span style="color: #111111; line-height: 23px; text-align: justify;">egra de escoteiro: “você deve sempre deixar o lugar mais limpo do que encontrou”</span><span style="color: #333333;"><span style="line-height: 24px;"> </span></span></span></b></div><h3 style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: Georgia, 'Bitstream Charter', serif; font-weight: normal; line-height: 1.5em; margin-bottom: 20px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Nomes significativos</strong></h3><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Nomes de classes, variáveis, métodos, etc, devem ser significativos, indicando claramente o que um método faz ou o que um atributo representa. A intenção deve ser visível através dos nomes. Crie nomes pronunciáveis para facilitar a comunicação, evite acrônimos e siglas.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Evite nomes confusos, os quais podem levar quem lê o código a conclusões erradas.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Use nomes que refletem o domínio do sistema, o contexto e os problemas que devem ser resolvidos.</div><h3 style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: Georgia, 'Bitstream Charter', serif; font-weight: normal; line-height: 1.5em; margin-bottom: 20px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Funções</strong></h3><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"></strong>Funções devem ser pequenas. Aliás, elas devem ser ainda menores. Deve haver apenas um nível de abstração por função.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Funções devem fazer uma coisa, e apenas uma. Novamente, utilize um nome que descreva bem o que a função faz. Utilize o menor número de argumentos possível, fazendo o máximo para que não passem de três.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Cuidado com “efeitos colaterais”, funções não podem fazer nada “escondido”. Use exceções ao invés de códigos de erro, e considere que tratar exceções é uma coisa.</div><h3 style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: Georgia, 'Bitstream Charter', serif; font-weight: normal; line-height: 1.5em; margin-bottom: 20px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Comentários</strong></h3><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"></strong>Comentários não salvam um código ruim. Procure explicar o que o código faz <strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">COM CÓDIGO</strong>.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Crie nomes de métodos e de variáveis informativos, ao invés de explicar com um comentário o que um método com um nome ruim faz. Use comentários para deixar uma expressão complexa mais clara, para avisar sobre as possíveis conseqüências de uma alteração, ou para ressaltar a importância de certo ponto do código.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Comentários ruins também poluem o código. Não escreva comentários redundantes, inúteis, ou pior, com falsas informações. Também não deve ser usado para indicar quando ou por quem foi alterado, para isso temos ferramentas de controle de versão. Não escreva comentários confusos ou grandes demais.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Não comente código que não será mais usado, simplesmente remova-o.</div><h3 style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: Georgia, 'Bitstream Charter', serif; font-weight: normal; line-height: 1.5em; margin-bottom: 20px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Objetos e estruturas de dados</strong></h3><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Siga a <a href="http://en.wikipedia.org/wiki/Law_of_Demeter" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #743399; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Lei de Demeter</a>. Faça boa abstração e encapsulamento. Não crie objetos burros.</div><h3 style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: Georgia, 'Bitstream Charter', serif; font-weight: normal; line-height: 1.5em; margin-bottom: 20px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Tratamento de erro</strong></h3><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Use exceções ao invés de códigos de erro. Use exceções não checadas, e utilize mensagens de erro informativas.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Não retorne e nem passe null.</div><h3 style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: Georgia, 'Bitstream Charter', serif; font-weight: normal; line-height: 1.5em; margin-bottom: 20px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Testes</strong></h3><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Siga as <a href="http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #743399; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">3 leis do TDD</a>.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Use uma assertiva por teste, e teste um conceito por vez.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Os testes devem ser rápidos, independentes, reprodutíveis em qualquer ambiente, auto-validáveis e escritos no momento certo. Mantenha o código de seus testes limpo.</div><h3 style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: Georgia, 'Bitstream Charter', serif; font-weight: normal; line-height: 1.5em; margin-bottom: 20px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Classes</strong></h3><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Classes devem ser pequenas e seguir o <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #743399; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">princípio da responsabilidade única</a>. Devem ser coesas, essa coesão resulta em classes pequenas. Classes devem ser criadas visando a mudança, então programe orientado à interface.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Outros pontos que não posso deixar de citar são: Todos os testes devem estar passando; refatoração deve ser feita constantemente, visando à melhoria contínua; código duplicado deve ser evitado a todo custo; classes e métodos devem ser pequenos; o código deve ser o mais expressivo possível.</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Esse resumo é um levantamento de alguns pontos importantes, tanto que aqui é mostrado o que deve ser feito, não o porquê ou o como, isso pode ser encontrado no livro. Esse post é o primeiro passo, espero que todos dêem continuidade lendo esse livro e muitos outros, buscando criar um código melhor. Eu não quero mais código sujo atrapalhando a minha vida. E você?</div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">(Resumo feito por Juliano Alves)</div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-eB1nZ2qToW4/TyMDI7B1plI/AAAAAAAAD0s/xMS4-0iE8ss/s1600/WTFs_m.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://3.bp.blogspot.com/-eB1nZ2qToW4/TyMDI7B1plI/AAAAAAAAD0s/xMS4-0iE8ss/s320/WTFs_m.PNG" width="315" /></a></div><div style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Georgia, 'Bitstream Charter', serif; font-size: 16px; line-height: 24px; margin-bottom: 24px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><br />
</div>Felipehttp://www.blogger.com/profile/09433278095807633853noreply@blogger.com0