Insights Business| SaaS| Technology Identifying and Categorising Technical Debt in Software Systems
Business
|
SaaS
|
Technology
Sep 19, 2025

Identifying and Categorising Technical Debt in Software Systems

AUTHOR

James A. Wondrasek James A. Wondrasek
Comprehensive guide to Identifying and Categorizing Technical Debt in Software Systems

Technical debt represents one of the major challenges facing software organisations today. Like financial debt, it accumulates interest over time, creating compounding costs that can eventually limit your ability to innovate and respond to market demands. For engineering leaders, understanding how to identify, categorise, and strategically manage technical debt isn’t just about maintaining code quality—it’s about preserving your organisation’s competitive advantage.

This comprehensive guide provides you with the frameworks, assessment tools, and strategic approaches needed to transform technical debt from a hidden liability into a manageable business asset. You’ll gain a comprehensive framework for identifying, categorising, and strategically managing technical debt to improve business outcomes and team productivity.

You’ll learn how to identify the four critical categories of technical debt, assess inherited systems effectively, and build the foundation for strategic debt management that drives business value. The resource hub below connects you to detailed guides covering measurement, business case development, prioritisation, implementation, prevention, tools, and legacy modernisation strategies.

What is technical debt and how does it impact business outcomes?

Technical debt represents the future cost of using quick and dirty approaches instead of more pragmatic solutions. It directly impacts delivery velocity, increases bug rates, and raises maintenance costs while reducing your team’s ability to respond to market opportunities and business requirements.

This concept emerges when development teams prioritise speed of delivery over the highest quality code, creating a metaphorical “debt” that accumulates interest through increased maintenance costs and reduced development efficiency. According to McKinsey Digital, technical debt represents 20-40% of an organisation’s entire technology estate value before depreciation, while most companies pay an extra 10-20% to tackle tech debt on top of regular project costs.

The business impact manifests in several critical ways. Development teams experience declining velocity as they spend increasing amounts of time working around fragile or tangled code. Quality degrades systematically, with bug rates rising and customer satisfaction declining. Operational costs increase as systems become harder to maintain and scale. Perhaps significantly, your organisation’s competitive agility suffers as technical debt constrains your ability to respond quickly to market opportunities.

Strategic debt can be acceptable when time-to-market provides competitive advantage, but unmanaged debt becomes a business constraint. About 30% of CIOs report that more than 20% of their technical budget supposedly allocated for new products gets diverted to fixing tech debt issues. The Southwest Airlines shutdown offers a sobering example of what happens when technical debt reaches a breaking point, leading to losses exceeding $1 billion and severe reputation damage.

Understanding this fundamental relationship between technical shortcuts and business outcomes provides the foundation for effective debt management. When you’re ready to establish measurement frameworks, our comprehensive measurement guide connects technical debt to business metrics through quantification methods and KPIs.

What are the main categories of technical debt and how do I identify them?

Technical debt falls into four critical categories: code debt (complex, poorly structured code), architecture debt (suboptimal system design), test debt (inadequate testing coverage), and data debt (poor data quality and governance). Each requires different identification methods and remediation approaches for effective management.

Understanding these categories helps you focus your assessment and remediation efforts where they’ll deliver maximum business impact rather than pursuing blanket improvement initiatives.

Code Debt: Complexity and Quality Issues

Code debt manifests in high cyclomatic complexity, duplicated logic, and violation of coding standards. This category represents the immediately visible technical debt, often appearing as “code smells” that indicate underlying quality problems. Static analysis tools like SonarQube, CodeClimate, and ESLint automatically highlight these issues, including duplications, bugs, and security flaws.

Identification markers include excessive method complexity, duplicated code blocks across multiple files, inconsistent naming conventions, and poor separation of concerns. These issues compound over time, making new feature development increasingly difficult and error-prone.

Architecture Debt: Structural Limitations

Architecture debt appears as scalability limitations, poor separation of concerns, and integration challenges. This category often proves expensive to remediate but provides the highest long-term value when addressed systematically. Architectural technical debt refers to compromises made in the overall architecture or design of the system for short-term gains.

Warning signs include systems that struggle to handle increased load, monolithic architectures that resist modularisation, tight coupling between components that should be independent, and integration patterns that create bottlenecks. These structural issues often require strategic modernisation approaches rather than simple refactoring.

Test Debt: Coverage Gaps and Quality Indicators

Test debt reveals itself through low coverage percentages, brittle tests, and manual testing dependencies. This category creates compounding risk as systems become increasingly difficult to change safely. Testing debt includes insufficient or inadequate testing that can lead to a lack of automated tests, outdated tests, or neglecting testing in favour of rapid development.

Identification involves measuring test coverage percentages, analysing test execution times and failure rates, and evaluating the proportion of manual versus automated testing. Systems with significant test debt often experience longer release cycles and higher defect rates in production.

Data Debt: Governance and Quality Problems

Data debt includes inconsistent schemas, poor data quality, and inadequate governance frameworks. This category often remains hidden until systems need to scale or integrate with new platforms. Data debt encompasses issues like inconsistent data formats across systems, inadequate data validation, poor data lineage documentation, and insufficient backup and recovery procedures.

Warning signs include data inconsistencies across different systems, slow query performance due to poor schema design, difficulty integrating new data sources, and manual data quality processes that don’t scale with business growth.

For systematic identification and assessment, our automated detection tools guide provides comprehensive evaluation criteria and implementation strategies for each category.

How do I assess the technical debt in legacy systems I’ve inherited?

Inherited legacy system assessment requires systematic evaluation using technical debt ratio calculations, velocity impact analysis, and risk assessment matrices. Focus on identifying the highest-impact debt areas that constrain business growth while establishing baseline metrics for improvement tracking.

Effective legacy assessment combines automated analysis with stakeholder insights to create a complete picture of both technical constraints and business impact.

Automated Analysis Foundation

Begin with automated analysis tools to establish quantitative baselines across code quality, test coverage, and architectural metrics. Machine learning models can accurately assess the technical debt level in applications even without prior knowledge, enabling organisations to understand technical debt across their legacy software portfolio comprehensively.

Static code analysis during tech debt audit includes identifying code smells and complexity, dependency mapping to reveal legacy components, and reviewing historical incidents. Tools like vFunction use AI-powered platforms to tackle architectural technical debt in large, complex legacy systems, extracting three key metrics: complexity (effort required to add features), risk (probability of disrupting existing functionality), and overall debt (additional work required).

Stakeholder Impact Assessment

Conduct stakeholder interviews to understand business impact and operational pain points that technical metrics alone cannot capture. This qualitative assessment reveals how technical debt affects daily operations, customer satisfaction, and business capability delivery.

Focus discussions on development velocity trends over time, the proportion of effort spent on maintenance versus new features, system reliability and downtime patterns, and obstacles to implementing new business requirements. During these conversations, ask about the biggest productivity constraints your teams face, which systems require the longest lead times for changes, and where business opportunities have been delayed due to technical limitations.

These insights help prioritise remediation efforts based on actual business impact rather than purely technical considerations. Document both current pain points and missed opportunities to build a compelling case for strategic investment.

Strategic Prioritisation Framework

Prioritise assessment areas based on business criticality and change frequency to focus remediation efforts where they’ll deliver maximum value. Use the 80/20 rule to identify the 20% of code causing 80% of issues and focus on areas with the highest pain points and repetitive failures.

Map technical debt to business goals including security, scalability, and compliance requirements to ensure the urgent and impactful debt is resolved first. This approach ensures that assessment efforts translate directly into strategic business value rather than becoming purely technical exercises.

Continuous monitoring of critical metrics such as code complexity, code churn, and test coverage helps identify potential hotspots where technical debt accumulates, enabling proactive management rather than reactive crisis response.

When you’re ready to develop comprehensive transformation approaches, our legacy system modernisation guide builds on this assessment foundation with detailed strategies for inherited technical debt challenges.

What are the warning signs that technical debt is getting out of control?

Critical warning signs include declining delivery velocity, increasing bug rates, developer productivity concerns, and mounting operational costs. When your team spends more time fixing problems than building features, or when new feature development becomes significantly slower, technical debt requires immediate strategic attention.

These warning signs often appear gradually, making them easy to overlook until they reach critical levels. Regular monitoring helps you catch debt accumulation before it constrains your business capabilities.

Velocity and Productivity Indicators

Team velocity shows how much work the team usually completes per iteration, and lowering velocity may mean that unpaid debt is becoming a bottleneck. Development cycles become slower and bugs increase, indicating a growing web of complexity that makes adding new features more time-consuming and error-prone.

Monitor metrics like sprint completion rates declining over consecutive iterations, increasing story point estimates for similar features, longer code review cycles due to complexity, and rising developer frustration with codebase maintainability. These patterns often indicate that technical debt is constraining team capacity significantly.

Delays in time-to-market occur when teams spend more time working around fragile or tangled code, which slows down delivery. Track whether new feature releases are consistently delayed, bug fixes are taking longer to implement, and integration efforts are becoming increasingly complex.

Quality and Reliability Degradation

User satisfaction rates declining after previously positive feedback with growing bug reports indicates the need for explicit debt elimination activities. Quality issues manifest through increased production incidents, longer bug fix cycles, and customer satisfaction decline.

Security vulnerabilities accumulation can be a warning sign, especially in financial applications where data security is paramount. Poor scalability and difficulty accommodating more users or transactions can indicate underlying architectural problems arising from technical debt.

Monitor excessive unplanned or defect-related work as high volumes of reactive work often point to underlying systemic issues. Track metrics like code coverage percentage declining, number of failed CI/CD builds increasing, and number of new bugs per week or month rising consistently.

Business Impact Signals

Technical debt significantly reduces your ability to adapt to market changes, creating clear competitive disadvantage. Delayed updates and feature releases consistently indicate the team is struggling with a complex and debt-ridden codebase.

When technical debt reaches critical levels, organisations often find themselves unable to respond quickly to market opportunities or customer needs. You might notice increasing costs for maintenance work, difficulty hiring and retaining engineering talent due to frustrating working conditions, and competitive disadvantage due to slower innovation cycles.

When these warning signs become apparent, building a compelling business case becomes essential. Our investment justification guide provides frameworks for communicating urgency and securing resources for debt reduction efforts.

How do I measure technical debt effectively and track improvement progress?

Effective technical debt measurement combines quantitative metrics like technical debt ratio, cyclomatic complexity, and velocity impact with qualitative assessments of developer productivity and system maintainability. Regular measurement enables data-driven decisions and demonstrates improvement progress to stakeholders.

Measurement serves two critical purposes: providing insight for technical decision-making and communicating impact to business stakeholders who control resources.

Core Quantitative Metrics

Technical debt ratio (TDR) provides the primary quantitative measurement for executive reporting and trend analysis. This metric measures the amount spent on fixing software issues compared to developing it, with a minimal TDR of less than five percent being ideal. The TDR serves as a universal language for communicating technical debt impact to business stakeholders.

Code quality metrics assess complexity, cleanliness, and language-specific issues through automated analysis. Cyclomatic complexity measures the number of independent paths through code, while defects per line of code compares the number of defects found during testing to the number of lines of code written. Test coverage evaluates the percentage of code tested through automated testing, providing insight into potential risk areas.

Velocity impact metrics connect technical debt to business delivery performance, showing how debt accumulation affects your team’s ability to deliver value. Track sprint velocity trends over time, cycle time for bug fixes and feature delivery, and lead time metrics to understand the relationship between technical debt and business capability.

Developer Productivity Indicators

Developer productivity indicators reveal the human cost of technical debt burden on your engineering teams. Organisations with structured debt tracking show 47% higher maintenance efficiency according to the 2025 Software Maintenance Index, demonstrating the value of systematic measurement.

Monitor developer time spent on maintenance versus new features, onboarding time for new team members, code review duration and complexity, and developer satisfaction surveys about codebase quality. These human-centred metrics often provide early warning signals about technical debt impact before it becomes visible in business metrics.

Track metrics like code deployment frequency, time spent in debugging versus development, and the proportion of unplanned work to understand how technical debt affects daily development experience.

Business Impact Assessment

Beyond technical metrics, track business-impact indicators such as customer-reported issues and operational costs to demonstrate the real-world consequences of technical debt. Organisations actively managing technical debt achieve at least 50% faster service delivery times to the business, making proper measurement critical for demonstrating these benefits.

Centralised reporting systems bring technical debt data together in one place for analysis, enabling executive dashboards that communicate debt status effectively. Use “t-shirt sizing” approaches instead of precise financial calculations when presenting technical debt estimates to executives, focusing on relative impact and priority rather than exact costs.

Regular reporting monthly or quarterly helps track progress, justify resourcing, and surface new priorities. Integrate technical debt measurement into your DevOps model to make it visible throughout the development lifecycle.

For comprehensive measurement frameworks, including dashboard design and KPI selection, our detailed quantification guide provides methods that drive results.

How do I allocate budget and prioritise technical debt reduction efforts?

Budget allocation should balance immediate business risks with long-term strategic value, typically dedicating 15-25% of development capacity to debt reduction. Use risk assessment matrices to prioritise high-impact, high-business-value debt while maintaining feature delivery momentum.

Effective budget allocation requires balancing the immediate pressure to deliver features with the long-term need to maintain system health and development velocity.

Strategic Capacity Planning

Industry benchmarks suggest allocating 15-25% of development capacity to technical debt reduction, but optimal allocation depends on your debt burden, business growth requirements, and risk tolerance. Healthy organisations typically dedicate 20% of developer time to debt reduction activities, including refactoring, testing improvements, and architectural enhancements.

Organisations with significant debt burdens may require higher percentages temporarily to restore development velocity. The key lies in maintaining sustainable balance—allocating enough capacity to prevent debt accumulation while preserving feature delivery momentum that drives business value.

Implement the “pit stop” strategy: after two feature sprints, run a sprint focused solely on refactoring, testing, or performance improvements. This approach ensures consistent debt attention without sacrificing delivery predictability.

Risk-Based Prioritisation

Use the 80/20 Rule to identify the 20% of code causing 80% of issues and focus on areas with the highest pain points and repetitive failures. This data-driven approach ensures that limited resources address the debt areas that deliver maximum business impact.

Map technical debt to business goals including security, scalability, and compliance to ensure the urgent and impactful debt is resolved first. Prioritise debt that slows development, increases defects, or introduces risk rather than pursuing blanket code refactoring efforts.

Risk assessment matrices help evaluate debt areas based on business impact, technical complexity, and remediation effort. Focus on high-impact, moderate-effort improvements that deliver quick wins while building momentum for larger initiatives.

Resource Allocation Framework

Capacity planning must balance debt reduction with feature delivery to maintain business momentum. Allocate a consistent percentage, with many suggesting 20% of every sprint to resolve prioritised debt to keep the codebase clean without sacrificing roadmap velocity.

Consider both immediate and long-term resource needs when planning debt reduction efforts. Some debt areas require sustained investment over multiple quarters, while others can be addressed through focused sprint cycles.

Technical debt is only a problem when it impacts business value. Strategic prioritisation ensures that debt reduction efforts translate directly into improved business outcomes rather than becoming purely technical exercises.

For detailed strategic prioritisation approaches including roadmap development and capacity planning, our planning strategies guide provides comprehensive frameworks for resource allocation decisions.

What tools and technologies should I use for technical debt management?

Modern technical debt management requires automated analysis tools like SonarQube for code quality assessment, along with CI/CD integration for prevention. Tool selection should align with your technology stack, team capabilities, and measurement requirements while providing actionable insights for remediation planning.

The right tool selection can dramatically reduce the manual effort required for debt assessment while providing continuous monitoring capabilities that prevent accumulation.

Static Analysis Platforms

SonarQube is an open-source platform that provides valuable insights into code smells, bugs, vulnerabilities, and code duplication often indicative of technical debt. AI-powered code analysis tools like Code Climate conduct static analysis to detect code smells, vulnerabilities, and overly complex methods automatically.

These platforms integrate with development workflows to provide continuous monitoring and early warning systems for debt accumulation. Static analysis tools like PMD and Checkstyle can be integrated into CI/CD pipelines to automatically analyse code and catch potential issues as part of continuous testing strategy.

CAST Software takes a comprehensive approach to technical debt assessment, analysing code quality, architecture, and security vulnerabilities across entire application portfolios. According to Gartner, technical debt analysis tools fall into categories based on their capabilities and where they reside within the SDLC.

AI-Powered Modernisation Tools

vFunction is an AI-powered platform that tackles architectural technical debt in large, complex legacy systems and modern, cloud-based microservices. These advanced tools use machine learning to assess technical debt levels across applications without requiring prior knowledge of the codebase.

Companies using AI-powered platforms have seen up to 30% faster feature releases and a 50% reduction in code review time. Automation tools like OpenRewrite offer automated refactoring ecosystems with ready-made recipes for common framework migrations and security fixes.

Amazon Q Code Transformation and similar AI-powered migration tools provide intelligent assistance for large-scale modernisation efforts, reducing the manual effort required for complex system transformations.

Integration and Tracking Systems

Use technical debt backlog tools like Jira or GitHub Issues to track technical debt and integrate it into planning cycles like any other task. This integration ensures that debt reduction becomes part of regular development workflows rather than separate maintenance activities.

Documentation systems like Swimm apply static analysis to create contextual documentation with “Documentation as Code” approaches, helping prevent documentation debt while improving system maintainability.

Integration with development workflows enables prevention-focused approaches and continuous monitoring. Tool evaluation should consider accuracy, integration capabilities, and alignment with organisational measurement needs to ensure sustainable long-term adoption.

For comprehensive automated detection tools evaluation including vendor comparison and implementation strategies, our technology platform guide provides detailed selection criteria and ROI analysis frameworks.

How do I implement systematic technical debt reduction strategies?

Systematic debt reduction requires governance frameworks, dedicated capacity allocation, and integration with regular development cycles. Successful implementation combines strategic refactoring approaches with prevention-focused practices to ensure sustainable long-term improvement.

Implementation success depends on embedding debt reduction into your regular development processes rather than treating it as separate maintenance work.

Governance and Process Framework

Governance processes establish accountability, tracking, and decision-making frameworks for consistent debt management across your organisation. Set procedures and schedules for planned pay-off periods to reduce debt, with doing it piece-by-piece instead of trying to rid the whole debt at once.

Create technical debt backlogs to track and prioritise known issues, integrating technical debt tasks into overall project planning and sprint cycles. This integration ensures that debt reduction becomes a systematic part of development rather than an afterthought addressed only during crises.

Establish clear ownership and accountability for technical debt decisions, including who can approve taking on strategic debt and who’s responsible for tracking and planning debt reduction efforts. Regular governance reviews ensure that debt management remains aligned with business priorities.

Refactoring and Modernisation Approaches

Refactoring involves restructuring existing code without altering its external behaviour, and implementing automated testing is critical when planning to refactor. Use combination of refactoring, CI, and unit testing to make sure code changes didn’t break functionality while achieving intended improvements.

Iterative development approaches that lie in the basis of Agile promote quality and help maintain it at a consistent level. Welcome regular minor refactoring to implement best practice design patterns, encouraging engineers who have “better way” ideas to contribute to continuous improvement.

Regular updates to libraries and frameworks reduce risks related to outdated dependencies, while staying informed about technology trends prevents security and compatibility issues from becoming significant debt burdens.

Automation and Tooling Integration

Implementation strategies must balance dedicated debt reduction efforts with ongoing prevention practices to create sustainable improvement cycles. Implement AI-powered testing and coding agents that can understand entire codebases and do refactoring with best practices in mind.

CI/CD implementation for debt prevention ensures that quality gates catch issues before they become embedded debt. Automated testing strategies provide the safety net necessary for confident refactoring and modernisation efforts.

Integration with existing development workflows makes debt reduction visible and manageable rather than requiring separate processes that compete with feature delivery priorities.

For complete systematic reduction strategies including governance frameworks and execution methodologies, our implementation guide provides step-by-step approaches for sustainable debt management.

How do I prevent future technical debt accumulation in my organisation?

Prevention requires cultural transformation, automated quality gates, and continuous improvement practices. Establish coding standards, comprehensive code review processes, and training programmes while implementing automated testing and CI/CD pipelines that prevent low-quality code from reaching production.

Prevention is significantly more cost-effective than remediation, making investment in prevention practices a strategic priority for sustainable development.

Cultural Transformation

Foster a culture where code quality is valued and prioritised, encouraging developers to take ownership of their code and strive for excellence. Set a mindset of clear code practices across development teams where if it’s possible to do something better without cutting corners, then it must be done.

Cultural change emphasises quality-first development practices and technical excellence as organisational values. This transformation requires leadership commitment, clear communication of expectations, and recognition systems that reward quality alongside delivery speed.

DevOps culture and environment are helpful in avoiding technical debt through continuous development, testing, and integration of operations and development. This cultural foundation makes prevention natural rather than requiring constant management oversight.

Automated Prevention Systems

Implement CI/CD pipelines to automate building, testing, and deployment of code, ensuring continuous testing and integration catches issues before they become embedded debt. Automated quality gates serve as checkpoints that prevent low-quality code from reaching production systems.

Coding standards must include guidelines that promote maintainability, readability, and modularity with regular review and enforcement. These standards should be enforced through automated tools rather than relying solely on manual review processes.

Monitor quality metrics using tools and processes to measure code quality and track technical debt with metrics like code complexity, code coverage, and defect density. This continuous monitoring enables proactive intervention before debt accumulates significantly.

Team Development and Training

Invest in ongoing training for developers to ensure they understand how to avoid and manage technical debt through workshops focused on clean coding practices. Training programmes should cover both technical skills and decision-making frameworks for evaluating trade-offs.

Encourage code reviews as regular peer reviews that catch issues early and help enforce quality standards before problems become embedded. Promote Test-Driven Development (TDD) by writing tests before coding to ensure each functionality is fully tested.

Team training and capability building ensure teams have the skills and knowledge needed for debt-conscious development. This investment in human capability provides the foundation for sustainable prevention practices.

For comprehensive prevention-focused practices including cultural transformation strategies and training programmes, our culture and process excellence guide provides detailed implementation frameworks.

Resource Hub: Technical Debt Management Library

Strategic Planning and Assessment

Measurement and Implementation

Technology and Prevention

Specialized Guidance

FAQ Section

What’s the difference between good technical debt and bad technical debt?

Good technical debt represents conscious decisions to accelerate delivery for strategic advantage, with clear repayment plans and business justification. Bad technical debt accumulates unconsciously through poor practices, lacks documentation, and constrains future development without corresponding business value.

How much should a CTO spend on fixing technical debt?

Industry benchmarks suggest allocating 15-25% of development capacity to technical debt reduction, but optimal allocation depends on your debt burden, business growth requirements, and risk tolerance. Use measurement data and business impact analysis to determine appropriate investment levels.

What percentage of developer time should go toward technical debt reduction?

Healthy organisations typically dedicate 20% of developer time to debt reduction activities, including refactoring, testing improvements, and architectural enhancements. However, organisations with significant debt burdens may require higher percentages temporarily to restore development velocity.

How do I explain technical debt costs to non-technical executives?

Frame technical debt in business terms: increased time-to-market, higher operational costs, reduced competitive agility, and elevated business risk. Use concrete metrics like velocity degradation percentages and cost impact calculations to demonstrate business consequences.

What questions should I ask when assessing technical debt in a new role?

Focus on business impact: How has delivery velocity changed over time? What percentage of development effort goes to bug fixes versus new features? Which systems pose the greatest business risk? What are the team’s biggest productivity constraints?

How do I know when technical debt is hurting my company’s growth?

Warning signs include declining development velocity, increasing time-to-market for new features, rising operational costs, difficulty attracting and retaining engineering talent, and competitive disadvantage due to slower innovation cycles.

What tools should I use to track technical debt in my engineering team?

Start with automated static analysis tools like SonarQube for code quality assessment, integrate with your existing project management systems for tracking, and establish technical debt registers for governance. Tool selection should align with your technology stack and measurement requirements.

How can I prevent my developers from creating more technical debt?

Implement automated quality gates in your CI/CD pipeline, establish clear coding standards and review processes, provide regular training on technical excellence, and create organisational incentives that balance feature delivery with code quality maintenance.

AUTHOR

James A. Wondrasek James A. Wondrasek

SHARE ARTICLE

Share
Copy Link

Related Articles

Need a reliable team to help achieve your software goals?

Drop us a line! We'd love to discuss your project.

Offices
Sydney

SYDNEY

55 Pyrmont Bridge Road
Pyrmont, NSW, 2009
Australia

55 Pyrmont Bridge Road, Pyrmont, NSW, 2009, Australia

+61 2-8123-0997

Jakarta

JAKARTA

Plaza Indonesia, 5th Level Unit
E021AB
Jl. M.H. Thamrin Kav. 28-30
Jakarta 10350
Indonesia

Plaza Indonesia, 5th Level Unit E021AB, Jl. M.H. Thamrin Kav. 28-30, Jakarta 10350, Indonesia

+62 858-6514-9577

Bandung

BANDUNG

Jl. Banda No. 30
Bandung 40115
Indonesia

Jl. Banda No. 30, Bandung 40115, Indonesia

+62 858-6514-9577

Yogyakarta

YOGYAKARTA

Unit A & B
Jl. Prof. Herman Yohanes No.1125, Terban, Gondokusuman, Yogyakarta,
Daerah Istimewa Yogyakarta 55223
Indonesia

Unit A & B Jl. Prof. Herman Yohanes No.1125, Yogyakarta, Daerah Istimewa Yogyakarta 55223, Indonesia

+62 274-4539660