Two days git training with labs
First day covers git basis and essential commands
Second day covers git additional command with a big lab using a git workflow
Introduction to DevOps covering:
- Why DevOps
- How to build DevOps Teams in your organization
- Cloud Tools you can use for DevOps (Azure and AWS)
- Legacy Software and DevOps
- What is the Future of DevOps
- People to Follow
SOLID Principles and The Clean ArchitectureMohamed Galal
This presentation is held at @blablaconnect Cairo office, Monday 31 December 2018.
In this presentation we will discuss the following topics:
- SOLID principles.
- Design Pattern vs. Clean Architecture.
- Successful software architecture characteristics.
- The Clean Architecture.
- Real life example.
ArgoCD is a Continuous Delivery and Deployment tool based on GitOps principles. It helps to automate deployment to Kubernetes cluster from github. We will look into how to adopt and use argoCD for continuous deployment.
Best practices with git - The essentials you should know about git to use if efficiently
Workshop by Otto Kekäläinen at OpenFest 7.11.2015, Sofia, Bulagaria.
This 68 slides beast surely has something new even for seasoned git developers!
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...GITS Indonesia
Pada Juli 2019, berlangsung GITS Class #16, workshop gratis dan terbuka untuk umum, di kantor GITS Indonesia. Farhan (DevOps di GITS Indonesia) membawakan materi tentang CI/CD menggunakan GitLab Runner.
Jangan sampai ketinggalan!
Follow akun GITS Indonesia untuk mendapatkan info terkait event seru selanjutnya!
Instagram: @gitsindonesia
Twitter: @gitsindonesia
Facebook: GITS Indonesia
Medium: GITS Apps Insight
YouTube: GITS Indonesia
LinkedIn: GITS Indonesia
Website: https://gits.id/
Introduction to Git & GitHub.
Agenda:
- What’s a Version Control System?
- What the heck is Git?
- Some Git commands
- What’s about GitHub?
- Git in Action!
Slides of talk given at London Study of Enterprise Agile Meetup in June 2019.
We go over GitOps and how it affects delivery speed in software development and release.
SOLID : les principes à l’origine du succès de Symfony et de vos applicationsVladyslav Riabchenko
SOLID est un acronyme représentant cinq principes de bases de la programmation orientée objet permettant le développement de logiciels fiables, évolutifs et robustes. Le framework Symfony est un excellent support pour illustrer chacun de ces principes. Nous verrons ainsi que SOLID est à l’origine de sa flexibilité, sa fiabilité mais aussi de sa maintenabilité et son évolutivité. Nous verrons également comment appliquer ces principes pour améliorer son code métier et perfectionner l’architecture de son application.
GitOps: Git come unica fonte di verità per applicazioni e infrastrutturasparkfabrik
GitOps è un nuovo metodo di CD che utilizza Git come unica fonte di verità per le applicazioni e per l'infrastruttura (declarative infrastructure / infrastructure as code), fornendo sia il controllo delle revisioni che il controllo delle modifiche. In questo talk vedremo i concetti alla base di CI/CD, ovvero Continuous Integration e Continuous Deployment (o anche Continuous Delivery), pratiche nello sviluppo software che permettono ai team di creare dei progetti collaborativi in modo rapido, efficiente e idealmente con meno errori. Infine vedremo come implementare un flusso di lavoro GitOps usando Github actions e ArgoCD.
Code Review tool for personal effectiveness and waste analysisMikalai Alimenkou
Usually it is hard to analyze personal effectiveness and detect wastes in development process because developer’s work decomposition is not transparent and available for analysis. As a good sample of ineffective process imagine developer, who spends 1 day on task implementation and then reimplements it several times according to code review notes during next 2 days. Or another developer, who is waiting for code review during 2 days, switching context to other tasks, finally gets notes and switches back to initial task, trying to refresh all details in his head. And so on and so forth…
Code review tool usage helps to aggregate lots of useful information about any code change at any stage (static analysis, code review, rework, acceptance, integration into main branch). In this talk I’m going to demontrate how this information could be used for detailed analysis of development effectiveness and wastes detection. Based on mentioned analysis you could implement many improvements for your development process and then measure their success.
Two days git training with labs
First day covers git basis and essential commands
Second day covers git additional command with a big lab using a git workflow
Introduction to DevOps covering:
- Why DevOps
- How to build DevOps Teams in your organization
- Cloud Tools you can use for DevOps (Azure and AWS)
- Legacy Software and DevOps
- What is the Future of DevOps
- People to Follow
SOLID Principles and The Clean ArchitectureMohamed Galal
This presentation is held at @blablaconnect Cairo office, Monday 31 December 2018.
In this presentation we will discuss the following topics:
- SOLID principles.
- Design Pattern vs. Clean Architecture.
- Successful software architecture characteristics.
- The Clean Architecture.
- Real life example.
ArgoCD is a Continuous Delivery and Deployment tool based on GitOps principles. It helps to automate deployment to Kubernetes cluster from github. We will look into how to adopt and use argoCD for continuous deployment.
Best practices with git - The essentials you should know about git to use if efficiently
Workshop by Otto Kekäläinen at OpenFest 7.11.2015, Sofia, Bulagaria.
This 68 slides beast surely has something new even for seasoned git developers!
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...GITS Indonesia
Pada Juli 2019, berlangsung GITS Class #16, workshop gratis dan terbuka untuk umum, di kantor GITS Indonesia. Farhan (DevOps di GITS Indonesia) membawakan materi tentang CI/CD menggunakan GitLab Runner.
Jangan sampai ketinggalan!
Follow akun GITS Indonesia untuk mendapatkan info terkait event seru selanjutnya!
Instagram: @gitsindonesia
Twitter: @gitsindonesia
Facebook: GITS Indonesia
Medium: GITS Apps Insight
YouTube: GITS Indonesia
LinkedIn: GITS Indonesia
Website: https://gits.id/
Introduction to Git & GitHub.
Agenda:
- What’s a Version Control System?
- What the heck is Git?
- Some Git commands
- What’s about GitHub?
- Git in Action!
Slides of talk given at London Study of Enterprise Agile Meetup in June 2019.
We go over GitOps and how it affects delivery speed in software development and release.
SOLID : les principes à l’origine du succès de Symfony et de vos applicationsVladyslav Riabchenko
SOLID est un acronyme représentant cinq principes de bases de la programmation orientée objet permettant le développement de logiciels fiables, évolutifs et robustes. Le framework Symfony est un excellent support pour illustrer chacun de ces principes. Nous verrons ainsi que SOLID est à l’origine de sa flexibilité, sa fiabilité mais aussi de sa maintenabilité et son évolutivité. Nous verrons également comment appliquer ces principes pour améliorer son code métier et perfectionner l’architecture de son application.
GitOps: Git come unica fonte di verità per applicazioni e infrastrutturasparkfabrik
GitOps è un nuovo metodo di CD che utilizza Git come unica fonte di verità per le applicazioni e per l'infrastruttura (declarative infrastructure / infrastructure as code), fornendo sia il controllo delle revisioni che il controllo delle modifiche. In questo talk vedremo i concetti alla base di CI/CD, ovvero Continuous Integration e Continuous Deployment (o anche Continuous Delivery), pratiche nello sviluppo software che permettono ai team di creare dei progetti collaborativi in modo rapido, efficiente e idealmente con meno errori. Infine vedremo come implementare un flusso di lavoro GitOps usando Github actions e ArgoCD.
Code Review tool for personal effectiveness and waste analysisMikalai Alimenkou
Usually it is hard to analyze personal effectiveness and detect wastes in development process because developer’s work decomposition is not transparent and available for analysis. As a good sample of ineffective process imagine developer, who spends 1 day on task implementation and then reimplements it several times according to code review notes during next 2 days. Or another developer, who is waiting for code review during 2 days, switching context to other tasks, finally gets notes and switches back to initial task, trying to refresh all details in his head. And so on and so forth…
Code review tool usage helps to aggregate lots of useful information about any code change at any stage (static analysis, code review, rework, acceptance, integration into main branch). In this talk I’m going to demontrate how this information could be used for detailed analysis of development effectiveness and wastes detection. Based on mentioned analysis you could implement many improvements for your development process and then measure their success.
Presentation from the August 2012 NBIC (Netherlands Bioinformatics Centre) BioAssist programmer's meeting. Overview of the content:
1. what are code reviews, some different ways of reviewing code
2. why would you want to do code reviews, what makes sense and what not
3. how can you do code reviews (or formal inspections), some real world experience
4. using tools for code reviews
5. some links for more information
6. two bonus slides with a few links to gems from the Triumph of the Nerds documentary, well worth watching!
Publish or Perish: Questioning the Impact of Our Research on the Software Dev...Margaret-Anne Storey
A Video for this talk can be found here: https://www.youtube.com/watch?v=DvRdBb9TEUI
Abstract: How often do we pause to consider how we, as a community, decide which developer problems we address, or how well we are doing at evaluating our solutions within real development contexts? Many of our research contributions in software engineering can be considered as purely technical. Yet somewhere, at some time, a software developer may be impacted by our research. In this talk, I invite the community to question the impact of our research on software developer productivity. To guide the discussion, I first paint a picture of the modern-day developer and the challenges they experience. I then present 4+1 views of software engineering research --- views that concern research context, method choice, research paradigms, theoretical knowledge and real-world impact. I demonstrate how these views can be used to design, communicate and distinguish individual studies, but also how they can be used to compose a critical perspective of our research at a community level. To conclude, I propose structural changes to our collective research and publishing activities --- changes to provoke a more expeditious consideration of the many challenges facing today's software developer.
(Thanks to Brynn Hawker for slide design and proposed new badges. brynn@hawker.me)
Capability Building for Cyber Defense: Software Walk through and Screening Maven Logix
Dr. Fahim Arif who is the Director R&D at MCS, principal investigator and GHQ authorized consultant for Nexsource Pak (Pvt) Ltd) discussed the capability of building cyber defense in the Data Protection and Cyber Security event that was hosted recently by Maven Logix. In his session he gave the audience valuable information about the life cycle of a cyber-threat discussing what and how to take measures by performing formal code reviews, code inspections. He discussed essential elements of code review, paired programming and alternatives to treat and tackle cyber-threat
Software engineering practices and software quality empirical research resultsNikolai Avteniev
This presentation summarizes empirical research findings in software engineering practices including test driven development, peer code reviews, and defect prediction.
Purpose Before Action: Why You Need a Design Language Systemcreckling
Abstract: Ask two designers to design the same user interface and you will likely end up with two very different designs and interactions on the page. Ask two developers to implement that page and you will end up with different code, too! And that, in a nutshell, is why you need a system.
Have you ever wondered what it takes to build your own design language system? It sounds intimidating, but it's not!
Link: https://uxpabostonconference2018.sched.com/event/E2NS/purpose-before-action-why-you-need-a-design-language-system
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pptxsarah david
Elevate code quality with our optimal Code Review Checklist! Uncover issues, boost security, and enhance performance. Developers waiting four days for reviews? Our research exposes pitfalls like "Looks Good to Me" comments. Optimize workflows, automate reviews, and accelerate delivery. Survey shows 60% find reviews valuable but face bottlenecks. Our blog reveals the Checklist: Procedure, six steps, and best practices. Benefits include problem discovery and enhanced security. Dive in for a streamlined approach with our proven checklist, overcoming challenges for consistent, high-quality results.
code_review_checklist_6_actions_to_improve_the_quality_of_your_reviews.pdfsarah david
Elevate code quality with our optimal Code Review Checklist! Uncover issues, boost security, and enhance performance. Developers waiting four days for reviews? Our research exposes pitfalls like "Looks Good to Me" comments. Optimize workflows, automate reviews, and accelerate delivery. Survey shows 60% find reviews valuable but face bottlenecks. Our blog reveals the Checklist: Procedure, six steps, and best practices. Benefits include problem discovery and enhanced security. Dive in for a streamlined approach with our proven checklist, overcoming challenges for consistent, high-quality results.
Tom DeMarco states that “You can’t control what you can’t measure”, but how much can we change and control (with) what we measure? This talk investigates the opportunities and limits of data-driven software engineering, shows which opportunities lie ahead of us when we engage in mining and analyzing software engineering process data, but also highlights important factors that influence the success and adaptability of data-based improvement approaches.
We know that Code Reviews are a Good Thing. We probably have our own personal lists of things we look for in the code we review, while also fearing what others might say about our code. How to we ensure that code reviews are actually benefiting the team, and the application? How do we decide who does the reviews? What does "done" look like?
In this talk, Trisha will identify some best practices to follow. She'll talk about what's really important in a code review, and set out some guidelines to follow in order to maximise the value of the code review and minimise the pain.
One of the biggest problems with code reviews is that they often derail developer productivity. Learn about the essentials of code reviews, where they are today, and where they can be using AI/ML technologies. With machine learning technology, code quality can be improved, and developers can focus on invention, rather than remediation.
Similar to On to code review lessons learned at microsoft (20)
Strategies for Successful Data Migration Tools.pptxvarshanayak241
Data migration is a complex but essential task for organizations aiming to modernize their IT infrastructure and leverage new technologies. By understanding common challenges and implementing these strategies, businesses can achieve a successful migration with minimal disruption. Data Migration Tool like Ask On Data play a pivotal role in this journey, offering features that streamline the process, ensure data integrity, and maintain security. With the right approach and tools, organizations can turn the challenge of data migration into an opportunity for growth and innovation.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Why React Native as a Strategic Advantage for Startup Innovation.pdfayushiqss
Do you know that React Native is being increasingly adopted by startups as well as big companies in the mobile app development industry? Big names like Facebook, Instagram, and Pinterest have already integrated this robust open-source framework.
In fact, according to a report by Statista, the number of React Native developers has been steadily increasing over the years, reaching an estimated 1.9 million by the end of 2024. This means that the demand for this framework in the job market has been growing making it a valuable skill.
But what makes React Native so popular for mobile application development? It offers excellent cross-platform capabilities among other benefits. This way, with React Native, developers can write code once and run it on both iOS and Android devices thus saving time and resources leading to shorter development cycles hence faster time-to-market for your app.
Let’s take the example of a startup, which wanted to release their app on both iOS and Android at once. Through the use of React Native they managed to create an app and bring it into the market within a very short period. This helped them gain an advantage over their competitors because they had access to a large user base who were able to generate revenue quickly for them.
Modern design is crucial in today's digital environment, and this is especially true for SharePoint intranets. The design of these digital hubs is critical to user engagement and productivity enhancement. They are the cornerstone of internal collaboration and interaction within enterprises.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Hivelance Technology
Cryptocurrency trading bots are computer programs designed to automate buying, selling, and managing cryptocurrency transactions. These bots utilize advanced algorithms and machine learning techniques to analyze market data, identify trading opportunities, and execute trades on behalf of their users. By automating the decision-making process, crypto trading bots can react to market changes faster than human traders
Hivelance, a leading provider of cryptocurrency trading bot development services, stands out as the premier choice for crypto traders and developers. Hivelance boasts a team of seasoned cryptocurrency experts and software engineers who deeply understand the crypto market and the latest trends in automated trading, Hivelance leverages the latest technologies and tools in the industry, including advanced AI and machine learning algorithms, to create highly efficient and adaptable crypto trading bots
Designing for Privacy in Amazon Web ServicesKrzysztofKkol1
Data privacy is one of the most critical issues that businesses face. This presentation shares insights on the principles and best practices for ensuring the resilience and security of your workload.
Drawing on a real-life project from the HR industry, the various challenges will be demonstrated: data protection, self-healing, business continuity, security, and transparency of data processing. This systematized approach allowed to create a secure AWS cloud infrastructure that not only met strict compliance rules but also exceeded the client's expectations.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
On to code review lessons learned at microsoft
1. On to code review:
Lessons learned @ Microsoft
Michaela Greiler
2. Team: Tools for Software Engineers (TSE)
• Build
• Code review
• Testing
• Static analysis
• Branch health
• Software Development Practices
• Empirical Software Engineering
2
3. Tools for Software Engineers(*)
• TSE’s mission is to shorten the
development cycle without
impacting quality
• TSE’s customers are developers
(*) http://research.microsoft.com/tse
Ideas
Build
Product
Measure
Data
Learn
4. Code reviewing @Microsoft
• Do code reviews make a difference?
• How do we ensure an effective and efficient review process?
• Does each code change need a review?
• Can we automate parts of code reviews?
MSR Redmond/TSE:
Michaela Greiler
Jacek Czerwonka
Wolfram Schulte
Suresh Thummalapenta
Kim Herzig
MSR Redmond:
Christian Bird
Nachi Nagappan
Thomas Zimmermann
MSR Cambridge:
Brendan Murphy
4
10. Common code review steps:
• Preparation of the code to be reviewed
• Selection of reviewers
• Notification of the selected reviewers or stakeholders
• Feedback provided by reviewers
• Iteration involving communication between the author and reviewer
• Signoff by reviewers
• Check-in of the code change to the target system
12
15. Code Review at Microsoft is Big
• Great tool experience
• Viral adoption
• High user satisfaction
• Natural tool consolidation
• Data consolidation
• 5.5M+ Code Reviews by all products since 2010
• Engineers spend more than 30 minutes a day in code reviews
17
16. Code Reviews Are Not Free
Potential Benefits
• More maintainable designs
• More consistent code base
• Knowledge sharing
• Better awareness of changes
• Additional defects found
Potential Costs
• Time spent by reviewers
• Time spent by author addressing
feedback
• Time spent by change waiting in
process
18
17. Monitoring and improvement
• Several questions arise:
• Is the time reviewing wise spend?
• Do we find bugs in code reviews?
• What is useful code review feedback?
• Which issues are found during code review?
• How long do engineers spend on a code review?
• Which circumstances lead to more effective code reviews?
• …
• Drive tool improvement
• New features
• Tool integration
• …
19
18. Seeking answers
• Interview engineers
• Perform ethnographical observations
• Survey the engineers
• Look at the data traces left by engineers
Qualitative approach
Quantitative approach
20
19. Mixed Method Research
Is a research approach or methodology
• for questions that call for real-life contextual understandings;
• employing rigorous quantitative research assessing magnitude and
frequency of constructs and
• rigorous qualitative research exploring the meaning and
understanding of constructs;
DR. MARGARET-ANNE STOREY
Professor of Computer Science
University of Victoria
All methods are inherently flawed!
Generalizability
Precision Realism
21
21. • What is codemine? What data does codemine have?
23
22. • What is codemine? What data does codemine have?
24
23. Code Review Analytics Architecture
More information? See article: Lessons Learned from Building and Deploying a Code Review Analytics Platform
(Christian Bird, Trevor Carnahan,Michaela Greiler)
Established in June 2012 as “Garage Project”
• 200GB Raw (compressed)
• 500GB Curated (compressed)
• > 5000 Projects
• > 5M Reviews by 50K Distinct Authors
• > 8M Iterations
• > 8M Review Participants
• > 15M Comment Threads
• Running in Microsoft Azure
• Won 3 internal engineering awards
• Funded by Tools for Software Engineers as part of
Codemine
25
26. Characteristics of Useful Code Reviews:
An Empirical Study at Microsoft
Amiangshu Bosu, Michaela Greiler, Christian Bird
28
27. “Was this an impactful review, a useful
comment? You know, not just a
comment, but did it result in a change
that wouldn’t have been there before.”
- Development Team Manager
29
28. Study Goals
•Identify factors that impact feedback usefulness
• Question: What makes a code review comment useful?
•Recommendations for effectiveness improvements
• What factors are related to usefulness feedback?
30
30. Asked author what makes code review comments useful
Asked code review author to rate 20-25 comments
?
Phase 1: Interview Developers
32
31. Useful:
Pointing out defects
Validation issues
Info about
execution
environments
API/tool suggestions
Team conventions
Designs to follow
Somewhat Useful:
Code formatting
Typos
Questions that make
code more
comprehensible
Not Useful:
Comments not in
the changed code
Praise
Future work/Not
immediately
actionable
Which comments are useful?
33
32. Positive
sentiment?
Is status
won’t fix?
Is status
won’t fix?
Only one
comment
in thread?
Change
within one
line?
Third
iteration?
Is status
closed?
Not Useful
Not Useful Not Useful
Not Useful
Useful Useful
Useful
Useful
85% Recall
89% Precision
Phase 2: Build Comment Classifier
34
33. Phase 3: Investigated Factors of review
effectiveness
• Classified 1.5 million reviews
• Related comment usefulness to:
• Characteristics of the reviewer
• Characteristics of the team
• Characteristics of the change under review
35
34. • After four reviews of a file, a developer’s knowledge reaches mastery and plateaus
• It takes between six months and a year to become a high quality reviewer at MS
• Quality of feedback degrades when there are more twenty files in a change
More results
in the paper
Phase 3: Investigated Factors of review
effectiveness
36
35. Recommendations
• Include new developers for training
• Include experienced developers for useful feedback
• Select reviewers based on their past history with the
changed files
• Avoid submitting large changes for review
37
36. Why do Code Review?
“The human eye has an almost infinite
capacity for not seeing what it does not
want to see [...] Programmers, if left to
their own devices will ignore the most
glaring errors in the output -- errors
that anyone else can see in an instant.”
Weinberg
38
37. Code Reviews Do Not Find Bugs:
How the Current Code Review Best Practice Slows Us Down
Jacek Czerwonka, Michaela Greiler, Jack Tilford
39
38. Why Code Review?
40
Reason for Code Reviewing Rank
Code improvement 1
Find defects 2
Increase knowledge transfer 3
Find alternative solutions 4
Improve the development process 5
Avoid breaking builds 6
Build team awareness 7
Shared code ownership 8
Team assessment 9
40. Study: Comments Classification
Adapted from : M. Mäntylä and C. Lassenius. What Types of Defects Are Really
Discovered in Code Reviews? IEEE Transactions Software Engineering,
35(3):430–448, 2009
By: Amiangshu Bosu (U of Alabama), Michaela Greiler (TSE), Christian
Bird (Microsoft Research Redmond), Characteristics of Useful Code
Reviews: An Empirical Study at Microsoft (MSR 2015)
15% of all
~50% of all
42
41. Study: Code Review Usefulness
Adapted from : M. Mäntylä and C. Lassenius. What Types of Defects Are Really
Discovered in Code Reviews? IEEE Transactions Software Engineering,
35(3):430–448, 2009
By: Amiangshu Bosu (U of Alabama), Michaela Greiler (TSE), Christian
Bird (Microsoft Research Redmond), Characteristics of Useful Code
Reviews: An Empirical Study at Microsoft (MSR 2015)
43
44. Observations, Interviews and Survey
Observations & Interviews
• 4 teams
• 18 develops/managers
• Interviews during or shortly
after code review (situated
insights)
• Witness interactions not visible
in the trace data
• Highlighting cultural and social
issues
46
45. Observations, Interviews and Survey
Observations & Interviews
• 4 teams
• 18 develops/managers
• Interviews during or shortly
after code review (situated
insights)
• Witness interactions not visible
in the trace data
• Highlighting cultural and social
issues
Follow-up Survey
• Total Respondents: 911/4,300
• Years of Experience in the Software Industry:
• 2+: 87%
• 6+: 70%
• 10+: 40 %
• Time Employed at Microsoft
• 2+ years: 72%
• 6+ years: 43%
• 10+ years: 17%
• Experience Code Reviewing
• 2-5 years: 80.3%
• 10+: 22%
47
47. “Usually you write up some code and then you
send it out for review, and then about a day later
you ping them to remind them... and then about
half a day later you go to their office and knock
on their door." (Participant 7)
Getting feedback in a timely manner
49
48. Large reviews & understanding
motivation and purpose of code
“It's just this big incomprehensible mess... then
you can't add any value because they are just
going to explain it to you and you're going to
parrot back what they say." (Participant 13)
50
49. Challenge during Code Reviewing Overall Rank
Receiving feedback in a timely manner 1
Review size 2
Managing time constraints 3
Understanding the code's purpose 4
Understanding the motivations for the change 5
Obtaining insightful feedback 6
Bikeshedding (disputing minor issues) 7
Understanding how the change was implemented 8
Maintaining code quality 9
Reaching consensus 10
Finding relevant documentation 11
Managing communication channels 12
Identifying who to talk to 13 51
51. Receive feedback in a timely manner
53
“Usually I try to get the person who I'm going
to have review the thing to actually sit down
and talk with them before I put out the code
review'' (Participant 7)
52. Receiving Feedback in a timely manner &
Managing time constraints
• Author:
• Aim for small, incremental changes
• Allow reviewers to volunteer to perform a review
• Notify potential reviewers in advance
• Know when to skip a review
• Run tests and analysis before
• Reviewer:
• Set dedicated but bounded time aside for the review
• Review frequently, fewer changes but more often
• Provide feedback as soon as possible
54
53. Better understanding. ddetter feedback.
55
“A bad reviewer tries to force their
preference on you. A good code reviewer
makes your code conform to certain
principles, but not opinion"
(Participant 4)
“Typically [a good code review] has a good
description of what the problem was, what the
solution is, and if it's a big change, it has
[documentation explaining] what it's doing and
how it's integrated with everything else.“
(Participant 4)
Better feedback.
54. Better understanding. Better feedback.
• Author:
• Aim for small, incremental changes
• Cluster related changes and submit changes with context
• Document the motivation
• Select reviewers with the right expertise
• Show gratitude & carefully consider feedback
• Reviewer:
• Use richer communication channels, e.g. face-to-face meetings
• Use tools that provide traceability for non-contentious or sensitive issues
• Give constructive and respectful feedback
• Justify and explain the reasons for rejecting a change
• Focus on core issues first
56
55. As an organization, establish a review policy
that promotes:
• Build a positive review culture that sets the tone for feedback
• Ensure time spent reviewing is “counted" and “expected"
• Watch for negative impacts of employee assessment or incentives
• Ensure appropriate tools are used
• Make sure tools integrate well
• Ensure sufficient training (e.g. junior working alongside senior)
• Develop, reflect on, and revise code reviewing policies and checklists.
• Resolve bottlenecks
• Identifying inappropriate or aggressive communication
57
56. Tool improvements
• Enforce a reviewing workflow
• Support finding right experts
• Show test coverage of code under review
• Automatic clustering of changes into groups of related entities
• Automate feedback
• Traceability support
• Dashboards for metrics and pending reviews
• Management for notifications
• Integration with other communication tools
58