Join me for a retrospective look at how my team rewrote the core of a legacy application over six months and launched a well tested, stable product. In this session you'll learn how to work with an existing codebase without creating your own "legacy" code, by applying practices and tools such as identifying and using third party libraries, version control and code review, code quality measurements, BDD/TDD, and Continuous Integration.
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow as each role as well as tools for executing Double Loop
This talk is about how my company took a broken e-commerce and LMS site written in an older style MVC framework and re-wrote a significant portion of it in Symfony and related tools (Doctrine, FOS Bundles, Sonata) over 6 months and created a stable, well-tested application.
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow as each role as well as tools for executing Double Loop
Slides from my talk on "Rewrite Vs Refactor" given at Agile India 2021. https://confengine.com/conferences/agile-india-2021/proposal/15495/rewrite-vs-refactor
In this session, I will share various examples and experiences and as a result of being in such situations, the factors I looked at when enhancing the code-base to decide - should I refactor or rewrite the code-under-consideration to be able to move forward faster, while moving towards the long-term vision.
Though I will focus on various examples of Test Automation, this session is applicable for any role that writes / maintains code of any nature.
Gear up for Continuous Integration with Salesforce DX, Circle CI and ClaytonDaniel Stange
Everyone in the Salesforce ecosystem knows how painful the rollout of changes with Changeset can be, and how tedious the setup for Ant build jobs is. Luckily, Salesforce DX is a huge leap forward in terms of modern enterprise software lifecycle management. I am going to present how my development toolchain links DX, Clayton and Circle CI, and we are going to build a Circle configuration together to help you getting rid of change sets forever.
With this presentation you will learn all that you need about Codenarc, an static code analysis tool for Groovy programing language that allow you to check for coding standard and best practices.
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow as each role as well as tools for executing Double Loop
This talk is about how my company took a broken e-commerce and LMS site written in an older style MVC framework and re-wrote a significant portion of it in Symfony and related tools (Doctrine, FOS Bundles, Sonata) over 6 months and created a stable, well-tested application.
Do you TDD or BDD? Why not both? Come learn the "Double Loop" workflow and discover how you can use both Behavior Driven Development and Test Driven Development to write well designed, tested and documented code. Double Loop works for lone engineers, small teams or entire product departments. I'll cover the steps you'll take in the workflow as each role as well as tools for executing Double Loop
Slides from my talk on "Rewrite Vs Refactor" given at Agile India 2021. https://confengine.com/conferences/agile-india-2021/proposal/15495/rewrite-vs-refactor
In this session, I will share various examples and experiences and as a result of being in such situations, the factors I looked at when enhancing the code-base to decide - should I refactor or rewrite the code-under-consideration to be able to move forward faster, while moving towards the long-term vision.
Though I will focus on various examples of Test Automation, this session is applicable for any role that writes / maintains code of any nature.
Gear up for Continuous Integration with Salesforce DX, Circle CI and ClaytonDaniel Stange
Everyone in the Salesforce ecosystem knows how painful the rollout of changes with Changeset can be, and how tedious the setup for Ant build jobs is. Luckily, Salesforce DX is a huge leap forward in terms of modern enterprise software lifecycle management. I am going to present how my development toolchain links DX, Clayton and Circle CI, and we are going to build a Circle configuration together to help you getting rid of change sets forever.
With this presentation you will learn all that you need about Codenarc, an static code analysis tool for Groovy programing language that allow you to check for coding standard and best practices.
Nitro for your Grails App: How to improve performance!! Greach' 18Alberto Barón Cuevas
Do you want to improve the performance of your Grails Applications? In this presentation you will find the mains topics you have to change into your grails application to be more efficient and faster. You will find some tricks about domain classes, async logging, parallelism, regex, querying and tools.
Slides from my talk on how to Eradicate Flaky Tests from AppiumConf 2021
https://confengine.com/conferences/appium-conf-2021/proposal/15581/eradicate-flaky-tests
SAP Workflow Po create workflow by pavan golesarPavan Golesar
Hello there, I am Pavan Golesar. I run my brain so innovatively that I need supplementary place to store it. Thus I represent you my alternative brain storage space as a website and youtube channel: www.abaper.weebly.com www.explore16k.weebly.com www.youtube.com/channel/UCljfU3cc23f5khN24rbzHeA
Regards,
Pavan Goleasr
#Ethic Coder
A Practical Approach to React Native at All Things Open ConferenceTracy Lee
Practical approach to creating your first React Native talk given at All Things Open Conference. Learn how you should get started with React Native and the path of least resistance.
BDD to the Bone: Using Behave and Selenium to Test-Drive Web ApplicationsPatrick Viafore
Talk about Behavior-driven Development, Behave, Selenium and Python
Project is found at https://github.com/pviafore/BddToTheBone
Presented at PyTennessee 2017
YouTube video -> https://youtu.be/H2FuJYlbzDg
Lessons learned from doing it repeatedly
by Mirah Gary & Josh Hill, Pivotal
Pipelines are the infrastructure we use to test and deliver our code. We work with them every day, but sometimes they behave in unexpected ways. We will go over common failure modes and issues we have encountered in our Concourse pipelines, and understand what we can do to prevent and solve these pain points.
Being able to build pipelines that work for you is critical for effective dev/ops. By sharing our own mistakes, we hope that you will be able to recognize them when they happen and know what to do to fix the problems.
This talk was delivered at the Concourse London User Group (CLUG) on 6 December 2018 at Pivotal London: https://www.meetup.com/Concourse-London-User-Group/events/256171643/
Building elements and experiences at Net-A-PorterRobin Glen
A talk about covering development and culture change within the Net-A-Porter Tech team. How we moved from a legacy monolith to micro services and customer focused experiences.
Testing GraphQL in Your JavaScript Application: From Zero to Hundred PercentRoy Derks
Testing JSX components can be quite tricky, especially if they include GraphQL queries. What if I told you it is possible to both test your GraphQL queries and mutations, while also testing the way they interact with your JSX components? This talk will show how you can push your testing principles to the next level by writing unit tests and integration tests that will use the type system of GraphQL. Not only can you drastically increase your test coverage after this talk, you’ll know for sure that your data is flowing correctly through your application.
Have you ever finished writing unit tests and deploying to production, only to get errors or problems later down the line? If you want to learn how to minimize these kinds of data problems or failures before they occur, you need to program defensively. Join us to learn about Apex design patterns for resilient code, how to build applications that monitor themselves, and how to avoid common mistakes that even experienced developers make.
AngularJS is a popular JavaScript framework that provides a variety of services including dependency injection, data-binding, and declarative DOM extensions. In this talk, Jeremy will cover at a high level what the benefits of AngularJS are and then build a reference application. If you are an Angular developer looking to learn best practices or have never touched Angular and want to know what the fuss is all about, this talk is for you. (Grab the project and use the Git checkouts to follow along)
In 2013, Facebook released a new JavaScript framework which would soon be adopted by loads of companies to build complex Front-End web applications. React is now mature, a great community quickly formed and produced by-products and extension like Redux or React Native. This workshop aims at showcasing the basics of React and discuss when choosing it the most relevant.
Péhápkaři v Pecce: Jak jsme neposlali pull request do PHP – Milan Pála – 17. ...PeckaDesign.cz
Zjistili jsme, že nám v PHP chybí určitá funkcionalita, která by tam podle nás být měla. Připravili jsme PR, odeslali a až potom se podívali, proč ho vlastně před námi neposlal někdo jiný. :) Podělím se s vámi alespoň o zkušenosti s úpravami v PHP.
Building a small to medium size business application with React isn't terribly hard. It has been done lots of times and there is plenty of information about what works and what doesn't. However building a large, complex, distributed and mission critical application with React is another matter. Add occasional poor mobile connectivity and things become really challenging. That doesn't mean that it is impossible, it is just harder to architect and develop. In this session Maurice de Beijer will share his experiences in building a globally deployed application that is used by thousands of people who depend on the availability and proper functioning of the application for a safe work environment.
https://www.c-sharpcorner.com/events/react-virtual-conference2
Nitro for your Grails App: How to improve performance!! Greach' 18Alberto Barón Cuevas
Do you want to improve the performance of your Grails Applications? In this presentation you will find the mains topics you have to change into your grails application to be more efficient and faster. You will find some tricks about domain classes, async logging, parallelism, regex, querying and tools.
Slides from my talk on how to Eradicate Flaky Tests from AppiumConf 2021
https://confengine.com/conferences/appium-conf-2021/proposal/15581/eradicate-flaky-tests
SAP Workflow Po create workflow by pavan golesarPavan Golesar
Hello there, I am Pavan Golesar. I run my brain so innovatively that I need supplementary place to store it. Thus I represent you my alternative brain storage space as a website and youtube channel: www.abaper.weebly.com www.explore16k.weebly.com www.youtube.com/channel/UCljfU3cc23f5khN24rbzHeA
Regards,
Pavan Goleasr
#Ethic Coder
A Practical Approach to React Native at All Things Open ConferenceTracy Lee
Practical approach to creating your first React Native talk given at All Things Open Conference. Learn how you should get started with React Native and the path of least resistance.
BDD to the Bone: Using Behave and Selenium to Test-Drive Web ApplicationsPatrick Viafore
Talk about Behavior-driven Development, Behave, Selenium and Python
Project is found at https://github.com/pviafore/BddToTheBone
Presented at PyTennessee 2017
YouTube video -> https://youtu.be/H2FuJYlbzDg
Lessons learned from doing it repeatedly
by Mirah Gary & Josh Hill, Pivotal
Pipelines are the infrastructure we use to test and deliver our code. We work with them every day, but sometimes they behave in unexpected ways. We will go over common failure modes and issues we have encountered in our Concourse pipelines, and understand what we can do to prevent and solve these pain points.
Being able to build pipelines that work for you is critical for effective dev/ops. By sharing our own mistakes, we hope that you will be able to recognize them when they happen and know what to do to fix the problems.
This talk was delivered at the Concourse London User Group (CLUG) on 6 December 2018 at Pivotal London: https://www.meetup.com/Concourse-London-User-Group/events/256171643/
Building elements and experiences at Net-A-PorterRobin Glen
A talk about covering development and culture change within the Net-A-Porter Tech team. How we moved from a legacy monolith to micro services and customer focused experiences.
Testing GraphQL in Your JavaScript Application: From Zero to Hundred PercentRoy Derks
Testing JSX components can be quite tricky, especially if they include GraphQL queries. What if I told you it is possible to both test your GraphQL queries and mutations, while also testing the way they interact with your JSX components? This talk will show how you can push your testing principles to the next level by writing unit tests and integration tests that will use the type system of GraphQL. Not only can you drastically increase your test coverage after this talk, you’ll know for sure that your data is flowing correctly through your application.
Have you ever finished writing unit tests and deploying to production, only to get errors or problems later down the line? If you want to learn how to minimize these kinds of data problems or failures before they occur, you need to program defensively. Join us to learn about Apex design patterns for resilient code, how to build applications that monitor themselves, and how to avoid common mistakes that even experienced developers make.
AngularJS is a popular JavaScript framework that provides a variety of services including dependency injection, data-binding, and declarative DOM extensions. In this talk, Jeremy will cover at a high level what the benefits of AngularJS are and then build a reference application. If you are an Angular developer looking to learn best practices or have never touched Angular and want to know what the fuss is all about, this talk is for you. (Grab the project and use the Git checkouts to follow along)
In 2013, Facebook released a new JavaScript framework which would soon be adopted by loads of companies to build complex Front-End web applications. React is now mature, a great community quickly formed and produced by-products and extension like Redux or React Native. This workshop aims at showcasing the basics of React and discuss when choosing it the most relevant.
Péhápkaři v Pecce: Jak jsme neposlali pull request do PHP – Milan Pála – 17. ...PeckaDesign.cz
Zjistili jsme, že nám v PHP chybí určitá funkcionalita, která by tam podle nás být měla. Připravili jsme PR, odeslali a až potom se podívali, proč ho vlastně před námi neposlal někdo jiný. :) Podělím se s vámi alespoň o zkušenosti s úpravami v PHP.
Building a small to medium size business application with React isn't terribly hard. It has been done lots of times and there is plenty of information about what works and what doesn't. However building a large, complex, distributed and mission critical application with React is another matter. Add occasional poor mobile connectivity and things become really challenging. That doesn't mean that it is impossible, it is just harder to architect and develop. In this session Maurice de Beijer will share his experiences in building a globally deployed application that is used by thousands of people who depend on the availability and proper functioning of the application for a safe work environment.
https://www.c-sharpcorner.com/events/react-virtual-conference2
Dicas de como ser um superhost no Airbnb. Aproveite e conheça a SimpleGuest, a primeira empresa brasileira que ajuda a gerenciar os seus imóveis no Airbnb. http://www.simpleguest.co
The huge range of over 37,000 community-contributed plugins is one of the most valuable features of WordPress.org. But how do you determine what’s a safe and effective plugin without being overwhelmed by choice? In this session we’ll look at when to use a plugin and discuss how to make an informed decision about which plugin to use – and explore how to troubleshoot any conflicts that may crop up.
Presentation slide deck from Emergent Learning 2012, in Halifax, Nova Scotia. This talk describes some approaches and strategies to implementing a real BYOD (bring your own device) program in the classroom.
Haze meter is a device that measures both the reflection haze & gloss at the similar time.A brightness meter can be used to measure the brightness, whiteness & yellowness of paper, Brightness meter cellulose & other materials such as porcelain & plastics.
Controles da Administração Pública - Parte I - Controle ExternoRafael Lisboa
Apresentação elaborada para aula de Compras Públicas no curso preparatório para o concurso de Analista de Políticas Públicas e Gestão Governamental da Prefeitura Municipal de São Paulo.
Social Retail Creates Smart Campuses that Students LoveDSR NYC
Social Retail is changing the way schools communicate and provide a better experience for its students. From helping students navigate to class to giving teachers the power to assign work, Social Retail does it all. With Social Retails connectors and digital signage platform, student and administration satisfaction is at an all time high.
Evolución del derecho agrario en venezuelaZujer Salha
Esta presentación se basa en la evolución histórica del Derecho Agrario en Venezuela y estipula el problema agrario con sus cuatro focos económicos incluyendo sus características.
What to Do—Develop Your Own Automation or Use Crowdsourced Testing?TechWell
Modern software products tend to have a rich UI that supports many user workflows, all of which need to be covered in testing. Agile organizations quickly discover that manual end-to-end testing neither supports their velocity nor provides respectable regression coverage. A common progression is to move from fully manual testing to record/replay, then to Selenium IDE style tests, then to automation based on Selenium WebDriver, perhaps with a BDD overlay. Daria Mehra has practiced this approach and shares her experience. She compares the Selenium style of automation to an alternative—crowdsourced test execution— which provides all the benefits of test automation, including continuous integration. This approach allows non-coders to express test cases in natural language, avoids the dependency on UI implementation, adds a “human eye” advantage, and provides the ability to massively parallelize tests for fast execution. Learn the pros and cons of end-to-end, UI-based test automation via Selenium compared to crowdsourcing. Find out how you can assess the suitability of these testing approaches for your needs.
How to Prepare for SAP Enable Now Certification: A Step-by-Step Guide!carinachiara1
Start Here--- https://bit.ly/4bVEhTd ---Get complete detail on C_SEN_2305 exam. You can collect all information on C_SEN_2305 tutorial, practice test, books, study material, exam questions, and syllabus. Firm your knowledge on Cloud and get ready to crack C_SEN_2305 certification. Explore all information on C_SEN_2305 exam with number of questions, passing percentage and time duration to complete test.
Adrian Gregory, Success Growth Team Lead at Optimizely
Peter Hastie, Front-end Developer at Bleacher Report
Chris Moen, Lead Web Developer at CityPASS
The Developer Showcase highlights useful tips and tricks directly from developers using Optimizely.
The session is moderated by Adrian Gregory, Success Growth Team Lead at Optimizely, and features Peter Hastie, Front--end Developer at Bleacher Report, and Chris Moen, Lead Web Developer at CityPASS, sharing how they've used advanced features in the editor and the Optimizely API to run more dynamic tests and improve performance on their site.
The covered features include:
-Testing content that appears after page-load
-Getting the most of your goals with custom events
-Testing an entire new page layout without redirects
-Getting the most of the Global CSS & Global JS
-Implementing code for efficient targeting, tracking, and segmenting
DevOps Pipelines and Metrics Driven Feedback LoopsAndreas Grabner
The goal behind devops is Faster Lead Times
What this really means for Software Delivery -> my Kodak/Smart Phone Analogy
How and Which Metrics to use along the Delivery Pipeline to make better decisions along the way.
The case for web components as well as what they are and why they will forever transform the web as well as package managers and a little bit about headless web development.
How to establish ways of working that allows shifting-left of the automation ...Max Barrass
Why Automate?
Your application will grow, you will not have enough hands
You are blocked by development
Hidden factory costs of bug-fix cycle
Why Shift-Left?
More people to negate massive inspections
Define measurable success early, work on good parts.
Reduce occurrence of defects
What is this got to do with Ways of working?
Unlock capacity
Make people smile
Is not
a Department
extra cost
a final oversight or a massive inspection
someone else’s job
Is
Everyone’s responsibility
Build into the ways of working
Everyone’s job
Test Design for Fully Automated Build ArchitecturesMelissa Benua
Imagine: as soon as any developed functionality is submitted into the code repository, it is automatically subjected to the appropriate battery of tests and then released straight into the wild. Setting up the pipeline to do just that is very common, but most organizations hit the same stumbling block: just what IS the appropriate battery of tests? And how do we configure our test framework to support the many places our tests might want to run? Automated build pipelines don't always lend themselves well to the traditional stages of testing. In this hands-on workshop, Melissa will introduce automated test writers to the key principles of automated test design that apply to organizations big and small to allow them to take full advantage of their pipeline's capabilities without introducing unnecessary bottlenecks. Participants will learn the fundamentals of highly reliable tests that run fast and atomically in order to reproduce a failure - every time. They will also explore how to reduce overlap while still maintaining adequate test coverage, about what test areas might be most beneficial to combine into a single suite, and what areas might benefit most from being broken out altogether.
Getting Started with Server-Side TestingOptimizely
One of the most difficult aspects of deep experimentation ― which requires a full stack solution and server-side testing ― is laying a solid foundation for success. Join Optimizely and WiderFunnel to learn best practices for going beyond client-side testing, and implementing a full stack experimentation strategy to drive results on the entire customer journey.
-How to identify your key success metrics, such as customer retention and lifetime value
-How to integrate experimentation into your product roadmap
-How to start testing on your full customer journey
[Webinar] Getting started with server-side testing - presented by WiderFunnel...Chris Goward
One of the most difficult aspects of deep experimentation ― which requires a full stack solution and server-side testing ― is laying a solid foundation for success. In this webinar, you'll learn best practices for going beyond client-side testing, and implementing a full stack experimentation strategy to drive results on the entire customer journey.
Experimenting on Humans’ (or, ‘everything you want from an a/b testing system’).
How do you know what 100 millions users like? Wix.com is conducting hundreds of experiments per month on production to understand which features our users like and which hurt or improve our business. At Wix we have developed our 3rd generation experiment system called Petri, which was open sourced. Petri helps us maintain some order in a chaotic system that keeps changing. We will also explain how it works and what are the patterns in conducting experiments that have a minimal effect on performance and user experience.
DevOps: Sprinkle Dev, Sprinkle Ops, Let's make Cake, not Mud PiesCentric Consulting
Brian Paulsmeyer, a Sr. Architect at Centric St. Louis, spoke about DevOps on September 29th at Agile Gravy Conference in St. Louis. Here's his presentation, which starts with Agile development pitfalls that plague teams, moves into the actual capabilities that a team requires to be successful, and finally describes concrete implementations to achieve “Done Means Done” development.
How BiggerPockets runs experiments faster with performance edgeOptimizely
Whelan Boyd, Product Manager at Optimizely will be joining Alex Wald and Mike McKee from BiggerPockets’s Growth and Engineering teams to share how using Performance Edge by Optimizely can help teams scale experimentation with minimal performance impact to drive better conversion rates and less abandonment.
In this webinar, you’ll learn:
- Best practices for measuring website performance
- Ways to experiment client-side without affecting site performance
- How BiggerPockets saw improved site performance by adopting Performance Edge
Slides from my 4-hour workshop on Client-Side Performance Testing conducted at Phoenix, AZ in STPCon 2017 (March).
Workshop Takeaways:
Understand difference between is Performance Testing and Performance Engineering.
Hand’s on experience of some open-source tools to monitor, measure and automate Client-side Performance Testing.
Examples / code walk-through of some ways to automate Client-side Performance Testing.
See blog for more details - https://essenceoftesting.blogspot.com/2017/03/workshop-client-side-performance.html
Migrating existing monolith to serverless in 8 stepsYan Cui
Refactoring a monolith to serverless can be intimidating, but there are discrete steps that you can take to simplify the process. In this talk, AWS Serverless Hero Yan Cui outlines 8 steps to successfully refactor your monolith and highlight key decision points such as language and tooling choices.
Recording: https://www.youtube.com/watch?v=-HQw-UK2bHc
Real-world serverless podcast: https://realworldserverless.com
Learn Lambda best practices: https://lambdabestpractice.com
Blog: https://theburningmonk.com
Consulting services: https://theburningmonk.com/hire-me
Production-Ready Serverless workshop: https://productionreadyserverless.com
Similar to Legacy: A Retrospective - Open West 2016 (20)
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
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
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
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
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
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.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
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/
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.
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.
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.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
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.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
3. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
What is a
Retrospective?
★ What worked well?
★ What didn't work
well?
★ What would we do
differently next time?
3
4. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
★ Content Production
★ Learning
Management System
★ E-Commerce
★ Business to Business
(B2B)
Project Summary
4
LMS + E-Commerce
5. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Problematic History
� Broken Admin Panel
� No Documentation of Basic Processes
� Frontend Site Worked, Progress Stalled
� Complex Logic not Documented
5
6. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Business Goals
★ Add Missing Admin Panel Functionality
★ Add New Features Without Breaking Existing Features
★ Avoid Downtime
6
7. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Technical Goals
★ Maintainable Code
★ Quality Code
★ Documentation
★ Rapid Development
★ Easy Deployment
★ Zero Regressions Per Release
7
8. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Disclaimer!
8
Maintaining and Iterating on
Legacy Code is usually
faster, easier and cheaper
than a full rewrite
10. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Version Control
★ Easily compare changes
★ Revert breaking changes to
stable point
★ Allows developers to work on
multiple tasks concurrently
without confusion
★ Works best with short-lived
branches, and small
changesets
10
11. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Continuous
Integration &
Deployment
★ CI: Quickly merge changes
into master upon passing
tests
★ CD: Automatically deploy
changes to master upon
merge
★ Encourages small changesets
and rapid development
★ Tests are your gatekeeper
11
12. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Automated Testing
★ Unit Tests: Foundation of Test
Suite
★ Legacy Code = Not Unit
Testable
★ Solution: Behavior Tests
12
13. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Testing Pyramid
13
Maintenance
Coverage
Fragility
Duration
Cost
Number of Tests
Unit Tests
Behavior Tests
System Tests
(performance)
GUI
Tests
Unit
Behavior
System
GUI
Manual QA
Testing Ice Cream Cone
14. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
The Vicious Cycle of the Testing Ice Cream Cone
14
Unit
Behavior
System
GUI
Manual QA
Non Testable
Code
More Expensive
Tests
Developers
Don't Run Tests
More Bugs
Developers
Don't Write Unit
Tests
15. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Automated Testing
★ Unit Tests: Foundation of Test
Suite
★ Legacy Code = Not Unit
Testable
★ Short-Term Solution:
Behavior Tests
★ Long-Term Solution: Write
Unit Testable Code & Unit
Tests
15
16. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Writing Features for Existing Code
Write Feature
Run Test
Test Passes - Double Check
Test Fails
Described Feature Wrong
Mistake in Test Code 16
18. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Quality Rules
★ Keep New Code from
becoming Legacy Code
★ Be Specific
★ Feedback needs to be
immediate - How?
18
19. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Quality
Enforcement
★ Automate All The Things! (Add
it to your CI)
★ Quality Checks Run Locally
★ Bypass in emergency
19
20. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Code Review
★ Always Be Code-Reviewing!
★ Small PRs
★ Look for:
○ Readability
○ Business Logic
○ Security & Performance
Problems
20
21. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Continuing
Education
★ Conferences, User Groups,
Community
★ Weekly Training & Teaching
Sessions In-Office
21
22. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Third Party Tools &
Libraries
★ Don't Write Code That
Doesn't Contain Business
Logic
★ Cheaper to Research Third-
Party Tools vs. Write It
Yourself
○ Does it suit our needs?
○ Is it maintained?
○ Is it tested?
○ Can we contribute?
★ Contribute Back!
22
30. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
What Worked?
❖ Version Control
❖ Automated Testing
❖ Style Guide
❖ Code Quality & Enforcement
❖ Code Review
❖ Education
❖ Use of Third Party Tools &
Libraries
30
What Didn't Work?
❖ Continuous Integration &
Deployment
❖ Automated Testing
❖ Neglected Our API
❖ Third Party Tools
➢ Didn't Research Enough
➢ Didn't Contribute Back
➢ Didn't Update
What We Would Do...
❖ Focus on the API First
❖ Microservices
❖ Focus on Unit Testing
31. @jessicamauerhan | #OpenWest | https://joind.in/talk/091b9
Current Project
Status
It's stable!
★ New Admin was launched
after about 9 months
★ Had a few bugs, took about 3
more months to be stable
★ Next 2 years: ~0 regressions
★ Very limited downtime
31
In 2013 I joined a small company based out of Plano, Texas which offers online continuing education for multiple professions within the medical industry.
They record video of industry experts teaching on a topic
write an exam to test the student’s knowledge, then work with individual state boards and accrediting agencies to get the content approved as a continuing educational unit.
They can then sell the course to customers.
They also resell access to the content to other companies through a subscription model.
(next) When I started at the company, the software was not maintainable.
To start, a large portion of the admin system didn’t have any functionality written - there would be a form with input fields and buttons, but no actual processing for it, or only for some of the fields.
The parts that did work didn’t allow our users to do half the things they needed to do, so they were constantly coming to us with spreadsheets to manually import data into MySQL, requests for simple data records to be updated or deleted, or questions about how the site worked.
(next) None of these problems were documented in any way, so whenever a new employee started, they had to be trained to ignore the UI, because those forms didn’t really work.
(next) The customer facing site worked, but needed a facelift and new features that we couldn’t add, because every time we tried, it would break another part of the site.
At that time, our customers were essentially serving as our QA.
(next) The application also had some complex business logic, like many businesses do, that dictated reasons for certain customer-facing functionality.
These were not documented anywhere either, they basically just existed in the heads of the people who had worked there longest.
We knew something had to change. We identified our major goals. Our business goals were:
(next) Add missing functionality
fill in the gaps in the admin panel, automate tasks that were being done manually by IT. That would give us the ability to meet the next goal:
(next) Add new features without breaking existing ones. Speaks for itself.
(next) Avoid Downtime
historically the site had a bit of a stability problem in general, but especially when we would try to do releases. A code update could take the site down for a bit, and that had to stop.
So, these informed our technical goals:
Maintainable code.
Who here has ever written a comment or commit message that contained the words “I’m sorry” or “not sure why this works” or “don’t touch this or it will break”
Who’s ever being trying to fix a bug, and thought “who wrote this garbage?”
and then who’s ever done a git blame on that code and seen your own name?
When we write code that is not easy to understand or edit, we’re creating roadblocks for ourselves and our successors.
It causes wasted time, frustration, and bugs.
We wanted to be able to easily change the code without breaking other code, and without cursing each other’s names.
So this means readable code with clear names as well as cleanly separated components to reduce and make obvious our dependencies.
Quality Code:
By quality code I’m talking about writing code that not only works, but works well.
It doesn’t have to be micro-optimized, but it should at least be macro-optimized.
This means things like not writing SQL queries in loops.
Not using deprecated or insecure functions.
Performant:
runs fast enough
can handle large sets of data, not just the limited data a developer might test with
Documentation
We set a goal to document our code not by adding comments.
if we are meeting goal #1 of writing maintainable code, any of our developers should be able to look at the code and understand what it’s doing
So, we comment WHY the code does that, because that's what might not be obvious now.
Rapid Development
We had a very short timeline to get everything done that we needed to.
This means not spending time writing code that we could easily use a third party library for.
Easy Deployment
We wanted to have a one-button deployment process that would not cause downtime during the release.
0 Regressions Per Release
We wanted to ensure we didn’t break anything that was documented, so we needed to set up more automated testing and add it to the release process.
Typically it's not a good plan of action to just throw away your existing code base - however, we basically just needed a CRUD - that's Create, Read, Update, Delete - for our database records. What we had didn't really work, so this was a good candidate for starting over.
Version Control - it doesn't matter which you use: Git, SVN - just use one. I think Git has proven to be the forerunner, but if you have a good reason to use a different service that's fine.
Version control offers you a way to easily track and record each change you make to the software
It also allows you to easily revert changes if something breaks - you don't have to drop everything and start trying to fix the bug in production, you can just revert to the previous stable version, and take your time calmly fixing the bug locally - and be sure to add tests for the bug!
One of the best benefits of version control is branching - this allows developers to each be working on as many tasks as they need without interfering with each others code or causing confusion
Version control really works best when you make an effort to make small changes and pull requests, and keep master updated continuously. I used to be a really big fan of "gitflow", which is a development workflow for managing various feature branches, release branches and hotfix branches. However, after using it for several years and then switching to a workflow focused on keeping short branches and small changesets, I've found the latter to be much more effective in the long term.
When you're working with legacy code it can be very hard to add unit tests. If the code is not testable, how do you know you're not going to break something when you refactor it to make it testable?
We handled this by writing Behavior tests in Gerkhin.
These human readable automated test files serve as documentation that explain in plain English how your application works and why.
What this means is we can write out descriptions of how the site works and then use an automated testing tool to test that the site actually works that way.
Once we have tests in place that ensure the user experience doesn't break, we can begin to refactor the legacy code, and we can add unit tests, to ensure our new smaller, modernized components don't break.
While writing unit tests for legacy code can be very tricky, writing behavior tests for existing code is not that difficult.
The typical BDD and TDD workflow involves writing tests first, having them fail, then writing the code to pass the test. When we have code already written, our process will be a little different.
We'll start by writing the feature file, as usual.
Then we'll run Behat and see if our test passes.
If it does, great. It's a good idea now to check that the steps do fail if the code is broken. So I like to double check that the test works by going through each step and changing something small in the code to break it - just commenting out or changing an important line of the relevant code is usually enough. Then you can revert that change and have a passing test that you know will catch regressions.
If the test fails, then either
we described the feature incorrectly,
made a mistake in the test code,
or the feature is actually broken. So, double check these three things.
You'll also want to have a code style guide.
Having the debate of tabs vs spaces, or brackets on the same line or new line, over and over again because there is no standard in your office not only slows things down, it also makes clutter in your commits.
While there are some ways to filter out whitespace from your diffs, you can't filter out everything. By choosing a standard and setting up our IDE to automatically apply the style to our code upon save, we were able to stop wasting time arguing about things that didn't matter, and easily see the real changes in the code.
It also helps prevent animosity on the team over what are honestly stupid arguments.
When we first started working on the project, another developer and myself kept differing on the spelling of a certain word, convinced we were each right, and changing each other's code to reflect the spelling we preferred. It was so annoying to see my spelling changed, and I would always go change it back, and then the other developer would change it back too. After a few times of this happening, we realized the spelling of one word was the least important part of the code changes, and worked around it.By the way, we were both right. The word had two acceptable spellings.
We originally had a sort of custom one just based off of what we liked, but we eventually switched to PSR-2. The point is not to pick the "right" standard, but just to have one.
Quality is a lot more important than style, which is why I've called this "Rules" rather than "guidelines".
These rules exist to make sure that your new code isn't becoming "legacy" code as you write it - meaning that you're not writing new code that is too coupled with other code to be tested, or has too high N-path complexity or cyclomatic complexity, or any number of other rules that the community commonly agrees on as code smells.
So, create a set of specific rules about code quality. It can't be vague like "low n-path", it should be a specific measurement. N-Path of 200 or less.
There are a lot of different ways you can get these measurements on your projects.
There are of continuous integration services that allow you to calculate these numbers, and there are others that calculate a score based on their own metrics.
The biggest problem I've had with all of them is actually two problems:
it's usually hard to calculate the measurements only for new code, not the entire project
secondly, the feedback happens too late.
We set up scrutinizer ci, which I really love. Whenever we push a branch, it does a build and calculates a bunch of metrics. It then hooks into our hipchat, and announces the developer, the branch, and how many "issues" they caused or fixed. This helps because it does only count new issues they caused in that announcement - but there's still a timing problem.
By the time they get this feedback, they've already moved on to the next task, and are focused on something else.
It's really hard to enforce having developers fix these problems, even when we can all agree they are important.
So we added PHP Mess Detector to our project. This tool can be run locally, on specific files, so our developers can get instant feedback.
So we have our rules for php mess detector for our project, and every developer should have PHPMD. But how do we make sure they remember to run the tool, and fix the code? We added a git hook, which provides immediate feedback because it won't let us commit code that violates these rules.
We also added a git pre-commit hook that runs mess detector before commit, and blocks the commit if the rules are broken.
Obviously, this hook can be bypassed if necessary, however with the other processes in place it shouldn't be necessary
We set up a process for code review. Again, this is something that there are numerous tools that you can use for automation and enforcement, but the key is doing it, every time. Depending on the size of your team, you can decide you need a certain number of approvals before merging.
CR works best on small PRs - the more code there is to review at once, the harder it will be.
When doing code review, you're not concerned with things like formatting and style - camelcase vs snake case or indenting. You're looking for long term maintainability and design quality.
Is this code readable - do you as the reviewer understand what this code does and why, without having to ask?
Code Comments should explain *why* something is happening, not *what* is happening.
Issues that you can't catch via automated tools.
We found it extremely helpful to put an emphasis on continuing education for ourselves as engineers.
Is your application:
a database abstraction layer?
An email sending tool?
A PDF Generator?
Or is it an application that serves some business purpose that happens to also need to use these things?
Don't grab the first library you find. Research the options and determine which one to use based on important criteria:
At Grovo, we also undertook a similar project to rewrite the legacy version of our software - and in the new version we decided to use UUIDs - universally unique identifiers. So for the PHP parts of the codebase, we pulled in the most popular PHP UUID library, written and maintained by Ben Ramsey. A few weeks into my work at Grovo, I was tweeting about test quality and coverage, and Ben contacted me asking if I could help improve the coverage and quality of the UUID library tests. I'd have been happy to do this even if we weren't using it at Grovo, but even more so since we were. I spent a few days reviewing the tests, adding coverage to some of the hard-to-test areas, and improved the quality and maintainability of some tests. So the library went from 89% coverage to 93%, and is now around 96%, but more importantly, a lot of the tests were much stronger and would be easier to debug when they fail.
Don't forget to contribute back!
As I mentioned earlier, our first focus was re-writing the admin panel since it just didn't work. Most admin actions were based around the CRUD actions, so it was really easy for us to pull in a third party library for this. We used this admin panel generator called Sonata, which is a bundle for the Symfony framework. Sonata also offered a lot of extra functionality beyond just CRUD such as custom blocks that you can use to display important information.
With our admin panel written and functioning, our next step was to start working on our API.While we did have some clients asking for an API, we also needed to write the API for internal use, so that we could have one place for the business logic for both the customer facing site and our admin panel.
Having the API would also enable us to iteratively refactor the frontend site without needing to rewrite all of it at once. Meaning as we touched parts of the old framework’s functionality to add new features, we wrote those features into the API so they could be fully tested,
We then removed the code in the original controllers and replaced it with API calls. Our behavior tests helped ensure the frontend didn’t lose any functionality.
The API is an area where we did really mess up.
Remember when I talked about not writing code that doesn't have to do with your business logic? The business logic of your product is the one thing that makes your product unique. It's the thing people actually care about. It's the thing that is going to make your company money!
Is anyone familiar with a company called Salesforce? Salesforce is a "Customer Relationship Management" platform - a tool for managing customer information for integrating sales, marketing and customer support.
How much of Salesforce's revenue do you think comes from their APIs?
50 %
I'm going to assume we're all familiar with eBay
Salesforce reportedly generates 50 percent of its revenues through APIs, eBay nearly 60 percent and Expedia a whopping 90 percent.
Salesforce reportedly generates 50 percent of its revenues through APIs, eBay nearly 60 percent and Expedia a whopping 90 percent.
Your API is the most important gateway to the combination of the business logic that powers your unique software, and the non business specific actions and tools like sending email and accessing data. Once you write the APIs, you can build multiple clients on top of it - responsive web frontend, native mobile apps, third parties can consume it.
So make your API a first class citizen
So, as I said we started this project back in May of 2013, and I'm happy to announce that we did meet our business goals.
New Symfony based Admin was launched after about 9 months (thanks developers!)
Had a few bugs, took about 3 more months to be considered stable
Over past year, close to 0 regressions (Thanks Behat!)
Very limited downtime (Thanks Amazon, Elastic Beanstalk, Aurora!)
We also met our technical goals for the most part.
Maintainable Code: While we started off a little rocky, we have gotten much better about writing code that doesn't prompt anyone to curse or yell "what is this doing?" We do still have that code from the original application, or from our first few months while we were learning, but because of our quality tools, we are constantly modernizing all of it.
Quality Code: The site is less buggy and is faster. Even as our IT team has tripled in size, our code remains high quality thanks to the tools we've put in place - and a good hiring process.
Documentation: We have a huge library of behat tests that document the site, as well as good comments in the code. We engage in peer code review sessions often and encourage each other to write good comments and good code. Our behat files are also available through an open source tool I wrote that takes the .feature files and turns them into an interactive html site for our admin users to use as a site manual
Rapid Development: We add new features so often that we typically do 1-2 new releases a week. We have to plan several weeks ahead with management and business users to keep up with the speed at which our developers are churning out new quality code
Easy Deployment: I actually tweeted the other day about how awesome our deployment process it, I hit the deploy command and then remembered I had left my breakfast in the office kitchen, went off to go heat it up, started a conversation with a coworker, and never once had to think about that release. It all just worked.
Zero Regressions Per Release: We very rarely have regressions or new bugs, but when we do, it's much easier to fix them now than it ever was.