This document discusses balancing quality and speed for startups. It recommends not trading off quality for speed as this leads to accumulating technical debt over time. It suggests focusing on architecture, measuring and managing technical debt, and using libraries over frameworks, automation over manual processes, functional tests over unit tests, cloud platforms over self-hosted infrastructure, and including just enough features rather than a "kitchen sink" approach. The document provides hints and tips for technical decision making that maintains quality while also achieving speed.
The Requirements Day - User Survey - Nigel Bechwith_ SpeedsoftVisure Solutions
The document discusses the results of a requirements engineering survey conducted in the Benelux region. It finds that (1) there is a heavy reliance on Word and Excel for requirements documentation, (2) requirements make up a larger than expected portion of total project costs, and (3) many organizations struggle to get high-quality requirements in a timely manner. The survey suggests the requirements process could be improved for many companies.
Versioning schemes and branching models for Continuous Delivery - Continuous ...Pavel Chunyayev
There are many different versioning schemes and branching models. Although there’s no golden standard, some of them suit Continuous Delivery more than others. Both branching and versioning are fundamental to the software development life cycle and
I discussed different methods that communities developed over years along with their advantages and disadvantages.
Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, UtrechtPavel Chunyayev
This talk covers the importance of automated testing in the proper Continuous Delivery process. Different types of testing are covered in the talk along with how to apply them.
Why, What to Open Source and What Not, and How.
I believe that every enterprise can and should benefit from not only using open-source technology but also contributing. This presentation describes why bother to open source, what to open source and what NOT to open-source and how to promote your project.
Denver Atlassian User Group August 16, 2017. Monthly meet up of Atlassian users in Denver, discussing JIRA, Confluence, HipChat and more. Summit U.S. 2017 Conference Insider Tips.
Paul Vlaming is an experienced project manager with over 25 years of experience in facilities and corporate real estate. He has expertise in areas such as FF&E, retail construction, vendor management, space planning and design, facilities management, and project management. He has extensive experience developing corporate standards and specifications. His background includes projects for companies such as Robert Half, Protiviti, W.W. Grainger, and various commercial office and data center projects.
Denver Atlassian User Group June 16, 2017. Monthly meet up of Atlassian users in Denver, discussing JIRA, Confluence, HipChat and more. In this presentation, Mark Eliasen from ReleaseTeam discusses unified time tracking using JIRA and Tempo, bringing together Dev, Ops and Business Teams.
The Requirements Day - User Survey - Nigel Bechwith_ SpeedsoftVisure Solutions
The document discusses the results of a requirements engineering survey conducted in the Benelux region. It finds that (1) there is a heavy reliance on Word and Excel for requirements documentation, (2) requirements make up a larger than expected portion of total project costs, and (3) many organizations struggle to get high-quality requirements in a timely manner. The survey suggests the requirements process could be improved for many companies.
Versioning schemes and branching models for Continuous Delivery - Continuous ...Pavel Chunyayev
There are many different versioning schemes and branching models. Although there’s no golden standard, some of them suit Continuous Delivery more than others. Both branching and versioning are fundamental to the software development life cycle and
I discussed different methods that communities developed over years along with their advantages and disadvantages.
Want Continuous Delivery? Give testing a priority! 16-6-2016, Friss, UtrechtPavel Chunyayev
This talk covers the importance of automated testing in the proper Continuous Delivery process. Different types of testing are covered in the talk along with how to apply them.
Why, What to Open Source and What Not, and How.
I believe that every enterprise can and should benefit from not only using open-source technology but also contributing. This presentation describes why bother to open source, what to open source and what NOT to open-source and how to promote your project.
Denver Atlassian User Group August 16, 2017. Monthly meet up of Atlassian users in Denver, discussing JIRA, Confluence, HipChat and more. Summit U.S. 2017 Conference Insider Tips.
Paul Vlaming is an experienced project manager with over 25 years of experience in facilities and corporate real estate. He has expertise in areas such as FF&E, retail construction, vendor management, space planning and design, facilities management, and project management. He has extensive experience developing corporate standards and specifications. His background includes projects for companies such as Robert Half, Protiviti, W.W. Grainger, and various commercial office and data center projects.
Denver Atlassian User Group June 16, 2017. Monthly meet up of Atlassian users in Denver, discussing JIRA, Confluence, HipChat and more. In this presentation, Mark Eliasen from ReleaseTeam discusses unified time tracking using JIRA and Tempo, bringing together Dev, Ops and Business Teams.
Xenon Automation Testing Tool - Test Anything, Anywhere, AnytimeJade Global
Xenon reimagines QA for the agile world – bringing exceptional efficiency by automating the entire QA lifecycle. Xenon is an On-demand, Scalable, Test Lifecycle Management Cloud Platform built for business process testing needs for enterprise applications.
A developers' journey into building automated tests for IT from the ground upstefanorago
Having learned the benefits of applying TDD to application code, my team decided to apply the same technique to infrastructure code. There isn’t quite as much literature available, and we faced many challenges, but we ended up with a rewarding result: a continuous integration server that runs tests at several levels, including acceptance tests. The technology stack involves Chef, Test Kitchen, Vagrant, KVM, Serverspec and Jenkins. Although each one of these parties has at least a good level of maturity, integrating all the blocks has been the interesting part. We discuss how to put together virtualization solutions, configuration management and BDD specs to converge into a fully automated continuous integration system that can and, in our opinion, should become part of the workflow for DevOp teams.
The document discusses the benefits of moving from a traditional waterfall development process to an agile development process. It notes that agile values individuals and interactions, working software, customer collaboration, and responding to change over comprehensive documentation, following a plan, and contract negotiation. The document also compares key aspects of traditional and agile development such as planning, requirements, testing, and delivery approaches.
Geekle eCommerce Tech Summit - December 2021Sylvain Reiter
PaaS solutions help launch eCommerce stores in record time and provide lots of features out of the box. However, it is critical for developers to understand the UX and accessibility requirements to build inclusive digital solutions. Most projects fail to connect the creative and tech processes, so it's our job as "geek" to better bridge that gap. Let's explore the end-to-end process and best practices so you can ensure your next eCommerce project is compliant and optimised for all.
The document discusses an agenda for a presentation on Agile and the Outsystems Platform. The agenda includes an introduction to Agile principles, a demo of the Outsystems Platform, and a discussion of how it could be used to develop a web and mobile application for a company to manage employees, products, and suppliers. The Outsystems Platform is presented as an all-in-one agile development platform that allows for visual modeling, database design, integration, deployment, and application management through tools like Service Studio, Integration Studio, and Service Center.
The document discusses new testing capabilities in Visual Studio 2010, including test planning and execution, issue tracking with rich bugs, automated UI testing, and virtual lab management. Some key capabilities covered are defining and running unit, integration, and UI tests; collecting diagnostic data to reproduce bugs; creating automated UI tests using Coded UI; and managing a virtual lab with environments and machines for testing.
Addressing the elephant through persistence and perseveranceRanjeet Pethe
This is the presentation from the #lastconf 2017 enjoy and please feedback. I talk about 3 big elephants which we finally tamed...automated testing, CI and CD in a datawarehouse project
TestCorner #22 - How DevOps helps QA daily worksHTC
The document discusses how DevOps helps the QA daily work at a company. It outlines the team structure and responsibilities, including global sites and integration. It describes QA pain points like short release cycles and large test rounds. To solve these, the company adopted test automation using RobotFramework, Appium, and BrowserStack. This automation freed up QA resources and testing time while allowing them to handle more test items. Future plans include automatically submitting issues and filling test results.
Tech Days 2015 nyheter i visual studio alm 2015Solidify
Moderna projekt kräver moderna verktyg. Med dagens krav på verktyg och tekniker kan det vara en tidsödande process att hålla en utvecklingsplattform med allt det innebär uppdaterad. Med Visual Studio ALM 2015 har vi en sammanhängande svit av lösningar som ger oss alla förutsättningar för modern utveckling.
Portfolio Management in JIRA - Karen Branham and Scottie BrimmerAtlassian
As our company's use of JIRA increased, we sensed a need to track portfolio projects within JIRA. But we didn’t find any plugins that met our need, so we built our own process. Through a combination of custom issue types, fields, and workflows, our leaders and PMO can now see the entire portfolio of 60 projects.
Shifting Left can save your organization lots of time and money, but only if you implement it in the right way. Here, we'll show you how to achieve a successful transformation.
DevOps, what should you decide, when, why & how - Vinita RathiJAXLondon_Conference
Vinita Rathi discusses her experience implementing DevOps practices during her 5 years at Goldman Sachs. She emphasizes the importance of stability, operability, and testing over speed of delivery. Planning infrastructure needs well in advance is also key. At Systango, adopting open source tools, keeping technologies up to date, and deploying/iterating quickly are priorities due to limited budgets and resources. The bare minimum for DevOps includes making deployments routine, monitoring performance, strict version control, and peer code reviews.
Automation as an Ally discusses how to lead a cultural shift towards test automation by automating repetitive and mundane tasks. It recommends automating software installations, configurations, tests across different hardware and operating systems with varying inputs. The document also suggests using global variables and helper suites to easily reuse code and build up test automation complexity gradually. It describes how Eggplant AI can visually model systems and test coverage. Finally, it provides examples of specific tasks that can be automated like demos, timing tests, using Excel to manage labs, and automating other scripts for comprehensive system checks.
Clouds Ahead: Work with Walmart Labs's Hybrid, Multicloud EnvironmentNisum
Nisum’s Director of Advanced Technology Solutions and R&D, Faraz Mohammed and Walmart Lab's OneOps consultant, Jason van Zyl spoke at O'Reilly's Software Architecture conference in San Francisco to give an overview of Walmart Lab’s internal open source platform to optimize a hybrid, multi-cloud environment, OneOps.
This document discusses the importance of agile performance testing. It notes that primary post-release problems are often related to responsiveness degradation and inability to handle required throughput. Agile performance testing involves executing performance tests throughout the project, establishing baselines when architecture stabilizes, and investigating performance problems by writing failing tests and iteratively fixing issues locally and in deployed environments. It emphasizes that performance testing is iterative in nature and requires understanding how systems work in order to test relevant scenarios and correlate measurement results.
New Relic - Digital Intelligence - Meetup #12WinOps Conf
New Relic is a digital intelligence platform that provides full stack visibility into customer experience, applications, and infrastructure. It collects metrics, dashboards, and alerts to help companies understand their digital business performance. New Relic serves over 500,000 users and processes over 512 trillion event queries per day to monitor customers' digital supply chains in real-time across websites, mobile apps, and backend services.
The document discusses performance testing and engineering for applications. It covers different types of automation for testing client-server and network protocols, as well as testing approaches for traditional, cloud-based, edge, containerized, and microservices applications. The challenges of testing different industry trends like cloud, containers, and AI/ML are also addressed. Lastly, it emphasizes the importance of performance for businesses and mapping performance to financial impact.
ATC follows Agile Software Development Methodology (based on iterative and incremental development processes), where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
In this session you will get an understanding how to evaluate your company's or applications' cloud readiness. We will cover aspects such as workload and data categorisation, automation levels, design for failure and cost-optimised architectures. We will be looking at typical application evolution paths from tightly coupled physical systems, in some cases through virtualisation, to cloud-native, or cloud-ready, loosely coupled, distributed and automated solutions.
This session will also take a look at typical enterprise business processes, from procurement to development and testing, and operations and support. We will introduce known-to-work cloud-ready business processes and new best practices, through customer use cases from companies who are cloud native, or have undergone a cloud transformation to get there.
Presented by: Michael Blakeney, Terazo
Presented at All Things Open 2020
Abstract: Developing applications for the cloud presents a new set of problems for engineers and teams. From handling cloud based service dependencies like queues and blob storage to spinning up new environments all locally, building an app for the cloud is challenging and can really create drag for a team. Using modern tools like docker containers, we will dig into some of tactics that can be used to effectively mitigate common issues and help your team accelerate its development.
Xenon Automation Testing Tool - Test Anything, Anywhere, AnytimeJade Global
Xenon reimagines QA for the agile world – bringing exceptional efficiency by automating the entire QA lifecycle. Xenon is an On-demand, Scalable, Test Lifecycle Management Cloud Platform built for business process testing needs for enterprise applications.
A developers' journey into building automated tests for IT from the ground upstefanorago
Having learned the benefits of applying TDD to application code, my team decided to apply the same technique to infrastructure code. There isn’t quite as much literature available, and we faced many challenges, but we ended up with a rewarding result: a continuous integration server that runs tests at several levels, including acceptance tests. The technology stack involves Chef, Test Kitchen, Vagrant, KVM, Serverspec and Jenkins. Although each one of these parties has at least a good level of maturity, integrating all the blocks has been the interesting part. We discuss how to put together virtualization solutions, configuration management and BDD specs to converge into a fully automated continuous integration system that can and, in our opinion, should become part of the workflow for DevOp teams.
The document discusses the benefits of moving from a traditional waterfall development process to an agile development process. It notes that agile values individuals and interactions, working software, customer collaboration, and responding to change over comprehensive documentation, following a plan, and contract negotiation. The document also compares key aspects of traditional and agile development such as planning, requirements, testing, and delivery approaches.
Geekle eCommerce Tech Summit - December 2021Sylvain Reiter
PaaS solutions help launch eCommerce stores in record time and provide lots of features out of the box. However, it is critical for developers to understand the UX and accessibility requirements to build inclusive digital solutions. Most projects fail to connect the creative and tech processes, so it's our job as "geek" to better bridge that gap. Let's explore the end-to-end process and best practices so you can ensure your next eCommerce project is compliant and optimised for all.
The document discusses an agenda for a presentation on Agile and the Outsystems Platform. The agenda includes an introduction to Agile principles, a demo of the Outsystems Platform, and a discussion of how it could be used to develop a web and mobile application for a company to manage employees, products, and suppliers. The Outsystems Platform is presented as an all-in-one agile development platform that allows for visual modeling, database design, integration, deployment, and application management through tools like Service Studio, Integration Studio, and Service Center.
The document discusses new testing capabilities in Visual Studio 2010, including test planning and execution, issue tracking with rich bugs, automated UI testing, and virtual lab management. Some key capabilities covered are defining and running unit, integration, and UI tests; collecting diagnostic data to reproduce bugs; creating automated UI tests using Coded UI; and managing a virtual lab with environments and machines for testing.
Addressing the elephant through persistence and perseveranceRanjeet Pethe
This is the presentation from the #lastconf 2017 enjoy and please feedback. I talk about 3 big elephants which we finally tamed...automated testing, CI and CD in a datawarehouse project
TestCorner #22 - How DevOps helps QA daily worksHTC
The document discusses how DevOps helps the QA daily work at a company. It outlines the team structure and responsibilities, including global sites and integration. It describes QA pain points like short release cycles and large test rounds. To solve these, the company adopted test automation using RobotFramework, Appium, and BrowserStack. This automation freed up QA resources and testing time while allowing them to handle more test items. Future plans include automatically submitting issues and filling test results.
Tech Days 2015 nyheter i visual studio alm 2015Solidify
Moderna projekt kräver moderna verktyg. Med dagens krav på verktyg och tekniker kan det vara en tidsödande process att hålla en utvecklingsplattform med allt det innebär uppdaterad. Med Visual Studio ALM 2015 har vi en sammanhängande svit av lösningar som ger oss alla förutsättningar för modern utveckling.
Portfolio Management in JIRA - Karen Branham and Scottie BrimmerAtlassian
As our company's use of JIRA increased, we sensed a need to track portfolio projects within JIRA. But we didn’t find any plugins that met our need, so we built our own process. Through a combination of custom issue types, fields, and workflows, our leaders and PMO can now see the entire portfolio of 60 projects.
Shifting Left can save your organization lots of time and money, but only if you implement it in the right way. Here, we'll show you how to achieve a successful transformation.
DevOps, what should you decide, when, why & how - Vinita RathiJAXLondon_Conference
Vinita Rathi discusses her experience implementing DevOps practices during her 5 years at Goldman Sachs. She emphasizes the importance of stability, operability, and testing over speed of delivery. Planning infrastructure needs well in advance is also key. At Systango, adopting open source tools, keeping technologies up to date, and deploying/iterating quickly are priorities due to limited budgets and resources. The bare minimum for DevOps includes making deployments routine, monitoring performance, strict version control, and peer code reviews.
Automation as an Ally discusses how to lead a cultural shift towards test automation by automating repetitive and mundane tasks. It recommends automating software installations, configurations, tests across different hardware and operating systems with varying inputs. The document also suggests using global variables and helper suites to easily reuse code and build up test automation complexity gradually. It describes how Eggplant AI can visually model systems and test coverage. Finally, it provides examples of specific tasks that can be automated like demos, timing tests, using Excel to manage labs, and automating other scripts for comprehensive system checks.
Clouds Ahead: Work with Walmart Labs's Hybrid, Multicloud EnvironmentNisum
Nisum’s Director of Advanced Technology Solutions and R&D, Faraz Mohammed and Walmart Lab's OneOps consultant, Jason van Zyl spoke at O'Reilly's Software Architecture conference in San Francisco to give an overview of Walmart Lab’s internal open source platform to optimize a hybrid, multi-cloud environment, OneOps.
This document discusses the importance of agile performance testing. It notes that primary post-release problems are often related to responsiveness degradation and inability to handle required throughput. Agile performance testing involves executing performance tests throughout the project, establishing baselines when architecture stabilizes, and investigating performance problems by writing failing tests and iteratively fixing issues locally and in deployed environments. It emphasizes that performance testing is iterative in nature and requires understanding how systems work in order to test relevant scenarios and correlate measurement results.
New Relic - Digital Intelligence - Meetup #12WinOps Conf
New Relic is a digital intelligence platform that provides full stack visibility into customer experience, applications, and infrastructure. It collects metrics, dashboards, and alerts to help companies understand their digital business performance. New Relic serves over 500,000 users and processes over 512 trillion event queries per day to monitor customers' digital supply chains in real-time across websites, mobile apps, and backend services.
The document discusses performance testing and engineering for applications. It covers different types of automation for testing client-server and network protocols, as well as testing approaches for traditional, cloud-based, edge, containerized, and microservices applications. The challenges of testing different industry trends like cloud, containers, and AI/ML are also addressed. Lastly, it emphasizes the importance of performance for businesses and mapping performance to financial impact.
ATC follows Agile Software Development Methodology (based on iterative and incremental development processes), where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
In this session you will get an understanding how to evaluate your company's or applications' cloud readiness. We will cover aspects such as workload and data categorisation, automation levels, design for failure and cost-optimised architectures. We will be looking at typical application evolution paths from tightly coupled physical systems, in some cases through virtualisation, to cloud-native, or cloud-ready, loosely coupled, distributed and automated solutions.
This session will also take a look at typical enterprise business processes, from procurement to development and testing, and operations and support. We will introduce known-to-work cloud-ready business processes and new best practices, through customer use cases from companies who are cloud native, or have undergone a cloud transformation to get there.
Presented by: Michael Blakeney, Terazo
Presented at All Things Open 2020
Abstract: Developing applications for the cloud presents a new set of problems for engineers and teams. From handling cloud based service dependencies like queues and blob storage to spinning up new environments all locally, building an app for the cloud is challenging and can really create drag for a team. Using modern tools like docker containers, we will dig into some of tactics that can be used to effectively mitigate common issues and help your team accelerate its development.
UTOUG Training Days 2019 Voyage to Visual Builder Cloud ServiceKaren Cannell
Lessons Learned on an APEX gal's voyage to learn Oracle Visual Builder Cloud Service, Oracle's newest low-code rapid development platform. How hard is it? Do I need to know JavaScript? Is it really drag and drop? VBCS Basics
This document discusses API design collaboration and proposes a solution to common problems that occur when teams design APIs in silos. The proposed solution standardizes API design templates, implements a design gap detector and centralized user management. It also automates the generation of API stubs, test cases and pipelines to enable early validation of API contracts across environments. This facilitates more automated collaboration, reduces delays and production fixes, and makes troubleshooting easier through blameless culture adoption and transparency across the end-to-end process.
Measure and increase developer productivity with help of Severless by Kazulki...Vadym Kazulkin
The goal of Serverless is to focus on writing the code that delivers business value and offload everything else to your trusted partners (like Cloud providers or SaaS vendors). You want to iterate quickly and today’s code quickly becomes tomorrow’s technical debt. In this talk we will show why Serverless adoption increases the developer productivity and how to measure it. We will also go through AWS Serverless architectures where you only glue together different Serverless managed services relying solely on configuration, minimizing the amount of the code written.
ADDO_2020-Driving-Digital-Transformation-through-CloudOps-and-SRE.pdfPhil Johnson
This document provides an overview of a presentation on driving digital transformation through CloudOps and Site Reliability Engineering (SRE). The presentation discusses multi-cloud adoption within regulated industries, advocating for mature engineering practices with a focus on SRE, FinOps, GitOps, and DevSecOps. It also covers helping to develop cloud native products and services for enterprises and building sustainable digital capabilities.
ENGworks provides 3D modeling services for construction estimating. Ian McGaw discussed how ENGworks has focused on technology for over 30 years to develop tools that integrate design with cost data. He explained traditional and digital estimating workflows, and compared different technologies like Excel, Revit, and ProEst. McGaw emphasized that contractors should focus on productivity, efficiency, and using software to streamline processes to gain a competitive advantage in the industry.
Aligning Software Testing With Modern Age Development PracticesAspire Systems
This document discusses aligning software testing practices with modern development approaches. It describes the evolution from waterfall to iterative to agile development models. Agile practices like scrum, lean, kanban, and DevOps are discussed as engineering methods. Current business trends around digital transformation, mobility, and customization are also covered. The challenges of testing in these modern contexts include shorter release cycles, evolving requirements, and multi-channel delivery. The document proposes a shift left testing approach, greater automation, and a transition from quality assurance to quality engineering. Specific practices discussed include behavior driven development, test-driven development, and balancing manual and automated testing. Key technical areas like cloud, security, and tools are also summarized.
Master the art of orchestrating innovative solutions for
Continuous Delivery
Do you wish to be a certified DevOps Architect? Are you keen to learn how to
deploy effective and efficient automated pipelines to deliver high quality
softwares, reduce risk and costs, and enhance business value? Well..
The “DevOps Architect” certification equips IT professionals with a sound
understanding of the DevOps landscape and empowers you to lead the
transformation of the organization’s architecture from traditional waterfall or
agile to DevOps.
Ce
Software Product Engineering Services | Digital TransformationSkizzle Technolabs
Skizzle is a global software product engineering company and a community of passionate, purpose-led individuals. We think disruptively to deliver technology to address our clients’ toughest challenge, all while seeking to revolutionize the IT industry and create positive social change.
AWS Enterprise Summit London | Transforming Your IT with AWSAmazon Web Services
The document discusses how AWS can help organizations transition to the cloud. It outlines that the journey to the cloud requires: a reason to move, the necessary tools, and a map to guide the process. AWS provides various resources to support the transition such as account managers, solution architects, training and certification programs, professional services, and enterprise support. The document emphasizes that cloud adoption is an iterative process that starts with a discovery workshop to assess the current state, define goals, and create a roadmap. It positions AWS as able to provide all of the elements needed to successfully plan and execute a cloud transition.
Perform a Cloud Readiness Assessment for Your Own CompanyAmazon Web Services
In this session you will get an understanding how to evaluate your company's or applications' cloud readiness. We will cover aspects such as workload and data categorisation, automation levels, design for failure and cost-optimised architectures. We will be looking at typical application evolution paths from tightly coupled physical systems, in some cases through virtualisation, to cloud-native, or cloud-ready, loosely coupled, distributed and automated solutions.
The document discusses enterprise architecture artifacts and tools used by Princeton Digital Advisors. It provides a list of techniques and tools used in different phases of a project including business modeling, system modeling, cloud diagramming, and continuous integration/delivery. It also includes examples of deliverables such as impact maps, prototypes, deployment diagrams, and organizational change management.
An introduction to fundamental architecture conceptswweinmeyer79
(Note: This is a very dated version of this popular deck, as SlideShare does not provide authors with a mechanism to update their documents. If interested in the latest version, feel free to message me on LinkedIn or at wweinmeyer@gmail.com. Also, feel free to ask SlideShare to bring back the ability to update posted documents.)
A discussion of the fundamentals you need to nail in your architecture practice:
- Architecture vs. Design
- Conceptual vs. Logical vs. Physical architecture
- Viewpoint Frameworks
- Architecture Domains
- Architecture Tiers
You are free to use/copy this information but if you do so, please include an acknowledgement
How to Leverage Serverless to Optimize for Cost and PerformanceDevOps.com
Serverless technology is growing in popularity and is often lauded as a “hands free” solution with benefits like unlimited scale, less operational staff -- and of course, lower cost. But like any new technology, reaping the benefits requires a more strategic approach than it may seem. Just as when companies moved from on-premise to the cloud, “lifting and shifting” existing applications to serverless can lead to less than optimal performance and price.
In this webinar, Bill Buckley, VP of Engineering at CloudZero, will discuss considerations when a group is building or moving to serverless infrastructure, so that you can experience the cost, cultural and performance benefits. He’ll cover:
Cultural considerations to get the most out of a severless transformation
Architectural considerations when leveraging serverless technologies that will keep your costs in check
How to implement serverless cost and performance monitoring to gain visibility into your systems
How the CloudZero engineering team built their product on serverless infrastructure and was able to reduce their AWS bill, even as they added more customers
Why We Need Architects (and Architecture) on Agile ProjectsRebecca Wirfs-Brock
This is an updated version of this talk which I will present at Agile 2013.
The rhythm of agile software development is to always be working on the next known, small batch of work. Is there a place for software architecture in this style of development? Some people think that software architecture should simply emerge and doesn’t require ongoing attention. But it isn’t always prudent to let the software architecture emerge at the speed of the next iteration. Complex software systems have lots of moving parts, dependencies, challenges, and unknowns. Counting on the software architecture to spontaneously emerge without any planning or architectural investigation is at best risky.
So how should architecting be done on agile projects? It varies from project to project. But there are effective techniques for incorporating architectural activities into agile projects. This talk explains how architecture can be done on agile projects and what an agile architect does.
Measure and Increase Developer Productivity with Help of Serverless AWS Commu...Vadym Kazulkin
This document discusses increasing developer productivity through serverless computing. It begins by outlining various types of cognitive load on developers and how serverless can help minimize extraneous load. It then discusses how technical debt and inability to evolve can reduce productivity. Serverless is presented as helping reduce technical debt through writing less code and fewer dependencies. The total cost of ownership advantages of serverless are covered, including no infrastructure maintenance, built-in auto-scaling, ability to do more with fewer resources, lower technical debt, and faster time to market. Best practices like evolutionary architecture, DevOps, and chaos engineering are discussed for effectively leveraging serverless. Recent improvements to serverless offerings from AWS are summarized.
This document discusses various types of architecture including enterprise, solution, integration, software, business, and domain architecture. It also outlines key architecture principles and deliverables. The principles include target architecture, roadmap, view models, patterns used in the solution, peer review, and governance. Key deliverables include documentation of these principles, various views of the system, and references. Maintaining architecture is important to enable the solution, ease implementation through patterns and alignment, and support the system post-deployment through quality attributes.
Site Reliability Engineering: The DevOps Culture.Ahmed Atef
The document discusses site reliability engineering and DevOps culture. It introduces site reliability engineering as reducing silos, accepting failures, gradual changes, leveraging automation, and measuring everything. The talk will cover developers vs operators, the DevOps culture, service level objectives like availability and scalability, and resources for further information. Q&A will follow the presentation.
Ben Walters - Creating Customer Value With Agile Testing - EuroSTAR 2011TEST Huddle
EuroSTAR Software Testing Conference 2011 presentation on Creating Customer Value With Agile Testing by Ben Walters. See more at: http://conference.eurostarsoftwaretesting.com/past-presentations/
YOW! Perth 2022 - Reviving the Art of Software DesignAndy Marks
The document discusses reviving the art of software design. It notes that "less code" approaches led to less attention to design over time, as design skills were outsourced and larger codebases/tools made mastery more difficult. Startup mindsets also normalized breaking things quickly. The document proposes focusing on design by constraining technology options, rediscovering design classics, fixing culture to afford more design time, and verifying designs work as intended through practices like fitness functions. The goal is to make software "work, right, and fast" through improved design skills and attention.
Top 5 Software Purchasing Fails for an Agile EnvironmentAndy Marks
1. The document outlines 5 common fails when purchasing software for an agile environment: moving target requirements, bundling unnecessary capabilities, deployment challenges with customizations, lack of testing support, and increased developer friction.
2. It recommends purchasing software with loosely coupled architectures, standardized development ecosystems, automated deployment, and comprehensive testing support to reduce risks for agile teams.
3. Key considerations for software purchasing include roadmap alignment, integration costs, customization needs, automation levels, and required technical skills.
"Kata" your way to better architecture skillsAndy Marks
Presented at the NDC Sydney conference on October 13, 2020.
https://ndcsydney.com/workshops/kata-your-way-to-better-architectures-09j6/0jz51ektu0f
Architecture Kata exercises (https://archkatas.herokuapp.com/) are great activities to deliberately build skills in on-the-spot technical solution design. This workshop will give attendees both a theoretical and practical experience with this activity and allow them to conduct the same exercises within their teams/organisations.
This deep-dive will describe the purpose and structure of these exercises and then outline an incremental approach to completing a Kata. With this background, the attendees will form small groups and collaboratively design their own solution to a different Kata problem, guided by the experience of the facilitator(s). The final stage of the workshop consists of all the groups sharing and discussing their solutions with the entire set of attendees.
"Kata" your way to better architecture skillsAndy Marks
Presented at the Great International Developer Summit on July 8, 2020.
https://wurreka.com/ict/virtual-conference/architecture/session/kata-your-way-to-better-architecture-skills
Architecture Kata exercises (https://archkatas.herokuapp.com/) are great activities to deliberately build skills in on-the-spot technical solution design. This workshop will give attendees both a theoretical and practical experience with this activity and allow them to conduct the same exercises within their teams/organisations.
This deep-dive will describe the purpose and structure of these exercises and then outline an incremental approach to completing a Kata. With this background, the attendees will form small groups and collaboratively design their own solution to a different Kata problem, guided by the experience of the facilitator(s). The final stage of the workshop consists of all the groups sharing and discussing their solutions with the entire set of attendees.
This document presents a humorous "bingo" game about identifying different personality types or "characters" that are sometimes found in IT environments. It describes 10 different characters - such as the Workaholic, Shiny New Object Fetishist, and Bully - and provides examples of their typical characteristics and behaviors. The document concludes by advising the reader to accept things they cannot change, have courage to change things they can, and seek wisdom to know the difference, quoting sources like the Serenity Prayer and Netflix.
Developer Experience (DX) as a Fitness Function for Platform TeamsAndy Marks
Co-delivered with Fendy Liauw on Wednesday May 9. See https://www.eventbrite.com.au/e/developer-experience-as-a-fitness-function-for-platform-teams-tickets-44697308854?aff=TWNetwork for details
Melbourne Clojure Meetup Jan 2018 - ClojureBridgeAndy Marks
ClojureBridge aims to increase diversity in tech by offering free Clojure workshops. The document discusses the history and structure of ClojureBridge events since 2011. It provides details on workshop content which progresses from simple values to sequences and projects. Organising a ClojureBridge requires a venue, planning, marketing, food and instructors. Reflections on past events note things like needing more time for projects but also that food and mentors were appreciated. The document concludes by thanking volunteers who have helped organise ClojureBridge events.
YOW WEST 2014: "Adopting Functional Programming Languages"Andy Marks
For some years, there has been a quiet renaissance in a form of software development once relegated to niche fields of academia and computer science: functional programming. Functional languages like Scala and Clojure are attracting significant attention from developers, and aspects of functional programming are creeping into established development languages/platforms like Java and .Net. But what is the catalyst for this renaissance? The increasing scale and sophistication required of custom software development has led people to reprioritise the benefits of functional languages (e.g., immutability, expressiveness) as a way of increasing code quality, boosting development productivity and reducing complexity. This presentation is aimed at those unfamiliar with functional programming and will describe the reasons for it’s recent resurgence and why many IT organisations should be considering trialling functional programming alongside their existing development languages.
YOW West 2015: "Macromonitoring for Microservices"Andy Marks
Monitoring monolithic applications integrating with single databases is a well-understood problem. But who writes monolithic applications these days? Who would even dare in the face of the all-conquering wave of microservices popularity?
Yet effective monitoring of a large fleet of decoupled microservices is a different kettle of fish entirely. And whilst an organisation may have the development savvy needed to build these fine-grained services, this competence does not always provide the necessary operational nous to monitor them in production.
Correlation ids, synthetic transactions and circuit breakers are all concepts those struck with microservice-fever are going to have to master to ensure the benefits of this architecture are not outweighed by the complexity of the associated support infrastructure.
This presentation will use the event stream processing tool Riemann (riemann.io) to demonstrate how typical microservice monitoring patterns can be implemented to provide simple and effective monitoring.
Lambda Jam 2015: Event Processing in ClojureAndy Marks
Riemann (riemann.io) is an event stream processor, usually deployed as a router for events generated by software systems. As Kyle Kingsbury, the author states: “Riemann’s job is to process, analyze and react to the event stream”. In effect, event stream processing is functional transformation writ large; events from various sources (e.g., hardware stats, application metrics, network data etc) are received then grouped, filtered, mapped, averaged, coalesced, forwarded, etc.
Riemann is written in Clojure. Riemann is also configured via Clojure. It’s “parentheses all the way down”.
But does a tool for functional transformation of data require a functional language? To what extent does the implementation language impact the capabilities Riemann exposes to the end user?
This presentation will take a deep dive into both the capabilities of the configuration system and the core Clojure implementation to see why a functional language is such a good choice to implement this type of application.
ThoughtWorks Live 2014: "Building Systems That Pivot"Andy Marks
Your customers are demanding more every day, and pushing you to deliver features faster than ever before. But do your systems let you move with the speed needed for achieving competitive advantage? This talk introduces concepts in system design that are driven by customers, and allow businesses to pivot faster, and with a higher level of confidence.
Co-presented with Zhamak Dehghani
YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"Andy Marks
Our industry has been gripped by microservice fever in recent years as many organisations plan to take to their legacy systems with refactoring scythes to reduce them into loosely coupled, distributed, solutions. In doing so, these organisations will be forced to build substantial operational discipline around managing these services, as the monolithic modules which communicated in-process become fine grained services communicating over the network.
These organisations are likely to be coming to grips with advanced forms of application monitoring, discovery, log management, contract-based testing, automated deployment and environment provisioning, all required to run a microservice architecture with confidence.
But what if there were other ways to reap the benefits of distributed architecture (e.g., independent scaling, versioning and deployment, loosely coupled systems) without needing to construct your own “Netflix in the Small” level of operational awareness? If you’re willing to stick to a single implementation language, then perhaps there is…
The OTP (Open Telecom Platform) sits beneath both the venerable Erlang and hipster Elixir languages and provides the process monitoring and management sophistication needed from a platform built to manage telephony applications like those used by Ericsson, where Erlang originated. Building on OTP with either Elixir and Erlang removes the need for 3rd party tools like Hysterix, Zookeeper and forever wondering whether you should use HTTP PUT or POST to update your resources
Is the trade off worth it? Is it worth sacrificing a polyglot future for a less complex operational environment? Come join Andy and Martin as they demonstrate the power of the OTP platform and proposes a monoglot microservices architecture that will have you decommissioning your DropWizard and Spring Boot services in favour of a braver Erlang/Elixir world.
2017 Melb.JVM: "The Hills are alive with the Sound of your Crappy Code! "Andy Marks
This document discusses a tool called Aeolian that analyzes source code metrics and converts them into musical notation. It summarizes the tool's design choices, where it maps various code metrics like line length, complexity, and duplication to musical elements like notes, tempo, and key. These mappings are used to generate MIDI files representing code quality as music. The document concludes by listing some of the specific mappings from code to music elements used by Aeolian.
2017 YOW West: "Does Smelly Code Also Sound Bad?"Andy Marks
This is a demonstration of a code quality analysis tool that doesn’t visualise the metrics – it “audiolises” them.
The concepts of poor code having smell and colour (usually red) is commonly accepted, but what about appealing to our sense of hearing as well as eyes and nose? Aeolian is an open source tool (written by the author) that generates MIDI music from code quality metrics, which begs the question:
What does poor quality code sound like? Justin Beiber’s latest? A Phillip Glass soundtrack? A Phil Spector wall of sound cacophony? Modern Jazz?
Likewise, what does good quality code sound like? Mozart? White noise?
How do commonly accepted musical concepts (keys, tempo, verse, chorus) apply when illustrating code quality.
The author (an amateur musician and long time producer of smelly code) will talk through the concepts of Aeolian and provide plenty of examples of how you can map code quality to music. This will be a light hearted talk and no knowledge of music theory is needed.
Although DevOps is primarily a mindset and cultural movement, it has concrete practices which are natural manifestations of this culture and mindset. In this sense, DevOps is very similar to Agile. And like Agile, it’s possible to cargo cult DevOps and focus on “how” to implement practices without paying sufficient attention to “why”... There be dragons here.
However, the organisations that truly embrace the DevOps approach have publicised practices that are far less susceptible to cargo culting. This presentation examines several of these practices and asks the audience to consider what organisational attitudes must be in place to support these practices.
This process of consideration should lead the audience to a deeper understanding of what the key values of DevOps are and how to approach moving an organisation in this direction.
Agile Methods for NTU Software EngineersAndy Marks
A 1 hour presentation given to 2nd year NTU students on Feb 29 2012 by Jolly Tan.
Covers a brief overview of Agile, a comparison of XP and Scrum and finishing with a quick introduction to Lean Startup, Lean and Continuous Delivery thinking.
This document provides an overview of Elastic MapReduce (EMR), Amazon's service for running MapReduce jobs on AWS. It discusses what MapReduce is and how it works, provides examples of word count and indexing problems solved with MapReduce, demonstrates running a basic MapReduce job on EMR using Ruby scripts, and discusses some limitations and common use cases of MapReduce. Key aspects covered include the MapReduce programming model, Hadoop architecture, running a job on EMR including provisioning clusters and monitoring progress, and how MapReduce is well-suited for parallelizable batch processing of large datasets.
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...alexjohnson7307
Predictive maintenance is a proactive approach that anticipates equipment failures before they happen. At the forefront of this innovative strategy is Artificial Intelligence (AI), which brings unprecedented precision and efficiency. AI in predictive maintenance is transforming industries by reducing downtime, minimizing costs, and enhancing productivity.
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Tatiana Kojar
Skybuffer AI, built on the robust SAP Business Technology Platform (SAP BTP), is the latest and most advanced version of our AI development, reaffirming our commitment to delivering top-tier AI solutions. Skybuffer AI harnesses all the innovative capabilities of the SAP BTP in the AI domain, from Conversational AI to cutting-edge Generative AI and Retrieval-Augmented Generation (RAG). It also helps SAP customers safeguard their investments into SAP Conversational AI and ensure a seamless, one-click transition to SAP Business AI.
With Skybuffer AI, various AI models can be integrated into a single communication channel such as Microsoft Teams. This integration empowers business users with insights drawn from SAP backend systems, enterprise documents, and the expansive knowledge of Generative AI. And the best part of it is that it is all managed through our intuitive no-code Action Server interface, requiring no extensive coding knowledge and making the advanced AI accessible to more users.
Welcome\nTW background\nDilemma question\nCorporate experience -> Lean Startup + Echelon\n\n---\n\nGood evening everyone - thanks for coming along tonight. My name is Andy Marks and I work for a company called ThoughtWorks. We specialise in custom software development and the core practices around this activity, including Experience Design which is what my colleague Xiaodan will be talking about later this evening.\n\nI'm here tonight to share my opinions on one of the dilemma questions I believe many startups face in their desire to get to market as quickly as possible: what impact does software quality have on ability for a startup to deliver a working product quickly.\n\nNow at this point I should say that I’ve had lots of experience talking about these topics but many of these conversations are usually had with enterprise and corporate IT groups. So I basically had a leap-of-faith assumption that my experience in this area was transferable to startups. Thankfully a prime opportunity to get some validated learning under my belt came around at Echelon on Monday and Tuesday. Everything I heard and everyone I spoke to about the role of software quality in the startup scene reinforced my existing beliefs around this topic. \n
There are four main things I want to cover tonight. The first one is the main topic, but in order to give it justice I cannot avoid introducing and describing Technical Debt and the place software Architecture has within startups. Finally because I’m going to be speaking at a reasonably high level for most of this chat, I wanted to leave you all with some more specific actionable advice. Now, I cannot guarantee that each and everyone of these Hints and Tips will be eye-opening revelations, but I do hope that at least one of them will be useful for each of you. \n
Original proposition\nINTERNAL quality\nDefine internal vs external\nThe answer is...\n\n---\n\nSo let’s get back to the original proposition...\n\nCan you tradeoff internal quality for speed? Note than I’m limiting this discussion to internal software quality. As many of us will be aware software quality has two aspects to it; (a) the external quality - that which is observable by your customers and end users (b) and the internal quality - how the software is designed and architected to deliver the external facing functionality. \n\nTo which the answer is...\n\n\n
“Cannot”\nAbrupt end to convo\n+ more ambiguity\n\n---\n\nAlthough that seems like an awfully absolute and abrupt end to the conversation (and I still have some time left) so let me put a bit more ambiguity around the situation.\n
\nDesign Stamina Hypothesis\nDefine Design\nRead the article\nBlue line\nRed line\nTipping point\nHypothesis - not proven, but axiomatic [STRONG]\nWhen is tipping point?\n\n---\n\nThis is a graph from an article written by another ThoughtWorker called Martin Fowler titled the Design Stamina Hypothesis. I heartily recommend you read this article when you get a chance, but I’ll extract the key elements for now.\n\nThe central premise behind the hypothesis is that there is mathematically a tradeoff point where spending less time on software design (internal quality) does provide increased speed. This is shown by the blue line. However there is a tipping point where consistent attention to internal quality (the red line) will result in a more maintainable codebase which enables faster delivery. This is where the red and blue lines intersect. From that point onwards investment in internal quality increases the speed of the team relative to the no design approach.\n\nNow as Martin himself recognises, this is truly a hypothesis as it has not been proven empirically, but I’ve yet to meet many developers who don’t instinctively understand these curves and their impact.\n\nSo the big question is - at what point in time on the X axis is this tipping point? Again, this is a hypothesis, so I cannot give anymore than a strongly correlated group opinion but I would strongly urge you all to be thinking a matter of weeks rather than months.\n\nWith that in mind, it does open up the options for startups to consciously sacrifice internal quality if they have an impending date in the very near future that they need to meet. Now this is not a decision to take likely and not one to take without understanding the consequences, but I believe the judicious use of this approach can be useful from a business perspective to hit crucial deadlines in upcoming weeks. \n\nThink of it as you hopefully do a big night out. Once in a while you can stay out to the wee small hours and be reasonably productive during that time. But for the vast majority of us, this is not a sustainable practices as the payback for such planning is usually only one sleep away.\n
There are variations around this quote - “go slow to go fast” is another popular one, but the main idea here is that for a software development group to be able to execute quickly, they often need to perform what might seem like counterintuitive tasks which seem at best tangential to the process of delivering functionality.\n\nBut before we look at some examples of what I mean by this statement, let’s revisit our original statement...\n
#1 topic around software quality\nName checked by Brian Wong\n\n---\n\nWhich brings us nicely to the number one idea around managing software quality - Technical Debt. This was a topic that was name checked by Brian Wong at Echelon but explored no further, so I’ll dig in a little for those of you who aren’t familiar with the concept.\n
Ward Cunningham - 20 years ago\nCut corners -> debt\nInterest payments - slower pace\nPay principal - fix the root cause\nFinal option - bankruptcy\n\n---\n\n[Who hasn’t heard of, or only has limited understanding of the idea of technical debt?]\n\nThe metaphor was first coined by a software engineer called Ward Cunningham and is now 20 years old.\n\nThe basic idea is that when you cut corners on internal quality you are taking on a debt of a technical nature because you are leaving your codebase in a state which is harder to maintain.\n\nAs with all debt, there are interest payments you need to make - this is the slowdown that the team experiences when working with the codebase. You can choose to continue to pay only the interest on the debt by continuing to work slower, or you can choose to repay the principal of the debt by going back to the parts of the design you ignored and working on them. \n\nTechnically, there is one further option which is to ignore paying off either the interest or the principal. With technical debt, as with financial debt, the end game of this path is bankruptcy, or the inability to do anything with your assets.\n
More Martin\nOther causes of technical debt\nNot 100% agreement re: Inadvertent\nImpact is the same\n\n---\n\nThis is from another article of Martin Fowler’s and it describes some other reasons for teams taking on technical debt, beyond the conscious and calculating option I proposed earlier, which is represented by the top right hand of the quadrant.\n\nNot everyone agrees that the two Inadvertant quadrants are legitimate forms of technical debt, but IMO it doesn’t matter too much how or why the debt was incurred, the impact on the team is the same, as are the options for addressing it.\n
Impact - speed\nNot just straight line\nImpact - steering\nAbility to pivot\nUnless...\n\n---\n\nAnd speaking of impact, one of the biggest impacts is on the ability of the team to delivery software quickly. But it’s not only straight line speed which is affected. High levels of technical debt also impact steering as well. Code that is difficult to work with is difficult to change, let alone augment, so if you need to pivot your product, that process is also going to be more costly and less effective, unless the pivot results in the entire codebase being thrown away, in which case the technical debt goes with it.\n\nImagine if you’re designing a car and your assured by the product owner that each car will never need to turn, never need to change direction once it’s started on it’s initial course. Think of the savings you could make working under those assumptions! Think of the elements of the car that would be needed if it didn’t have to do anything but go in a straight line! No steering wheel, no indicators, no differential, no power steering, no rack-and-pinion stuff.\n
Control TD - start by managing\nTo manage, start by measuring\n[*] Measure - software tools\n[*] Measure - visual tracking smells\nLooking for CTO? Make sure they understand\n\n---\n\nThe key to controlling technical debt is to manage it, and a very helpful way of managing it is to start measuring it. Either by using the vast army of software quality tools that are available for most popular languages or by allowing the team to visually track where it thinks the smelly parts of the codebase are.\n\nIf you like, you can treat the level of technical debt in your codebase as a hypothesis in the Lean Startup sense and devise tests to assess whether you (as the customer) are happy with the level of design. Keep running those tests as frequently as possible to keep a handle of the level of debt.\n\nIf you’re a Founder looking for a Technical Co-Founder or CTO, you want to make sure potential candidates understand these tradeoffs quite well and also the impact of technical debt on a codebase.\n
Control TD - start by managing\nTo manage, start by measuring\n[*] Measure - software tools\n[*] Measure - visual tracking smells\nLooking for CTO? Make sure they understand\n\n---\n\nThe key to controlling technical debt is to manage it, and a very helpful way of managing it is to start measuring it. Either by using the vast army of software quality tools that are available for most popular languages or by allowing the team to visually track where it thinks the smelly parts of the codebase are.\n\nIf you like, you can treat the level of technical debt in your codebase as a hypothesis in the Lean Startup sense and devise tests to assess whether you (as the customer) are happy with the level of design. Keep running those tests as frequently as possible to keep a handle of the level of debt.\n\nIf you’re a Founder looking for a Technical Co-Founder or CTO, you want to make sure potential candidates understand these tradeoffs quite well and also the impact of technical debt on a codebase.\n
Next: Architecture\nCorporates - over architecting is issue\nStartups?\n\n---\n\nWhich brings us nicely to the idea of Architecture and how that fits into the technical vision of a startup. Again, I spend a lot of time trying to stop large corporates commit technical suicide by way of architecture. However, whereas they are more likely to over-architect than anything else, I suspect that doing not enough thinking about design or architecture is more of a startup issue.\n
Every app has architecture\nSum of key decisions\nDon’t need to use work or role\nImposed architecture through frameworks\nLot of heavy lifting is done - solved problem\nWont suit everyone, but fine for most startups\n\n---\n\nI think this is an important question because it points to the fact that every application, every codebase has some underlying organisation to it, some general way in which the component talk to each other. There are some key technical decisions which need to be made to allow development to begin and continue. The sum of these key decisions is effectively your architecture. It doesn’t matter if you don’t ever use that term to describe your codebase. It doesn’t matter if you don’t have anyone with that role in your startup. Your codebase has an architecture, whether or not you actively do anything about it. For many of you I suspect your prevailing architecture will be the one imposed upon you by your main development framework; Django (Python) or Rails (Ruby) or YII (PHP) and deployment platform; Heroku for example.\n\nAnd one of the great things about the fact that there is such widespread acceptance of these frameworks and platforms means that some of the heavy lifting around defining key elements of an architecture has become a solved problem. True, these commodity architectures aren’t going to suite organisations that require the scale of any of the high profile Web 2.0. companies, but for startups they should work just fine.\n
Still non trivial amount of design needed\nAdvice (shoulders of giants): evolve the design\nWait and learn: customers, market, etc\nLonger you wait - more context is generated\n[Analogy around how much upfront design to do]\nLean Software - has term\nInspired laziness\n\n---\n\nBut regardless of how much of your design has come out-of-the-box as a result of the existing software components you are leveraging, there will still be a non trivial amount of software design or architecture that needs to be done for any startup. My advice (and again, I’m standing on the shoulders of giants to give this advice) is to let your design evolve as you learn more about the problem you’re trying to solve, more about your market, more about your customers, what they want, what they don’t want.\n\nThe Lean Software Engineering movement has a term for this approach to decision making in general - the last responsible moment. Used a philosophy of inspired laziness to delay and put off key decisions as late as possible. Again, this may seem counterintuitive for some, but it should result in a better opportunity to make decisions.\n\n
The future is a very tricky thing to predict, I’m sure you’ll all agree. Another axiom about decision making is that the longer you can comfortably wait before you make a decision, the higher quality that decision will be when you make it because of the extra context you will have generated over that time.\n
Lean Software - has term\nInspired laziness\n\n---\n\nThe Lean Software Engineering movement has a term for this approach to decision making in general - the last responsible moment. Used a philosophy of inspired laziness to delay and put off key decisions as late as possible. Again, this may seem counterintuitive for some, but it should result in a better opportunity to make decisions. \n
Actionable Advice... with caveats\n\n---\n\nAnd I did promise some actionable advice, so here we go. Again, I’ll make the caveat that as soon as you get specific, you risk saying stuff which is either not applicable to some people or something they’re already well aware of, but so be it... \n
Frameworks generally useful\nStay within the sweet spot\nFramework for most stable parts (e.g., web application)\n\nLibraries - less opinionated\nLess constraints\nOther code -> your code: framework\nYour code -> other code: library\n\n---\n\nSo I mentioned before about the prevalence of frameworks like YII, Django and Rails, but an over reliance on these things can be a source of pain in some circumstances. Provided your application does hit the sweet spot of the framework, things are generally rosy, but as soon as your requirements take you to places not ever imagined by the framework’s creators, you can be in a lot of trouble as you try to code around the framework to meet your needs. Generally speaking, you should choose a framework only for the most stable aspects of your system, which is why Rails, etc are so popular because it’s rare that people start out building a web application and find that the MVC model Rails mandates isn’t really what they want.\n\nLibraries, by way of contrast, are generally far less opinionated in terms of there usage and place less constraints on the developers’ than frameworks. If you want to quickly know the difference between the two, it’s quite simple: if your code calls the other code, it’s being used as a library, if the other code calls yours, it’s being used as a framework.\n
No right!\nProduct is framework?\nInternally pivoted away from customers\nSome developers - premature generalisation\nEvolve frameworks - and leave it to someone else\n\n---\n\nStartup technical teams have no right or time to be building frameworks of their own IMO. Unless your product itself is a framework, as soon as you start thinking about building a framework you’ve internally pivoted the direction of the codebase. Unfortunately, some developers love this sort of stuff and are struck by that most cruel of diseases: “premature generalisation”. The only valid way to build frameworks is to evolve them from within working applications, and usually only after you’ve written those applications enough times to see that there is legitimate re-use opportunities involved.\n\nFrameworks - use them if you have to, don’t build them, certainly not when you have a product to focus on.\n
Future world - polyglot persistence\nShort term - NoSQL good for domain model evolution\nRemoves most of cost of managing schema\n\n---\n\nI’m not a believer that NoSQL databases will replace traditional SQL databases in all applications. I see a future where polyglot persistence becomes the norm, where applications use a variety of relational and other models based on “fit for purpose” criteria. In the short term though, evolving a domain model for your application is not an easy activity and it usually takes quite a few cycles to get right. For these reasons, using a NoSQL database can free you a little from the overhead of managing a dynamic schema and will allow a technical team to more a little quicker during these formative days, weeks and months.\n
Setting up a development environment for a new person on your team - one click\nDeploying your application to production - one click\nMigrating your production database into a test environment - one click\nAnonymising that production data - one click\nScaling out/back your fleet of servers to handle changes in traffic conditions - at most one click \nRolling back a deployment - one click\nVerifying your application is behaving correctly and hasn’t suffered any regression issues - at most one click\nCapturing key metrics for your application in production - zero clicks.\nDevOps Singapore!!!\n\n--- \n\nAnd if I can shamelessly self promote for a second, I run a user group in Singapore called DevOps Singapore which focusses almost exclusively on these issues if you’re interested.\n\n
Never go without automated testing\nUnless no manual testing at all\nGood tool maturity in likely languages\nGun to your head: Func > Unit\n\n---\n\nI should potentially have spent a bit more time talking about this earlier but there is one thing I don’t think any startup can do without for any period of time and that is automated testing of the functionality provided. Unless you are planning absolutely no manual testing of any kind during development, then there is really no additional cost to doing some level of automated testing and all the languages you are probably using have some level of maturity around the automated testing tools they provide.\n\nThat said, not all automated testing is created equally and if you have a gun to your head, I would favour testing of the external functionality of the application over the internal functionality using unit tests. In reality, experienced automated testers will do both as a matter of course, but if your team doesn’t have that level of experience, please do at least spend some time automating the main workflows of your application to ensure no regression occurs. \n
---\n\nFor the vast majority of startups, the ready availability of virtualised servers in the cloud have greatly lowered the barrier to entry. There really is no need to use traditional data centres in the early stages of your startup until you have proven your business model and likely traffic needs. The setup costs will quickly consume any lose cash you have lying around.\n\nI doubt anyone here is using colocated data centres at all anyway. \n
Heroku > AWS\nAWS will make sense in the future - not now\n\n---\n\nLikewise, unless your product demands it, Platform as a Service providers like Heroku should be a compelling idea for startups when compared to rolling your own platform via Infrastructure as a Service providers like AWS. There will probably come a time when the Herokus of this world dont provide the configurability that your product may need, but if you’re looking for speed then PaaS will do just fine.\n
Hidden technical debt in unused features\n\n---\n\nAnother niche form of technical debt is the usage of software components where you only need a fraction of that components’ functionality. Don’t think that just because you’re not availing yourself of 50% of the features of framework X that those features are not causing some drag on your team by the mere fact that they could be the source of defects or updates to the framework that you don’t really need.\n
So here we are at the end. I hope there was at least one thing in the Hints & Tips for everyone here. \n\nI’ve covered four main areas around the interplay between speed and the internal quality of codebases. My original assertion that there is very little opportunity to sacrifice the former to optimise the latter still stands. It’s not quite a false dichotomy, but it’s at best a mostly false dichotomy. Make haste slowly by making sure your internal quality is permanently cared for by a team which understands how to do so. \n
My name is...\nI work for...\nI am interested in DevOps\n