Code reviews are one of the most effective tools we have, if we use them right. This talk discusses the technical, cultural and psychological factors that make for more productive code reviews and happier coworkers.
Aistė Stikliutė - Testing in continuous deliveryAgile Lietuva
Continuous delivery makes it possible to develop and deploy software within hours instead of months or weeks or days. But what about testing? Testing is not fast. Which means you will have to cut corners, but add additional measures to compensate. Many companies market their continuous delivery practices, so others can see how cool they are, but also learn from their experiences. In this talk I will go through some highlights and things that work well and not so well in these example continuous delivery implementations, and then will concentrate on testing patterns, approaches and little hints that I have learnt both from these examples and from my own experience.
The agile community has done a very good job over the last few years in re-thinking the software development process and practices. What about testing though ? Are we really agile about it ? For most companies testing and QAs are still a bottleneck. In this session we will explore practices and techniques which will enable us to bring testing to the next level. We will focus particurarly on the concept of acceptance tests driven development and the role played by the "software developer in test"
Making the build self-testing is one of the best pratices of continuous integration. This was the main goal of this presentation, the work done in a REST API, using Symfony, phpspec, PHPUnit and Behat.
Bye Bye Cowboy-Coder days! by Vytautas Dagilis.
„Working Effectively with Legacy Code“- one of the best books which talks about Unit testing and TDD. Presentation covers best practices listed in the book as well as shows which of them were successfully implemented in practice. You will find out how to commit changes and be sure that they work even without running and testing application itself.
The core idea of lean is to eliminate/reduce non-value-added activities (termed "wastes") and thus increase customer value. The Agile itself is a lean for the software development life cycle, and I am sharing a couple of Agile best practices adopted by my teams to make the Scrum methodology more extra lean.
The presentation contains the best agile practices and their benefits in terms of Lean in an agile methodologies
Aistė Stikliutė - Testing in continuous deliveryAgile Lietuva
Continuous delivery makes it possible to develop and deploy software within hours instead of months or weeks or days. But what about testing? Testing is not fast. Which means you will have to cut corners, but add additional measures to compensate. Many companies market their continuous delivery practices, so others can see how cool they are, but also learn from their experiences. In this talk I will go through some highlights and things that work well and not so well in these example continuous delivery implementations, and then will concentrate on testing patterns, approaches and little hints that I have learnt both from these examples and from my own experience.
The agile community has done a very good job over the last few years in re-thinking the software development process and practices. What about testing though ? Are we really agile about it ? For most companies testing and QAs are still a bottleneck. In this session we will explore practices and techniques which will enable us to bring testing to the next level. We will focus particurarly on the concept of acceptance tests driven development and the role played by the "software developer in test"
Making the build self-testing is one of the best pratices of continuous integration. This was the main goal of this presentation, the work done in a REST API, using Symfony, phpspec, PHPUnit and Behat.
Bye Bye Cowboy-Coder days! by Vytautas Dagilis.
„Working Effectively with Legacy Code“- one of the best books which talks about Unit testing and TDD. Presentation covers best practices listed in the book as well as shows which of them were successfully implemented in practice. You will find out how to commit changes and be sure that they work even without running and testing application itself.
The core idea of lean is to eliminate/reduce non-value-added activities (termed "wastes") and thus increase customer value. The Agile itself is a lean for the software development life cycle, and I am sharing a couple of Agile best practices adopted by my teams to make the Scrum methodology more extra lean.
The presentation contains the best agile practices and their benefits in terms of Lean in an agile methodologies
Visualization, storage and comparison results of performance testing by using...Anton Shapin
In our presentation we describe approach to solve following problems in performance testing:
- Visualization of test results.
- Visualization of real time metrics.
- Storage results of different test runners.
- Comparison results of different test runners.
This presentation is a part of the COP2271C college level course taught at the Florida Polytechnic University located in Lakeland Florida. The purpose of this course is to introduce Freshmen students to both the process of software development and to the Python language.
The course is one semester in length and meets for 2 hours twice a week. The Instructor is Dr. Jim Anderson.
A video of Dr. Anderson using these slides is available on YouTube at: https://www.youtube.com/watch?v=c2CTDm19Lpg
In this experiential webinar, our guest Mohamed Shaaban will share with you his wide experience in Unit Testing in addition to practical techniques for unit testing your code using C#, NUnit, and Moq.
How BDD with tools like Cucumber can create a stronger team, a better quality product, and ultimately a more useable API. Given at the #apistrat SF conference 10/24/2013
With Agile adoption many things have changed in quality assurance and tester role. Ourdays the whole team is responsible for product quality. But not so many people understand how such high level approaches work in practice, how developer interacts with tester, what stages each task passes on the way from requirements specification to customer acceptance, who is doing what at each stage.
I have met only few teams, where developer and tester work closely together on a daily basis. Some projects try to same money on developer's time, others try to have independent testing team without influence from developers side. Developers also don't understad how tester could help them in practice. But this pair is able to significantly improve product quality and avoid many common issues.
In this talk we will cover motivation behind pair work of develoeper and tester, concrete practices and approaches at different stages, and advantages that both sides could achieve from such work style.
API Testing: Answers to Your Top 3 QuestionsQASource
Want more? Visit our official blog, QALounge.com! Brought to you by QASource.com.
Pursuing API testing or API test automation for your product? Our engineers have answers to the top 3 questions about API automation testing in this slide deck.
Testing within a closed system is easy. Everything is generally accessible and can be interacted with freely. But what happens when the application requires integration with one or more third parties in order to function? In unit tests, we can use mocks and there are many Ruby libraries to make that happen. However, this doesn’t help us much when we’re testing deployed code in end-to-end scenarios or exploratory tests. The solution I found was to build a mock application to mimic the third party. This talk will cover the process and tools used to build the application, the advantages/disadvantages it provides, and explain how this mock is utilized in real-world situations.
Diffy : Automatic Testing of Microservices @ TwitterPuneet Khanduri
Agile development has become a norm nowadays. Though it fosters faster product development cycles, it often results in a higher number of functional and/or performance regressions. In an SOA setting such as Twitter, such regressions may cascade from one service to one or more services. Detecting such regressions manually is not practically feasible in light of the hundreds of services and tens of thousands of metrics each service collects. To this end, we developed a novel tool called Diffy to automatically detect such regressions.
The key highlights of the talk are the following:
A simple yet effective approach for detecting functional regressions. False positives are minimized via statistical analysis of metrics obtained from a tuple <primary,> of nodes, where the same traffic is sent to each node.
An ensemble approach to performance regression. The need for an ensemble of classifiers stemmed from the multifaceted characteristics of the performance data. In order to minimize the impact of variability of hardware performance across nodes, we used two clusters – instead of a tuple of nodes – corresponding to the release candidate and production code. The approach is robust against the presence of anomalies in the performance data.
The proposed techniques work well with minute data. Diffy has been in use in production by multiple services at Twitter, and has been baked into the continuous build process so as to actively detect functional and/or performance regressions.
We shall take the audience through how the techniques are being used at Twitter with REAL data.
We are entering a world where everything must be done quicker. You must deliver code faster. You must deploy faster. How can you deliver and deploy faster without compromising your professionalism? How can you be sure you are delivering what your client has asked you?
In short, testing is the only way to be sure you’re delivering what someone asked you to. Often we use BDD Tools such as FitNesse which gained popularity over the recent years
There are a number of integration / BDD test tools out there that help you deliver a high quality software through tests. Its easy to pick up any tool from just their tutorials and start writing tests. But as I found out the hard way, this can quickly spiral into a state where the tests are giving you and your team hell and are worth less than the value the tests are delivering.
Using FitNesse and Junit as examples, I will share things that I have learnt working on large enterprise and vendor systems and help you avoid your own path to hell.
Visualization, storage and comparison results of performance testing by using...Anton Shapin
In our presentation we describe approach to solve following problems in performance testing:
- Visualization of test results.
- Visualization of real time metrics.
- Storage results of different test runners.
- Comparison results of different test runners.
This presentation is a part of the COP2271C college level course taught at the Florida Polytechnic University located in Lakeland Florida. The purpose of this course is to introduce Freshmen students to both the process of software development and to the Python language.
The course is one semester in length and meets for 2 hours twice a week. The Instructor is Dr. Jim Anderson.
A video of Dr. Anderson using these slides is available on YouTube at: https://www.youtube.com/watch?v=c2CTDm19Lpg
In this experiential webinar, our guest Mohamed Shaaban will share with you his wide experience in Unit Testing in addition to practical techniques for unit testing your code using C#, NUnit, and Moq.
How BDD with tools like Cucumber can create a stronger team, a better quality product, and ultimately a more useable API. Given at the #apistrat SF conference 10/24/2013
With Agile adoption many things have changed in quality assurance and tester role. Ourdays the whole team is responsible for product quality. But not so many people understand how such high level approaches work in practice, how developer interacts with tester, what stages each task passes on the way from requirements specification to customer acceptance, who is doing what at each stage.
I have met only few teams, where developer and tester work closely together on a daily basis. Some projects try to same money on developer's time, others try to have independent testing team without influence from developers side. Developers also don't understad how tester could help them in practice. But this pair is able to significantly improve product quality and avoid many common issues.
In this talk we will cover motivation behind pair work of develoeper and tester, concrete practices and approaches at different stages, and advantages that both sides could achieve from such work style.
API Testing: Answers to Your Top 3 QuestionsQASource
Want more? Visit our official blog, QALounge.com! Brought to you by QASource.com.
Pursuing API testing or API test automation for your product? Our engineers have answers to the top 3 questions about API automation testing in this slide deck.
Testing within a closed system is easy. Everything is generally accessible and can be interacted with freely. But what happens when the application requires integration with one or more third parties in order to function? In unit tests, we can use mocks and there are many Ruby libraries to make that happen. However, this doesn’t help us much when we’re testing deployed code in end-to-end scenarios or exploratory tests. The solution I found was to build a mock application to mimic the third party. This talk will cover the process and tools used to build the application, the advantages/disadvantages it provides, and explain how this mock is utilized in real-world situations.
Diffy : Automatic Testing of Microservices @ TwitterPuneet Khanduri
Agile development has become a norm nowadays. Though it fosters faster product development cycles, it often results in a higher number of functional and/or performance regressions. In an SOA setting such as Twitter, such regressions may cascade from one service to one or more services. Detecting such regressions manually is not practically feasible in light of the hundreds of services and tens of thousands of metrics each service collects. To this end, we developed a novel tool called Diffy to automatically detect such regressions.
The key highlights of the talk are the following:
A simple yet effective approach for detecting functional regressions. False positives are minimized via statistical analysis of metrics obtained from a tuple <primary,> of nodes, where the same traffic is sent to each node.
An ensemble approach to performance regression. The need for an ensemble of classifiers stemmed from the multifaceted characteristics of the performance data. In order to minimize the impact of variability of hardware performance across nodes, we used two clusters – instead of a tuple of nodes – corresponding to the release candidate and production code. The approach is robust against the presence of anomalies in the performance data.
The proposed techniques work well with minute data. Diffy has been in use in production by multiple services at Twitter, and has been baked into the continuous build process so as to actively detect functional and/or performance regressions.
We shall take the audience through how the techniques are being used at Twitter with REAL data.
We are entering a world where everything must be done quicker. You must deliver code faster. You must deploy faster. How can you deliver and deploy faster without compromising your professionalism? How can you be sure you are delivering what your client has asked you?
In short, testing is the only way to be sure you’re delivering what someone asked you to. Often we use BDD Tools such as FitNesse which gained popularity over the recent years
There are a number of integration / BDD test tools out there that help you deliver a high quality software through tests. Its easy to pick up any tool from just their tutorials and start writing tests. But as I found out the hard way, this can quickly spiral into a state where the tests are giving you and your team hell and are worth less than the value the tests are delivering.
Using FitNesse and Junit as examples, I will share things that I have learnt working on large enterprise and vendor systems and help you avoid your own path to hell.
Let's review it: What designers can learn from (code) reviewIda Aalen
What if designers approached collaboration and critique more like developers? Could it make us better designers, and could it better collaboration between designers and developers? Presented at Yggdrasil 2018 in Sandefjord, Norway
Agile Development | Agile Process ModelsAhsan Rahim
Agile Development | Agile Process Models
Here you are going to know What is Agile Development & What are Agile Process Models for the development of Software Product.
What are different types of Agile Development, steps involve in Agile Development, XP, Scrum, Traditional Process Models with full text and animated description.
Software Process Models defines a distinct set of activities, actions, tasks, milestones, and work products that are required to engineer high-quality software...
For more knowledge watch full video...
Video URL:
https://youtu.be/3Lxnn0O3xaM
YouTube Channel URL:
https://www.youtube.com/channel/UCKVvceV1RGXLz0GeesbQnVg
Google+ Page URL:
https://plus.google.com/113458574960966683976/videos?_ga=1.91477722.157526647.1466331425
My Website Link:
http://appsdisaster.blogspot.com/
If you are interested in learning more about topics like this so Please don't forget to like, share, & Subscribe to us.
Software Defect Prevention via Continuous InspectionJosh Gough
Research and guidance for educing software development risk and cost while improving speed, quality and maintainability by applying review at all levels.
This presentation is a part of the COP2271C college level course taught at the Florida Polytechnic University located in Lakeland Florida. The purpose of this course is to introduce Freshmen students to both the process of software development and to the Python language.
The course is one semester in length and meets for 2 hours twice a week. The Instructor is Dr. Jim Anderson.
A video of Dr. Anderson using these slides is available on YouTube at:
https://youtu.be/KcFCcCsn6mM
5 reasons you'll love to hate Agile DevelopmentArin Sime
This is a presentation that Arin Sime of AgilityFeat gave at the 2013 Innovate Virginia conference, on 5 reasons why you will love to hate agile development. He presents 5 different areas that as an agile coach he has often seen teams struggle with when moving to agile methods. For each area, Arin discussed why you should try it anyways and suggested strategies for tackling the problems head on.
Continuous Learning Systems: Building ML systems that learn from their mistakesAnuj Gupta
Won't it be great to have ML models that can update their “learning” as and when they make mistake and correction is provided in real time? In this talk we look at a concrete business use case which warrants such a system. We will take a deep dive to understand the use case and how we went about building a continuously learning system for text classification. The approaches we took, the results we got.
Three Interviews About Static Code AnalyzersAndrey Karpov
The author invites you to read three interviews with representatives of three large, modern and
interesting projects to learn about their software development methodologies and about how they use
static code analyzers in particular. The author hopes that you will find this article interesting. The
following companies took part as interviewees: Acronis, AlternativaPlatform, Echelon Company.
Sincerely yours, Aleksandr Timofeev
In this talk we explore how to build Machine Learning Systems that can that can learn "continuously" from their mistakes (feedback loop) and adapt to an evolving data distribution.
The youtube link to video of the talk is here:
https://www.youtube.com/watch?v=VtBvmrmMJaI
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
The Art of Giving and Receiving Code Reviews
1. THE ART OF GIVING AND
RECEIVING CODE REVIEWS
Alex Hill (Imperial College London)
alex.hill@gmail.com
@alexhillphd
2. Defect finding
● In a software-maintenance organization, 55% of
one-line maintenance changes were in error
before code reviews were introduced. After
reviews were introduced, only 2% of the changes
were in error.
● In a group of 11 programs developed by the same
group of people, the first 5 were developed
without reviews. The remaining 6 were developed
with reviews. After all the programs were released
to production, the first 5 had an average of 4.5
errors per 100 lines of code. The 6 that had been
inspected had an average of only 0.82 errors per
100. Reviews cut the errors by over 80%.
● A study of an organization at AT&T with more than
200 people reported a 90% decrease in defects
after the organization introduced reviews.
3. Further motivation
1. Learning opportunities
2. Future proofing:
● Increase your bus factor
● Increase your Hawaii factor
● Ensure code is readable
● Maintain code standards
Increase your bus factor
4. Review < 400 lines of code at a time
Defect density = number of defects found per
1000 lines of code.
Source: Cisco review study, https://www.ibm.com/developerworks/rational/library/11-proven-
practices-for-peer-review/
5. Review < 500 lines of code per hour
Source: Cisco review study, https://www.ibm.com/developerworks/rational/library/11-proven-
practices-for-peer-review/
Defect density = number of defects found per
1000 lines of code.
6. Use checklists
Are there unit tests?
Does it follow SOLID principles?
Do you understand it?
Are there integration tests?
20. As an organisation we can...
● Pair program
● Discuss tasks prior to implementation
● Never silo codebases
● Emphasize teamwork
● Evaluate the code, not the coder
21. ● Use ‘we’ instead of ‘you’
e.g. “You should have re-used this function” →“We could re-use this function”
● Say ‘thank you’
● Raise code by a grade or 2, no more
e.g. C → B+, B → A
● Ask questions
e.g. “We could re-use this function” → “Could we re-use this function?”
● Justify requests
e.g. “Rename this to `getReportsWithFormattedDate`” → “Could we rename
`getReports` to `getReportsWithFormattedDate`, to make it clear that the
dates will already be formatted when it returns?”
As a reviewer we can...
22. Give positive feedback!
• “This is a cool library you found”
• “This refactor makes a lot of sense”
• “This is really easy to read”
• “I didn’t know this function existed,
thanks for bringing it to my
attention!”
Source:
http://geekandpoke.typepad.com/geekandpoke/
2010/11/how-to-make-a-good-code-review.html
23. As an author we can...
● Practice the ‘as if’ technique
– How would I respond if I were grateful for the
feedback?
– How would I respond if I were <Role model>?
– How would I respond if this code was not mine?
● Say ‘thank you’
● Annotate your review first
● Solicit feedback with specific questions
24. ● Optimise reviewer effectiveness
● Minimise unneccessary conflict
● Understand feelings of ownership
● Nudge towards collaboration
● Be nice to each other
Summary