<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Management Articles - Codenteam</title>
	<atom:link href="https://codenteam.com/category/management/feed/" rel="self" type="application/rss+xml" />
	<link>https://codenteam.com/category/management/</link>
	<description>The AI Diagnostic Lab for Tech Teams</description>
	<lastBuildDate>Mon, 14 Apr 2025 12:59:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://codenteam.com/wp-content/uploads/cropped-Icon-Round-Dark-32x32.png</url>
	<title>Management Articles - Codenteam</title>
	<link>https://codenteam.com/category/management/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>The Complete Guide to the Bus Factor (And Why It Could Break Your Dev Team)</title>
		<link>https://codenteam.com/the-bus-factor-why-your-teams-success-shouldnt-depend-on-a-single-person/</link>
					<comments>https://codenteam.com/the-bus-factor-why-your-teams-success-shouldnt-depend-on-a-single-person/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Sat, 22 Mar 2025 00:02:26 +0000</pubDate>
				<category><![CDATA[Code Analysis]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Tech Due Diligence]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=241048</guid>

					<description><![CDATA[<p>Imagine your star developer, the one who built your core system, suddenly leaves. Maybe they won the lottery, moved abroad, or—as the classic analogy goes—got hit by a bus. What happens to your project? If your team grinds to a halt, you’ve just encountered the&#160;bus factor&#160;in action. The bus factor measures the risk of project [&#8230;]</p>
<p>The post <a href="https://codenteam.com/the-bus-factor-why-your-teams-success-shouldnt-depend-on-a-single-person/">The Complete Guide to the Bus Factor (And Why It Could Break Your Dev Team)</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Imagine your star developer, the one who built your core system, suddenly leaves. Maybe they won the lottery, moved abroad, or—as the classic analogy goes—got hit by a bus. What happens to your project? If your team grinds to a halt, you’ve just encountered the&nbsp;<strong>bus factor</strong>&nbsp;in action.</p>



<p>The bus factor measures the risk of project failure based on how many team members are indispensable. A low bus factor (e.g., 1) means your project is one resignation away from chaos. A high bus factor means knowledge is distributed, ensuring continuity. In this post, we’ll explore why the bus factor matters, how to identify it, and actionable strategies to mitigate this risk.</p>



<p></p>



<blockquote class="wp-block-quote did-you-know no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile" style="grid-template-columns:auto 28%"><div class="wp-block-media-text__content">
<p><strong>Platform-Agnostic Concepts</strong></p>



<p>These strategies work with any code ownership analysis method—whether it’s built-in <em>git blame</em> commands, custom dashboards, or third-party tools.</p>
</div><figure class="wp-block-media-text__media"><img fetchpriority="high" decoding="async" width="626" height="564" src="https://codenteam.com/wp-content/uploads/analysis-1.png" alt="" class="wp-image-241391 size-full" srcset="https://codenteam.com/wp-content/uploads/analysis-1.png 626w, https://codenteam.com/wp-content/uploads/analysis-1-480x432.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 626px, 100vw" /></figure></div>
</blockquote>



<p></p>



<h2 class="wp-block-heading">Assessing the Damage: Is Your Codebase in Crisis?</h2>



<p>When a critical team member vanishes—whether due to resignation, burnout, or a literal bus accident—the first question is:&nbsp;<em>How much of our codebase is now a mystery?</em>&nbsp;The answer lies in understanding who wrote and still maintains your code—your ownership data.</p>



<figure class="wp-block-image alignright size-full is-resized"><img loading="lazy" decoding="async" width="1000" height="580" src="https://codenteam.com/wp-content/uploads/wx-employees-ownership.png" alt="" class="wp-image-241570" style="width:483px;height:auto" srcset="https://codenteam.com/wp-content/uploads/wx-employees-ownership.png 1000w, https://codenteam.com/wp-content/uploads/wx-employees-ownership-980x568.png 980w, https://codenteam.com/wp-content/uploads/wx-employees-ownership-480x278.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1000px, 100vw" /></figure>



<h3 class="wp-block-heading">Start with the Big Picture: Company-Wide Risk</h3>



<p><strong>Former-developers ownership charts</strong> give you a clear, immediate view of how much of your codebase was written by people who no longer work at your company. When more than half of your code is authored by ex-developers, you’re not just managing software—you’re managing <strong>ghosts</strong>. These are lines of logic no one maintains, no one defends, and no one fully understands. </p>



<p>Over time, institutional knowledge fades. What starts as “we’ll document it later” turns into lost memory—then silence. New developers hesitate to touch fragile components. Updates take longer. Bugs become harder to fix. Technical debt quietly snowballs.</p>



<p>Knowing your former-developer footprint isn’t just a vanity metric—it’s a risk indicator. It flags where your systems might collapse under the weight of forgotten decisions. And most importantly, it tells you where to act <em>before</em> the system breaks.</p>



<p>You can calculate overall former-developer ownership by generating a <strong>git blame</strong> and aggregate all values of former-developers aliases.</p>



<h3 class="wp-block-heading">Drill Down to Single Points of Failure</h3>



<p>Next, understand&nbsp;<strong>Team Ownership</strong>&nbsp;and&nbsp;<strong>Modules Ownership</strong>&nbsp;to uncover specific risks:</p>



<ul class="wp-block-list">
<li><strong>Team-Level Developers Ownership</strong>: DevOps team’s code, 90% owned by a single former developer, could paralyze releases if left unaddressed.</li>



<li><strong>Outsourcing Blind Spots</strong>: Outsourced teams often operate in silos. Try to analyze the aggregated <strong>Organization Code Ownership</strong>&nbsp;for all outsourcing companies, and flag modules controlled by a single outsourced company, specially firms with high contractor turnover.</li>



<li><strong>Module-Specific Black Holes</strong>: Visualize which modules are owned by one person. A payment gateway maintained solely by a departed engineer? That’s a crisis waiting to erupt.</li>
</ul>



<p></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1560" height="603" src="https://codenteam.com/wp-content/uploads/code-tree-profiles.png" alt="" class="wp-image-241708" srcset="https://codenteam.com/wp-content/uploads/code-tree-profiles.png 1560w, https://codenteam.com/wp-content/uploads/code-tree-profiles-1280x495.png 1280w, https://codenteam.com/wp-content/uploads/code-tree-profiles-980x379.png 980w, https://codenteam.com/wp-content/uploads/code-tree-profiles-480x186.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1560px, 100vw" /></figure>



<p></p>



<h2 class="wp-block-heading">Prioritizing Recovery: From Chaos to Control</h2>



<p>Once you’ve diagnosed the damage, focus on the most critical gaps.</p>



<h3 class="wp-block-heading">Target High-Risk Modules First</h3>



<p><strong>Mark and prioritize modules that are both business-critical and poorly documented.</strong> These areas pose the greatest risk—any disruption, bug, or change in these parts of the codebase can have an outsized impact on your business operations.</p>



<p>When a critical system lacks proper documentation, automated tests, or shared team understanding, it becomes a fragile dependency. These modules should be your top priority for knowledge transfer (KT). Focused efforts like pair programming, reverse engineering, and documentation sprints can help your team regain control, reduce risk, and build resilience in the parts of the system that matter most.</p>



<p>Once you know what you&#8217;re looking for—single-owner modules, ex-dev hotspots—you can use ownership charts or basic <code>git</code> data to map them. A well-written script can go a long way, combined with excel sheets. What you need to do here is to visualize each developer ownership per file, and give each alias a status, either former or current. Then you can aggregate ownership per file or directory, allowing you to get a quick idea around who owns what. </p>



<p><strong>A Dark Module</strong> is any module owned by a single developer. We call it ‘dark’ because only one developer holds the context—the sole torchbearer for that module. You can calculate it by aggregating developers ownership on all modules and mark any module with single developer ownership above 50% as dark. </p>



<p>A <strong>Lone Coder</strong> on the other hand as a symptom happens when a single developer owns big parts of code alone, without a co-owner from their teams. This can be a personal trait where the developer just takes parts and work individually without help from the team. Identify that but getting the total owned code per module compared to other&#8217;s ownership. If you see that the developer main ownership is always happening without co-owners, this is a personal trait and should be tackled. </p>



<p><strong>By combining the values of Dark Modules and Lone Coders, </strong> you can easily highlight components maintained by a single developer and modules with minimal collaborative activity or visibility. These “dark” areas of the codebase often escape regular review and testing cycles, making them prime candidates for undetected bugs, tribal knowledge, and burnout risk.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2500" height="820" src="https://codenteam.com/wp-content/uploads/lone-coders-1.png" alt="Dark Modules and Lone Coders" class="wp-image-241402" srcset="https://codenteam.com/wp-content/uploads/lone-coders-1.png 2500w, https://codenteam.com/wp-content/uploads/lone-coders-1-1280x420.png 1280w, https://codenteam.com/wp-content/uploads/lone-coders-1-980x321.png 980w, https://codenteam.com/wp-content/uploads/lone-coders-1-480x157.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2500px, 100vw" /></figure>



<p><strong>Former-Developers Code Tree</strong> helps you visualize which parts of your codebase are predominantly owned by developers who have already left the company. These modules are red flags for knowledge loss and operational fragility—especially if they’re tied to core functionality.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1560" height="604" src="https://codenteam.com/wp-content/uploads/code-tree-ex-employees.png" alt="" class="wp-image-241566" srcset="https://codenteam.com/wp-content/uploads/code-tree-ex-employees.png 1560w, https://codenteam.com/wp-content/uploads/code-tree-ex-employees-1280x496.png 1280w, https://codenteam.com/wp-content/uploads/code-tree-ex-employees-980x379.png 980w, https://codenteam.com/wp-content/uploads/code-tree-ex-employees-480x186.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1560px, 100vw" /></figure>



<h3 class="wp-block-heading">Launch Structured Knowledge Rescue Missions</h3>



<ul class="wp-block-list">
<li><strong>Emergency Pair Programming</strong>: Find co-owners using&nbsp;<strong>Developer Ownership Comparison</strong>&nbsp;tool, then pair team members with overlapping expertise. If a backend module was owned by an ex-employee, match a current developer who contributed to adjacent systems or a co-owner of the module.</li>



<li><strong>Documentation Sprints</strong>: Once dark modules are identified, convert code comments, PR reviews, Jira tasks, and commit histories into draft runbooks. Teams then refine these into actionable guides.</li>
</ul>



<h3 class="wp-block-heading">Break Outsourcing Dependencies</h3>



<p>If analysis reveals a third-party/outsourcing team owns critical code with no redundancy, take immediate action. Renegotiate contracts to mandate cross-training with in-house developers, or gradually move ownership of key modules</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1560" height="604" src="https://codenteam.com/wp-content/uploads/code-tree-organizations.png" alt="" class="wp-image-241567" srcset="https://codenteam.com/wp-content/uploads/code-tree-organizations.png 1560w, https://codenteam.com/wp-content/uploads/code-tree-organizations-1280x496.png 1280w, https://codenteam.com/wp-content/uploads/code-tree-organizations-980x379.png 980w, https://codenteam.com/wp-content/uploads/code-tree-organizations-480x186.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 1560px, 100vw" /></figure>



<h2 class="wp-block-heading">Tracking Progress: Metrics That Prove You’re Recovering</h2>



<figure class="wp-block-image alignright size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="777" src="https://codenteam.com/wp-content/uploads/2024/04/Code-Dilution-at-every-level-1024x777.png" alt="" class="wp-image-237856" style="width:583px;height:auto" srcset="https://codenteam.com/wp-content/uploads/2024/04/Code-Dilution-at-every-level-1024x777.png 1024w, https://codenteam.com/wp-content/uploads/2024/04/Code-Dilution-at-every-level-980x744.png 980w, https://codenteam.com/wp-content/uploads/2024/04/Code-Dilution-at-every-level-480x364.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></figure>



<p>Recovery isn’t guesswork—it’s measurable. Once you’ve started addressing ownership risks and knowledge gaps, it’s essential to track whether your efforts are actually improving the resilience of your codebase. Without clear metrics, it’s easy to fall into a false sense of security or miss early signs of regression.</p>



<h3 class="wp-block-heading">Watch Ownership Dilute Over Time</h3>



<p>The ultimate success metric is the&nbsp;<strong>Main Owner Dilution</strong>. As KT sessions and pair programming take effect, the primary owner’s contribution percentage should decline. Also, keep close eye on team former-developer ownership, and make sure you see the number going down.</p>



<h3 class="wp-block-heading">Quantify Resilience with a Health Score</h3>



<p>Regularly&nbsp;evaluate:</p>



<ul class="wp-block-list">
<li>Ownership distribution across teams.</li>



<li>Former developer ownership per team.</li>



<li>Documentation coverage.</li>



<li>Cross-team collaboration (e.g., PR reviews, pair programming logs).</li>
</ul>



<figure class="wp-block-image alignright size-full is-resized"><img loading="lazy" decoding="async" width="1000" height="571" src="https://codenteam.com/wp-content/uploads/code-dilution.png" alt="" class="wp-image-241565" style="width:514px;height:auto" srcset="https://codenteam.com/wp-content/uploads/code-dilution.png 1000w, https://codenteam.com/wp-content/uploads/code-dilution-980x560.png 980w, https://codenteam.com/wp-content/uploads/code-dilution-480x274.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1000px, 100vw" /></figure>



<h2 class="wp-block-heading">Building a Crisis-Proof Future</h2>



<p>Surviving a bus factor crisis is just the beginning. Prevent recurrence with proactive safeguards.</p>



<h3 class="wp-block-heading">Automate Ownership Monitoring</h3>



<p>Setup regular checkups or automated checkups to notify you when new code is dominated by a single developer or team. For example, if an engineer starts frequently submitting code to a critical module, managers receive real-time warnings. This way, you can get ahead of the problem going forward. </p>



<h3 class="wp-block-heading">Institutionalize Collaboration</h3>



<ul class="wp-block-list">
<li><strong>Cross-Team Reviews</strong>: Occasionally, require PR approvals from two teams for critical systems. This ensures knowledge spreads organically.</li>



<li><strong>Gamify Knowledge Sharing</strong>: Reward developers who mentor others or document ex-employee-owned code.</li>
</ul>



<figure class="wp-block-image alignright size-full is-resized"><img loading="lazy" decoding="async" width="1010" height="442" src="https://codenteam.com/wp-content/uploads/solved.png" alt="" class="wp-image-241569" style="width:585px;height:auto" srcset="https://codenteam.com/wp-content/uploads/solved.png 1010w, https://codenteam.com/wp-content/uploads/solved-980x429.png 980w, https://codenteam.com/wp-content/uploads/solved-480x210.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1010px, 100vw" /></figure>



<h2 class="wp-block-heading">Turn Crisis into Transformation</h2>



<p>A bus factor disaster isn’t just a setback—it’s an opportunity to build a more agile, collaborative team. Make sure you always have a way to:</p>



<ul class="wp-block-list">
<li>Diagnose risks quickly, and preferable build&nbsp;<strong>interactive ownership dashboards</strong> around it, either through <strong>sheets</strong> and excel charts, or specialized tools.</li>



<li>Accelerate recovery with&nbsp;<strong>KT plans</strong>&nbsp;and&nbsp;<strong>pair programming recommendations</strong>, you can use AI tools to help setting up a foundation. </li>



<li>Prove progress through&nbsp;<strong>real-time dilution metrics</strong>&nbsp;and&nbsp;<strong>Resilience Scores</strong>.</li>
</ul>



<p>Start auditing your code, information and patterns hidden in ownership analysis can be a life-saving later. </p>
<p>The post <a href="https://codenteam.com/the-bus-factor-why-your-teams-success-shouldnt-depend-on-a-single-person/">The Complete Guide to the Bus Factor (And Why It Could Break Your Dev Team)</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/the-bus-factor-why-your-teams-success-shouldnt-depend-on-a-single-person/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Codenteam&#8217;s Multi-Model Risk Analysis and Automation: A Case Study in AI-Driven Code Assessment</title>
		<link>https://codenteam.com/codenteams-multi-model-risk-analysis-and-automation-a-case-study-in-ai-driven-code-assessment/</link>
					<comments>https://codenteam.com/codenteams-multi-model-risk-analysis-and-automation-a-case-study-in-ai-driven-code-assessment/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Fri, 24 Jan 2025 13:54:24 +0000</pubDate>
				<category><![CDATA[Code Analysis]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Tech Due Diligence]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=239365</guid>

					<description><![CDATA[<p>Identifying and mitigating risks in your codebase is critical to advancing your tech infrastructure, that&#8217;s why we created Codenteam In the ever-evolving landscape of software development, identifying and mitigating risks in codebases is more critical than ever. Codenteam, with its powerful suite of tools and AI capabilities, is redefining how risks are detected, analyzed, and [&#8230;]</p>
<p>The post <a href="https://codenteam.com/codenteams-multi-model-risk-analysis-and-automation-a-case-study-in-ai-driven-code-assessment/">Codenteam&#8217;s Multi-Model Risk Analysis and Automation: A Case Study in AI-Driven Code Assessment</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p></p>



<p>Identifying and mitigating risks in your codebase is critical to advancing your tech infrastructure, that&#8217;s why we created Codenteam In the ever-evolving landscape of software development, identifying and mitigating risks in codebases is more critical than ever. Codenteam, with its powerful suite of tools and AI capabilities, is redefining how risks are detected, analyzed, and addressed. By leveraging analytical models, extraction tools, LLM models, and RAG (Retrieval-Augmented Generation) databases, Codenteam offers an unparalleled approach to code analysis and risk management.</p>



<p></p>



<p></p>



<p class="has-text-align-center">This blog post walks through a recent project showcasing how Codenteam integrates various technologies to create a seamless and effective risk analysis pipeline—from code scans to hiring engineers for issue resolution.</p>



<p></p>



<p></p>



<h2 class="wp-block-heading">Starting the Analysis: Comprehensive Scanning</h2>



<p>Our analysis began as usual, with the creation of a new project in Codenteam. This included a multi-faceted code analysis pipeline comprising:</p>



<ul class="wp-block-list">
<li>Code Scan: A deep dive into the codebase to detect potential vulnerabilities and bad coding practices.</li>



<li>License Assessment: Ensuring compliance with open-source license requirements and detecting conflicting or restrictive licenses.</li>



<li>Dependency Analysis: Identifying outdated or vulnerable third-party libraries.</li>



<li>Penetration Testing: Conducting both passive and active pentests to simulate real-world attack scenarios.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2136" height="1002" src="https://codenteam.com/wp-content/uploads/project.png" alt="" class="wp-image-239346" style="object-fit:cover" srcset="https://codenteam.com/wp-content/uploads/project.png 2136w, https://codenteam.com/wp-content/uploads/project-1280x600.png 1280w, https://codenteam.com/wp-content/uploads/project-980x460.png 980w, https://codenteam.com/wp-content/uploads/project-480x225.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2136px, 100vw" /></figure>



<p class="has-text-align-center">These steps provided a solid foundation for identifying and categorizing risks. After all scans were completed, it was time to generate the report.</p>



<p></p>



<h2 class="wp-block-heading">Report Readout: Analyzing the Findings</h2>



<p>The generated report served as the cornerstone of our analysis, bringing together data from various tools and processes. It highlighted a wide array of risks, including:</p>



<ul class="wp-block-list">
<li>Licensing Issues: Conflicts and restrictive clauses stemming from the use of incompatible licenses. These could pose legal and operational challenges if left unaddressed.</li>



<li>Vulnerable Dependencies: The project relied on a specific version of Lodash with multiple vulnerabilities classified as critical, high, and medium severity. These issues could expose the codebase to potential exploits if not updated or replaced.</li>



<li>Bad Coding Practices: The report included multiple bad coding practices with multiple critical, high and medium risks.</li>



<li>Exploitable Vulnerabilities: Active penetration testing revealed an exploitable XSS flaw, which could compromise user data and system integrity.</li>
</ul>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2340" height="1038" src="https://codenteam.com/wp-content/uploads/report-licenses-and-dependencies.png" alt="" class="wp-image-239349" srcset="https://codenteam.com/wp-content/uploads/report-licenses-and-dependencies.png 2340w, https://codenteam.com/wp-content/uploads/report-licenses-and-dependencies-1280x568.png 1280w, https://codenteam.com/wp-content/uploads/report-licenses-and-dependencies-980x435.png 980w, https://codenteam.com/wp-content/uploads/report-licenses-and-dependencies-480x213.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2340px, 100vw" /></figure>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1056" height="1036" src="https://codenteam.com/wp-content/uploads/report-html-template.png" alt="" class="wp-image-239348" srcset="https://codenteam.com/wp-content/uploads/report-html-template.png 1056w, https://codenteam.com/wp-content/uploads/report-html-template-980x961.png 980w, https://codenteam.com/wp-content/uploads/report-html-template-480x471.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1056px, 100vw" /></figure>



<h2 class="wp-block-heading">Report Readout: Analyzing the Findings</h2>



<p>This comprehensive report laid the groundwork for the next phase of analysis. By identifying and categorizing each issue, we could begin prioritizing remediation efforts based on severity and impact.</p>



<h2 class="wp-block-heading">Insights from the Dashboard: Decoding the Risks</h2>



<p>With the report in hand, we turned to Codenteam&#8217;s dashboard for further analysis. Each risk was meticulously examined, starting with coding practices. The dashboard clearly highlighted how document.write was being used in a manner that exposed the application to potential XSS attacks.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2136" height="396" src="https://codenteam.com/wp-content/uploads/risk.png" alt="" class="wp-image-239350" srcset="https://codenteam.com/wp-content/uploads/risk.png 2136w, https://codenteam.com/wp-content/uploads/risk-1280x237.png 1280w, https://codenteam.com/wp-content/uploads/risk-980x182.png 980w, https://codenteam.com/wp-content/uploads/risk-480x89.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2136px, 100vw" /></figure>



<p class="has-text-align-left">For dependencies, the dashboard flagged the specific version of Lodash being used, noting its multiple vulnerabilities across severity levels. This information was invaluable for prioritizing remediation efforts.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2112" height="400" src="https://codenteam.com/wp-content/uploads/dependencies-security-analysis.png" alt="" class="wp-image-239342" srcset="https://codenteam.com/wp-content/uploads/dependencies-security-analysis.png 2112w, https://codenteam.com/wp-content/uploads/dependencies-security-analysis-1280x242.png 1280w, https://codenteam.com/wp-content/uploads/dependencies-security-analysis-980x186.png 980w, https://codenteam.com/wp-content/uploads/dependencies-security-analysis-480x91.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2112px, 100vw" /></figure>



<h2 class="wp-block-heading">Leveraging AI for Risk Analysis</h2>



<p>The real magic began when we engaged Codenteam AI to delve deeper into the findings. The simplicity of asking, &#8220;What are the risks associated with the codebase?&#8221; belied the sophistication of the AI&#8217;s response. The analysis was precise and comprehensive, detailing:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<ul class="wp-block-list">
<li>The implications of unsafe document.write usage.</li>



<li>.How Lodash&#8217;s vulnerabilities could compromise the application&#8217;s integrity.</li>



<li>The specific licensing clauses that posed risks.</li>
</ul>
</div>
</div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2112" height="1042" src="https://codenteam.com/wp-content/uploads/ai-risks-1.png" alt="" class="wp-image-239341" srcset="https://codenteam.com/wp-content/uploads/ai-risks-1.png 2112w, https://codenteam.com/wp-content/uploads/ai-risks-1-1280x632.png 1280w, https://codenteam.com/wp-content/uploads/ai-risks-1-980x484.png 980w, https://codenteam.com/wp-content/uploads/ai-risks-1-480x237.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2112px, 100vw" /></figure>



<p>On the licensing front, the AI excelled in explaining the nuances of the issues. For instance, it pinpointed conflicts between restrictive licenses and the project&#8217;s requirements, suggesting alternative libraries with permissive licenses.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2112" height="592" src="https://codenteam.com/wp-content/uploads/ai-licensis.png" alt="" class="wp-image-239339" srcset="https://codenteam.com/wp-content/uploads/ai-licensis.png 2112w, https://codenteam.com/wp-content/uploads/ai-licensis-1280x359.png 1280w, https://codenteam.com/wp-content/uploads/ai-licensis-980x275.png 980w, https://codenteam.com/wp-content/uploads/ai-licensis-480x135.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2112px, 100vw" /></figure>



<h2 class="wp-block-heading">Connecting the Dots</h2>



<p>Next, we tested whether the RAG database could connect findings from different scans to uncover root causes. Initially, the AI struggled to correlate specific code issues with pentest findings. However, when explicitly asked to identify the causing lines and files, it quickly provided detailed answers, including:</p>



<ul class="wp-block-list">
<li>The exact line where document.write was used unsafely.</li>



<li>The corresponding pentest result showing how the vulnerability could be exploited.</li>
</ul>



<p></p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2138" height="634" src="https://codenteam.com/wp-content/uploads/ai-code-xss.png" alt="" class="wp-image-239338" srcset="https://codenteam.com/wp-content/uploads/ai-code-xss.png 2138w, https://codenteam.com/wp-content/uploads/ai-code-xss-1280x380.png 1280w, https://codenteam.com/wp-content/uploads/ai-code-xss-980x291.png 980w, https://codenteam.com/wp-content/uploads/ai-code-xss-480x142.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2138px, 100vw" /></figure>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2112" height="598" src="https://codenteam.com/wp-content/uploads/ai-lines.png" alt="" class="wp-image-239340" srcset="https://codenteam.com/wp-content/uploads/ai-lines.png 2112w, https://codenteam.com/wp-content/uploads/ai-lines-1280x362.png 1280w, https://codenteam.com/wp-content/uploads/ai-lines-980x277.png 980w, https://codenteam.com/wp-content/uploads/ai-lines-480x136.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2112px, 100vw" /></figure>



<p>This capability to link findings across different analyses is a game-changer. It allows teams to understand not just what the issues are but also how they interact and contribute to larger vulnerabilities. This holistic view is essential for effective remediation.</p>



<h2 class="wp-block-heading">Root Cause Analysis</h2>



<p>Delving deeper into the findings, we discovered that the majority of the problematic code was written by a single former developer who had since left the organization. This developer&#8217;s work introduced several of the identified issues, including the unsafe use of document.write, reliance on outdated dependencies, and poorly implemented security measures.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2112" height="268" src="https://codenteam.com/wp-content/uploads/tree-ex-1.png" alt="" class="wp-image-239352" srcset="https://codenteam.com/wp-content/uploads/tree-ex-1.png 2112w, https://codenteam.com/wp-content/uploads/tree-ex-1-1280x162.png 1280w, https://codenteam.com/wp-content/uploads/tree-ex-1-980x124.png 980w, https://codenteam.com/wp-content/uploads/tree-ex-1-480x61.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2112px, 100vw" /></figure>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2096" height="260" src="https://codenteam.com/wp-content/uploads/tree-profile.png" alt="" class="wp-image-239353" srcset="https://codenteam.com/wp-content/uploads/tree-profile.png 2096w, https://codenteam.com/wp-content/uploads/tree-profile-1280x159.png 1280w, https://codenteam.com/wp-content/uploads/tree-profile-980x122.png 980w, https://codenteam.com/wp-content/uploads/tree-profile-480x60.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2096px, 100vw" /></figure>



<p>Given the current team&#8217;s workload and capacity constraints, addressing these issues internally wasn&#8217;t feasible. As a result, the team decided to prioritize hiring an external developer to tackle the most pressing vulnerabilities and ensure the codebase&#8217;s integrity.</p>



<h2 class="wp-block-heading">Automating the Solution: From Risks to Recruitment</h2>



<p>With the analysis complete, the next step was to address the identified issues. Codenteam&#8217;s HR module streamlined this process by:</p>



<ul class="wp-block-list">
<li>Automatically detecting the technologies used in the codebase from the analysis results.</li>



<li>Crafting a job description tailored to the required fixes and upgrades.</li>
</ul>



<p></p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2112" height="482" src="https://codenteam.com/wp-content/uploads/related-technologies.png" alt="" class="wp-image-239347" srcset="https://codenteam.com/wp-content/uploads/related-technologies.png 2112w, https://codenteam.com/wp-content/uploads/related-technologies-1280x292.png 1280w, https://codenteam.com/wp-content/uploads/related-technologies-980x224.png 980w, https://codenteam.com/wp-content/uploads/related-technologies-480x110.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2112px, 100vw" /></figure>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="2112" height="482" src="https://codenteam.com/wp-content/uploads/job-description.png" alt="" class="wp-image-239344" srcset="https://codenteam.com/wp-content/uploads/job-description.png 2112w, https://codenteam.com/wp-content/uploads/job-description-1280x292.png 1280w, https://codenteam.com/wp-content/uploads/job-description-980x224.png 980w, https://codenteam.com/wp-content/uploads/job-description-480x110.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2112px, 100vw" /></figure>



<h2 class="wp-block-heading">Automating the Solution: From Risks to Recruitment</h2>



<p>The job description included qualifications such as:</p>



<ul class="wp-block-list">
<li>Expertise in Express.js and JavaScript.</li>



<li>Experience with secure coding practices to address the vulnerabilities.</li>



<li>Knowledge of dependency management tools to update and replace depependnecies. </li>
</ul>



<p class="has-text-align-center">Within seconds, the position was ready to publish. This level of automation eliminated the need for manual intervention, saving valuable time.</p>



<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile"><div class="wp-block-media-text__content">
<p></p>



<p></p>



<h2 class="wp-block-heading has-text-align-left">Closing the Loop: Hiring the Right Talent</h2>



<p>After publishing the job description, submissions started rolling in. Codenteam’s intelligent screening system identified candidates with relevant skills, ultimately connecting us with an engineer experienced in Express.js.&nbsp;</p>



<p></p>



<p></p>



<p>Upon hiring, this engineer was tasked with:</p>



<ul class="wp-block-list">
<li>Refactoring the unsafe use of document.write.</li>



<li>Updating Lodash to a secure version or replacing it with an alternative library.</li>



<li>Addressing licensing conflicts by reviewing and replacing problematic dependencies.</li>
</ul>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="626" src="https://codenteam.com/wp-content/uploads/hr-submission-1024x626.png" alt="" class="wp-image-239343 size-full" srcset="https://codenteam.com/wp-content/uploads/hr-submission-980x599.png 980w, https://codenteam.com/wp-content/uploads/hr-submission-480x294.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></figure></div>



<p class="has-text-align-center">The streamlined hiring process exemplifies how Codenteam not only identifies and analyzes risks but also facilitates their resolution through AI-driven automation.</p>



<p></p>



<h2 class="wp-block-heading">The First Incident of Combined LLM and RAG Analysis</h2>



<p>This project marks a significant milestone: the integration of LLM for code analysis, RAG for root cause investigation, and a bot that combines these analyses into actionable insights. This trifecta allowed us to move from risk detection to resolution seamlessly.</p>



<p>Key takeaways include:</p>



<ul class="wp-block-list">
<li>Efficient Risk Detection: Multi-model analysis ensures comprehensive risk identification.</li>



<li>Enhanced Understanding: AI-driven insights provide clarity on complex issues.</li>



<li>Automated Processes: From risk analysis to recruitment, Codenteam reduces manual effort.</li>



<li>Actionable Results: The combination of LLM and RAG connects the dots between findings, enabling holistic remediation.</li>
</ul>



<h2 class="wp-block-heading has-text-align-center">Looking Ahead</h2>



<p>Codenteam’s journey in this project demonstrates not just the power of technology but also the value of rethinking traditional processes. By integrating advanced tools and AI capabilities, we’re not just solving problems—we’re shaping the future of software development.</p>
<p>The post <a href="https://codenteam.com/codenteams-multi-model-risk-analysis-and-automation-a-case-study-in-ai-driven-code-assessment/">Codenteam&#8217;s Multi-Model Risk Analysis and Automation: A Case Study in AI-Driven Code Assessment</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/codenteams-multi-model-risk-analysis-and-automation-a-case-study-in-ai-driven-code-assessment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>8 areas of Typescript: VR, IaC, Extensions, Robots, Games, WebAssembly, runners and cross-platform.</title>
		<link>https://codenteam.com/8-areas-of-typescript-vr-iac-extensions-robots-games-webassembly-runners-and-cross-platform/</link>
					<comments>https://codenteam.com/8-areas-of-typescript-vr-iac-extensions-robots-games-webassembly-runners-and-cross-platform/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Sat, 26 Oct 2024 20:37:05 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Management]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=238676</guid>

					<description><![CDATA[<p>We are actively using typescript for most of our development work nowadays. Mainly for backend and frontend. In this post, we will discuss 8 more areas where we think Typescript might be the best choice. Building VR (Metaverse webapps) Building your first VR WebXR app can be quite painful. Should you write the app in [&#8230;]</p>
<p>The post <a href="https://codenteam.com/8-areas-of-typescript-vr-iac-extensions-robots-games-webassembly-runners-and-cross-platform/">8 areas of Typescript: VR, IaC, Extensions, Robots, Games, WebAssembly, runners and cross-platform.</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>We are actively using typescript for most of our development work nowadays. Mainly for backend and frontend. In this post, we will discuss 8 more areas where we think Typescript might be the best choice.</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:31% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="860" height="860" src="https://codenteam.com/wp-content/uploads/building-vr-metaverse-webapps-1.png" alt="" class="wp-image-241212 size-full" srcset="https://codenteam.com/wp-content/uploads/building-vr-metaverse-webapps-1.png 860w, https://codenteam.com/wp-content/uploads/building-vr-metaverse-webapps-1-480x480.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 860px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Building VR (Metaverse webapps)</h2>



<p>Building your first VR WebXR app can be quite painful. Should you write the app in a <a href="https://gameprogrammingpatterns.com/game-loop.html">game loop sequencing design pattern</a>, or deal with it as a normal Web App and use something like MVVM? Should you use WebGL directly or stick to a framework?</p>
</div></div>



<p>Although for us using <a href="https://aframe.io/">A-Frame</a>/<a href="https://angular.io/">Angular</a> combo is unparalleled so far for WebXR and even hybrid VR apps, we encourage the reader to test a POC first before taking a complete headfirst dive into this stack. It can have limitations and worse performance than native apps. </p>



<p>With that being said, A-Frame/Angular combo provides all the latest and greatest powers of both worlds. As well as very strong typing support to make sure you are always covered while developing. Being a Web system, you can share the setup between your VR to your development environment through a browser proxy and having HMR or hot reload to see everything in real time on the VR. Super practical and efficient!</p>



<p>Even if you aren&#8217;t developing a VR webapp, but a regular webgame game, Typescript has your back</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:31% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="860" height="860" src="https://codenteam.com/wp-content/uploads/building-webgames-1.png" alt="" class="wp-image-241213 size-full" srcset="https://codenteam.com/wp-content/uploads/building-webgames-1.png 860w, https://codenteam.com/wp-content/uploads/building-webgames-1-480x480.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 860px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Building Webgames</h2>



<p>In the recent years, WebGL became stronger than ever. With a number of great frameworks to support you. We recommend taking a look at <a href="https://github.com/mrdoob/three.js/">ThreeJS</a> and <a href="https://github.com/BabylonJS/Babylon.js">BabylonJS</a>.</p>
</div></div>



<p>The beauty of developing in Typescript is how great this would integrate easily with everything else. For example, if you need to create a websockets implementation for multiplayer communication, you can share all your business logic between the game, the backend and any publicly accessible dashboards or real-time players monitor.</p>



<p>You can then take your code and deploy it as a hybrid app on desktop or mobile, although we don&#8217;t recommend doing that for a performance demanding game as current WebGL frameworks are not as efficient as super powerful native game engines (Like Epic/<a href="https://www.unrealengine.com/en-US/">Unreal Engine</a>, <a href="https://unity.com/">Unity</a>, etc)</p>



<p>Still, building non-game apps on desktop using typescript, is a breeze! </p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="860" height="860" src="https://codenteam.com/wp-content/uploads/hybrid-cross-platform-desktop-apps-1.png" alt="" class="wp-image-241214 size-full" srcset="https://codenteam.com/wp-content/uploads/hybrid-cross-platform-desktop-apps-1.png 860w, https://codenteam.com/wp-content/uploads/hybrid-cross-platform-desktop-apps-1-480x480.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 860px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Hybrid cross-platform desktop apps</h2>



<p>With Slack, Skype, VSCode, Loom and many more great apps using Electron. Node/Typescript is becoming our go to language for Desktop apps as well. Write your web app once, deploy it on desktops without hassles. Although this isn&#8217;t quite the case on mobile side. There is a lot to consider before you decide to use Typescript for a mobile app, more on that later.</p>
</div></div>



<p>A cool idea to consider here, is to couple your Electron GUI with your frontend code. And abstract your OS/Process bindings somewhere else. This way, you can easily inject whatever you want by just providing a different implementation in Electron, Backend, mobile, etc.  </p>



<p>On Desktop, our only recommendation is to see if your app would need native performance. In that case, other options might be better. From our experience, most of the apps work great in electron. If specific tasks need native performance, you can spawn a process for those parts directly. That&#8217;s much easier than writing the whole app in native code.</p>



<p>Performance also means GUI layer, if you need a super fast and efficient GUI, maybe consider an alternative. For example a DirectX powered WPF app can be much faster on windows. So choose smartly.</p>



<p>With that being said, Electron is great, super mature, would do all you need and more if the performance difference wouldn&#8217;t be an issue for you. On the other side, packing hybrid cross-platform mobile app might not be as good. </p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="860" height="860" src="https://codenteam.com/wp-content/uploads/hybrid-cross-platform-mobile-apps-1.png" alt="" class="wp-image-241215 size-full" srcset="https://codenteam.com/wp-content/uploads/hybrid-cross-platform-mobile-apps-1.png 860w, https://codenteam.com/wp-content/uploads/hybrid-cross-platform-mobile-apps-1-480x480.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 860px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Hybrid cross-platform mobile apps</h2>



<p>Although using Electron on desktop now is a very viable option, and maybe the preferred option, to most companies now. Hybrid mobile apps, whether it&#8217;s Ionic, React Native or Cordova, is usually a step in your path of finally deciding to create a native mobile app. Or at least that&#8217;s what AirBnb eventually decided after being one of the leading companies that used React Native before <a href="https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a">sunsetting the usage in 2018</a>. Not just Airbnb, but lots of other companies as well.</p>
</div></div>



<p>We encourage the reader to go through the post in detail to understand the current limitations and if those limitation would affect your next project or not. If not, a hybrid typescript approach will give you very quick a head start. </p>



<p>What we always recommend to our customers, is always going hybrid for your MVP, <strong>always</strong>! Specially if you have limited budget, as you can use the same code to build web, desktop and mobile. </p>



<p>And at some point of startup maturity, maybe when the company reaches <a href="https://codenteam.com/understanding-the-triple-chasm-model-funding-due-diligence-at-each-stage-and-what-makes-it-different/">phase II or phase III</a> and there is more budget and a need for a better app, you can proceed with building the native mobile App.</p>



<p>&#8220;But I don&#8217;t want it as an app, I want to have more control in a browser, using Typescript!&#8221; </p>



<p>Well, You can try writing your next extension in Typescript.</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="860" height="860" src="https://codenteam.com/wp-content/uploads/browser-extensions-1.png" alt="" class="wp-image-241211 size-full" srcset="https://codenteam.com/wp-content/uploads/browser-extensions-1.png 860w, https://codenteam.com/wp-content/uploads/browser-extensions-1-480x480.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 860px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Browser Extensions</h2>



<p>Extensions are written in Javascript by default, so using Typescript for that is super straight forward.</p>
</div></div>



<p>You can easily share your Frontend code as-is in your extension script, and then go one more step and abstract your Browser API code to use in background.js, so you can easily replace this abstraction layer on and share it on mobile, desktop app.</p>



<p>A cool trick here, you can try hjson (Or any other json extended-languages) to write your manifest so you can comment parts of the file and even automate building multiple json out of the hjson.</p>



<p>An even higher level, is to use typescript to write your json files as well, your manifest generation logic kept somewhere in your monorepo as, again, typescript code. Much less re-writing, much higher level of control on json generation. </p>



<p>&#8220;But I want to write native code, not extension, using Typescript, to run fast, but in a browser!&#8221; </p>



<p>Well, Webassembly is here to the rescue.</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="860" height="860" src="https://codenteam.com/wp-content/uploads/webassembly-1.png" alt="" class="wp-image-241209 size-full" srcset="https://codenteam.com/wp-content/uploads/webassembly-1.png 860w, https://codenteam.com/wp-content/uploads/webassembly-1-480x480.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 860px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Webassembly</h2>



<p>Webassembly in short is running your code almost natively (more precisely in WebAssembly bytecode) outside the browser engine. This way your code can perform better than Javascript running in the browser&#8217;s JS engine (For example Google&#8217;s V8 engine).</p>
</div></div>



<p>TL;DR: <strong>If you need great webassembly support, don&#8217;t use typescript, or be very careful.&nbsp;</strong></p>



<p>We wanted to start with the statement above before explaining what are the latest Typescript trends on that side so you don&#8217;t take that as a direction. It&#8217;s impossible to write WebAssembly in Javascript, as WebAssembly requires typed code to be compiled statically and ahead-of-time. Javascript doesn&#8217;t have any types in compile-time, so that isn&#8217;t possible. With Typescript, it&#8217;s possible but typescript support on webassembly side is not great yet (Although <a href="https://github.com/AssemblyScript/assemblyscript">AssemblyScript</a> is getting stronger by the day), but it&#8217;s not there yet. So I would recommend sticking to C++ or Go or whatever your preference is for now until Typescript is as powerful on Webassembly side.</p>



<p>The reason for that is WebAssembly nature, which is to run everything as native. To understand this, use C/C++ mentality, where if you missed deleting an initialized variable, it won&#8217;t be garbage-collected. If you casted something into a wrong type, you are doomed. If you tried to reach an illegal memory location, you will get segmentation fault, and so on. This whole compile-time/runtime  mindset is essential to write a successful webassembly app. </p>



<p>All of those concerns aren&#8217;t usually in mind of a typescript mindset, as all of those don&#8217;t usually need a lot of attention in typescript. However for webassembly those are the core of your thinking if you want good webassembly code. </p>



<p>Because of that, you just can&#8217;t take a library you have written in typescript and use it in AssemblyScript, most probably you will need a lot of re-writing. AssemblyScript is a small subset of Typescript. So, it will be worth it to do a POC of your idea first and see if those limitation will affect you or not. Our recommendation is to go with C++ or Go for your next Webassembly project, but we think very soon AssemblyScript might take over on that side as well. </p>



<p>Now that you have your backend, web-app, game, desktop app and mobile app. You want to deploy and distribute, right? Well, use Typescript!</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="860" height="860" src="https://codenteam.com/wp-content/uploads/writing-task-runners-Iac-and-deployment-scripts-1.png" alt="" class="wp-image-241210 size-full" srcset="https://codenteam.com/wp-content/uploads/writing-task-runners-Iac-and-deployment-scripts-1.png 860w, https://codenteam.com/wp-content/uploads/writing-task-runners-Iac-and-deployment-scripts-1-480x480.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 860px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Writing task runners, IaC and Deployment scripts</h2>



<p>Years ago, the usual practice was having your code somewhere, task runners somewhere else in another language because the code language doesn&#8217;t support good enough task runners, then writing IaC maybe in terraform, and finally some CI/CD using some yet another task runner or tool like Travis, Github actions and so on.</p>
</div></div>



<p>Although this is still a very acceptable setup, but you can write all of that in a typescript ecosystem. You can use Gulp/Grunt as Task runners, and they do really good job on that side. The beauty of that is you can integrate the task runner in code as well, for example image optimizations can run on passive/scheduled bases outside the app, or imported and used directly in app seamlessly without a single line of code re-written!</p>



<p>On IaC side, writing terraform or cloudformation can be really optimal for small projects, but once the project gets bigger, going one level lower and writing infrastructure as Typescript code, gives you much much more control on your infrastructure and allows you to again share specific parts (Like configurations) between your app code and IaC. </p>



<p>Finally, on deployment side, you can write platform independent typescript to do your deployment. This way, if you moved from Github to Gitlab you don&#8217;t need to rewrite Github actions in Gitlab CI/CD. Also if you want to move from Travis to Jenkins, you don&#8217;t need to rewrite complicated parts of the deployment script. You only the hooks and the initiators and that&#8217;s it!</p>



<p>But what if you want to deploy to, hmmm,  maybe a robot instead, can I use Typescript? <strong>ABSOLUTELY</strong>!</p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:30% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="860" height="860" src="https://codenteam.com/wp-content/uploads/robotics-1.png" alt="" class="wp-image-241216 size-full" srcset="https://codenteam.com/wp-content/uploads/robotics-1.png 860w, https://codenteam.com/wp-content/uploads/robotics-1-480x480.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 860px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Robotics</h2>



<p>We aren&#8217;t specialized in Robotics or embedded systems, but we wanted to get this one extra level to show the areas Typescript explored that we find super amazing.</p>
</div></div>



<p>With <a href="https://github.com/hybridgroup/cylon">CylonJs</a>, you can write you next Arduino app in Javascript, if you are an expert, you can go one more level and write your code as typescript but be very careful as CylonJs typings support isn&#8217;t great, so splitting your business logic out, and abstracting your native code for connections and stuff, needs to be very sophisticated to be able to finally pack the app and deploy it. </p>



<p>We can&#8217;t recommend nor oppose CylonJs, we see this is a great way to jump into the world of robotics with nothing other than your usual Yarn and Typescript knowledge.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>The future of typescript has never been that bright! Giving you the greatest of all worlds. Let it be apps, games, backend, frontends, VR or even embedded robotics! With the daily advances on ESM, code packers and transpilers for typescript, we think now might be the best time to do your research for a possible migration. In all cases, a quick POC of whatever you need to build is important to make sure you are doing the right decision. </p>



<p>Are you using Typescript now in even more areas? Let us know in the comments below!</p>
<p>The post <a href="https://codenteam.com/8-areas-of-typescript-vr-iac-extensions-robots-games-webassembly-runners-and-cross-platform/">8 areas of Typescript: VR, IaC, Extensions, Robots, Games, WebAssembly, runners and cross-platform.</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/8-areas-of-typescript-vr-iac-extensions-robots-games-webassembly-runners-and-cross-platform/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Why Typescript? Is Typescript Frontend or Backend?</title>
		<link>https://codenteam.com/why-typescript-is-typescript-frontend-or-backend/</link>
					<comments>https://codenteam.com/why-typescript-is-typescript-frontend-or-backend/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Sat, 26 Oct 2024 20:36:53 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Management]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=238674</guid>

					<description><![CDATA[<p>TypeScript is a programming language that was developed and maintained by Microsoft. It is a superset of JavaScript, meaning that any valid JavaScript code is also valid TypeScript code. One of the main goals of TypeScript is to add type checking and other features to JavaScript that are commonly found in other statically-typed languages, such [&#8230;]</p>
<p>The post <a href="https://codenteam.com/why-typescript-is-typescript-frontend-or-backend/">Why Typescript? Is Typescript Frontend or Backend?</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>TypeScript is a programming language that was developed and maintained by Microsoft. It is a superset of JavaScript, meaning that any valid JavaScript code is also valid TypeScript code. One of the main goals of TypeScript is to add type checking and other features to JavaScript that are commonly found in other statically-typed languages, such as C# or Java.</p>



<p>Typescript is a popular programming language that was developed and maintained by Microsoft. It is a strict syntactical superset of JavaScript, meaning that any valid JavaScript code is also valid Typescript code. So, why would you want to use Typescript instead of just sticking with JavaScript? Here are a few reasons:</p>



<p></p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:37% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1025" height="729" src="https://codenteam.com/wp-content/uploads/strong-typing.png" alt="" class="wp-image-241225 size-full" srcset="https://codenteam.com/wp-content/uploads/strong-typing.png 1025w, https://codenteam.com/wp-content/uploads/strong-typing-980x697.png 980w, https://codenteam.com/wp-content/uploads/strong-typing-480x341.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1025px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Strong Typing and Type Safety</h2>



<p>One of TypeScript’s core strengths is its <strong>static typing</strong>. In JavaScript, variable types are inferred during runtime, which means you might only discover certain bugs after deploying the code. TypeScript’s type system, on the other hand, introduces types at compile time, allowing you to define the expected types of variables, function parameters, and return values. For instance, if you define a function parameter as a <code>string</code> but accidentally pass a <code>number</code>, TypeScript will throw an error before you even run the code. This proactive approach to error-checking reduces the likelihood of runtime bugs and enhances overall code quality, making applications more resilient.</p>
</div></div>



<p></p>



<p></p>



<p>One of TypeScript’s core strengths is its <strong>static typing</strong>. In JavaScript, variable types are inferred during runtime, which means you might only discover certain bugs after deploying the code. TypeScript’s type system, on the other hand, introduces types at compile time, allowing you to define the expected types of variables, function parameters, and return values. For instance, if you define a function parameter as a <code>string</code> but accidentally pass a <code>number</code>, TypeScript will throw an error before you even run the code. This proactive approach to error-checking reduces the likelihood of runtime bugs and enhances overall code quality, making applications more resilient.</p>



<p>Furthermore, the benefits of strong typing extend to improving developer productivity. TypeScript’s type definitions serve as a guide for what each variable, function, or object is meant to represent. This self-documenting nature is invaluable in complex projects where different parts of the codebase interact frequently. Developers can understand, at a glance, the data expected in each section, which is particularly useful for onboarding new team members or revisiting code after a long break. By adding this extra layer of clarity, TypeScript makes collaboration easier and reduces the learning curve for understanding someone else’s code.</p>



<p></p>



<h2 class="wp-block-heading">Enhanced Code Editor Support and Developer Experience</h2>



<p>TypeScript also benefits from exceptional <strong>editor support</strong>. Code editors like Visual Studio Code, WebStorm, and Atom offer a rich TypeScript experience with features like intelligent code completion, real-time error highlighting, and advanced refactoring tools. Unlike JavaScript, where the editor may only guess what a variable might represent, TypeScript’s static types provide concrete information, enabling the editor to offer more accurate and useful suggestions. This means that you can spend more time coding and less time correcting minor errors, as the editor catches them in real-time.</p>



<p>In addition to reducing errors, these editor features significantly boost productivity. For instance, autocomplete allows developers to write code faster, while refactoring tools help reorganize code seamlessly, making TypeScript a developer-friendly language. TypeScript’s editor support extends beyond just syntax—it helps developers explore the structure of their code with features like jump-to-definition, parameter hints, and quick info, which provide helpful popups on variable types, function arguments, and more. This rich ecosystem makes TypeScript an appealing choice, particularly for large projects or when working in team environments where seamless code navigation is essential.</p>



<p></p>



<p></p>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:37% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1025" height="766" src="https://codenteam.com/wp-content/uploads/reduced-debugging.png" alt="" class="wp-image-241226 size-full" srcset="https://codenteam.com/wp-content/uploads/reduced-debugging.png 1025w, https://codenteam.com/wp-content/uploads/reduced-debugging-980x732.png 980w, https://codenteam.com/wp-content/uploads/reduced-debugging-480x359.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1025px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">Reduced Debugging Time and More Reliable Code</h2>



<p>A primary advantage of using TypeScript is its ability to <strong>catch bugs at compile-time</strong>, reducing the time spent on debugging. JavaScript’s dynamic typing can make complex bugs challenging to locate, especially when they involve incorrect data types or unexpected function arguments. TypeScript minimizes this risk by catching these issues early in the development process.</p>
</div></div>



<p></p>



<p></p>



<p>  For example, if you attempt to call a function with an incompatible argument type, TypeScript will flag this before the code is executed, preventing errors that might otherwise appear in production.</p>



<p>The reduced need for debugging contributes to TypeScript’s reputation as a language for building more reliable and maintainable code. By highlighting potential issues during development, TypeScript allows developers to address problems before they escalate, resulting in cleaner, more stable applications. This reliability is particularly beneficial for applications that require high uptime and resilience, such as e-commerce websites, financial applications, and other mission-critical systems. In these cases, TypeScript can serve as a safeguard, reducing the likelihood of type-related issues reaching production and impacting users.</p>



<p></p>



<h2 class="wp-block-heading">Improved Code Maintainability and Refactoring</h2>



<p>TypeScript’s type system and strong editor support make it easier to <strong>maintain and refactor code over time</strong>. In traditional JavaScript projects, refactoring—changing the structure or design of the code without altering its behavior—can be risky, as there’s no built-in safety net to prevent type-related errors. With TypeScript, however, developers have the assurance of knowing that the compiler will flag any inconsistencies introduced during refactoring. This confidence enables more frequent and reliable refactoring, which is essential for keeping the codebase clean, organized, and easy to understand.</p>



<p>In team settings, TypeScript’s type safety allows multiple developers to work on different parts of the codebase without introducing compatibility issues. When one part of the code changes, TypeScript can automatically highlight any affected areas elsewhere in the project, ensuring that all components remain compatible. This interdependency awareness reduces the risk of breaking code in other parts of the project, making it easier to scale applications without accumulating technical debt.</p>



<p></p>



<h2 class="wp-block-heading">Built-In Documentation and Better Code Readability</h2>



<p>TypeScript’s type annotations serve as <strong>implicit documentation</strong> for your code, improving code readability and making it easier for others to understand how your application is meant to function. When developers encounter a function, they can instantly see the types of its parameters and return value, which helps them understand its purpose and limitations without needing additional documentation. This is especially valuable for new team members or external contributors who need to familiarize themselves with the codebase. Type annotations provide a clearer understanding of expected inputs and outputs, reducing misunderstandings and making collaboration smoother.</p>



<p>Moreover, with TypeScript, your code is inherently more readable. By defining types explicitly, you make the code easier to follow, even for those who didn’t write it. This increased readability helps teams work more cohesively, as everyone has a shared understanding of the data structures and operations involved. Type annotations reduce the cognitive load on developers, freeing them to focus on the actual functionality rather than deciphering what each variable represents.</p>



<p></p>



<h2 class="wp-block-heading">TypeScript’s Growing Ecosystem and Community Support</h2>



<p>TypeScript’s popularity has led to a <strong>robust ecosystem</strong> of tools, libraries, and frameworks designed to work seamlessly with it. Many major JavaScript libraries now offer type definitions, which means you can use TypeScript with minimal configuration. Libraries like React, Vue, and Express have TypeScript-compatible versions or support, allowing developers to bring TypeScript’s benefits into any part of the stack, from the frontend UI layer to backend APIs. The TypeScript community is also active and supportive, with a wealth of resources, tutorials, and forums that make it easier for newcomers to learn and adopt the language.</p>



<p>Beyond individual libraries, TypeScript also works well in various architectural patterns, like monorepos. For example, TypeScript is frequently used in monorepo setups, where multiple projects—such as libraries and applications—are managed within the same repository. This organization method benefits from TypeScript’s type-checking and modularity, as it allows for shared types and interfaces across projects, reducing redundancy and ensuring consistent data structures throughout the codebase.</p>



<p></p>



<h2 class="wp-block-heading">But is TypeScript a frontend or backend language?</h2>



<p>The short answer is that TypeScript can be used for both frontend and backend development.</p>



<p>On the frontend, TypeScript can be used to build web applications using JavaScript frameworks such as Angular, React, or Vue.js. TypeScript can provide a number of benefits when building frontend applications, including improved code readability and maintainability, as well as catching errors early in the development process.</p>



<p>On the backend, TypeScript can be used to build server-side applications using Node.js. Just like on the frontend, TypeScript can help improve the quality and reliability of the code by adding type checking and other features.</p>



<p>So, to summarize, TypeScript is not exclusively a frontend or backend language, but can be used for both types of development. Its primary purpose is to add additional features and type checking to JavaScript, and it can be used in a variety of contexts, including frontend web development, backend server-side development, and even mobile app development.</p>



<p></p>



<h2 class="wp-block-heading">How to organize code written in Typescript?</h2>



<p>All the benefits we listed above about why to use Typescript, makes a perfect language for big teams, we recommend reading <a href="https://titrias.com/nexus-multi-scrum-teams-mono-repo-trunk-based-release-management-and-misconceptions/">this post about monorepos and release management</a>, as Typescript is a great language to use in a monorepo structure that combines multiple libraries and apps in the same place</p>



<p></p>



<h2 class="wp-block-heading">Can Typescript do more than that? </h2>



<p>We have written an extensive post about using Typescript in multiple fields like <a href="https://titrias.com/typescript-vr-iac-extensions-games-webassembly-cross-platform/">VR, IaC, Extensions, Robots, Games, WebAssembly, runners and cross-platform</a>.</p>



<p></p>



<p></p>
<p>The post <a href="https://codenteam.com/why-typescript-is-typescript-frontend-or-backend/">Why Typescript? Is Typescript Frontend or Backend?</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/why-typescript-is-typescript-frontend-or-backend/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Preparing for a Tech Due Diligence: Step-by-Step Guide for Startups</title>
		<link>https://codenteam.com/preparing-for-a-tech-due-diligence-step-by-step-guide-for-startups/</link>
					<comments>https://codenteam.com/preparing-for-a-tech-due-diligence-step-by-step-guide-for-startups/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Fri, 18 Oct 2024 14:54:26 +0000</pubDate>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Tech Due Diligence]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=238556</guid>

					<description><![CDATA[<p>Tech due diligence can be a pivotal moment for your startup. Investors want a clear view of your technical foundation, product scalability, and security posture. If you&#8217;re preparing for due diligence, this step-by-step guide will help you take concrete actions that align with what investors need to see. Step 1: Get Your Governance and Ownership [&#8230;]</p>
<p>The post <a href="https://codenteam.com/preparing-for-a-tech-due-diligence-step-by-step-guide-for-startups/">Preparing for a Tech Due Diligence: Step-by-Step Guide for Startups</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Tech due diligence can be a pivotal moment for your startup. Investors want a clear view of your technical foundation, product scalability, and security posture. If you&#8217;re preparing for due diligence, this step-by-step guide will help you take concrete actions that align with what investors need to see.</p>



<h2 class="wp-block-heading">Step 1: Get Your Governance and Ownership in Order</h2>



<p>Investors want to see structure and clarity in your organization. Prepare the following:</p>



<ul class="wp-block-list">
<li><strong>Define Roles and Responsibilities:</strong> Make sure your org chart is clear, with each team member&#8217;s role documented. Key roles such as lead developers, product owners, and security officers must be clearly defined
<ul class="wp-block-list">
<li><strong>Action Item: </strong>Ensure these responsibilities align with your business goals and have documentation showing how each role contributes to growth.</li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li><strong>Document Ownership of Tech and IP:</strong> Investors will ask, “Who owns what?” Prepare clear documentation showing ownership of intellectual property (IP), technology products, and code. If external contractors contribute, ensure agreements about IP ownership are explicit.
<ul class="wp-block-list">
<li><strong>Action Item: </strong>Gather legal contracts and proof of IP ownership for every critical asset.</li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li><strong>Outsourcing Arrangements:</strong> If you use contractors or outsourcing, have the contracts and performance records ready to show how these partners integrate into your workflows. Show the value they add.
<ul class="wp-block-list">
<li><strong>Action Item: </strong>Don&#8217;t rely on external resources without a well-documented clear continuity plan in place. This lack of foresight can jeopardize your business in case of disruptions.</li>
</ul>
</li>
</ul>



<blockquote class="wp-block-quote did-you-know no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center" style="grid-template-columns:auto 26%"><div class="wp-block-media-text__content">
<p><strong>Did you know?</strong></p>



<p>Using Codenteam can help you measure outsourcing reliance in your company, on each team level and on each module level. Codenteam can also help automatically assign developers to teams based on their knowledge.</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="626" height="564" src="https://codenteam.com/wp-content/uploads/analysis-1.png" alt="" class="wp-image-241391 size-full" srcset="https://codenteam.com/wp-content/uploads/analysis-1.png 626w, https://codenteam.com/wp-content/uploads/analysis-1-480x432.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 626px, 100vw" /></figure></div>
</blockquote>



<h2 class="wp-block-heading">Step 2: Tighten Your Security</h2>



<p>Security is a key focus for investors. Be ready to demonstrate that your startup is secure, proactive, and compliant.</p>



<ul class="wp-block-list">
<li><strong>Perform a Security Audit:</strong> Conduct a full security audit before due diligence. Test for vulnerabilities using <a href="https://codenteam.com/static-application-security-testing-sast-is-the-team-careful-writing-the-code/">SAST (Static Application Security Testing)</a>, <a href="https://codenteam.com/dynamic-application-security-testing-dast-how-safe-is-your-application-in-action/">DAST (Dynamic Application Security Testing)</a>, and <a href="https://codenteam.com/software-composite-analysis-sca-how-secured-are-the-dependencies/">SCA (Software Composition Analysis)</a> to ensure your code and third-party libraries are secure.
<ul class="wp-block-list">
<li><strong>Action Item: </strong>Create a report detailing your security test results and the steps you’ve taken to address vulnerabilities.</li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li><strong>Update Dependencies:</strong> Keep your software libraries and dependencies up to date. Use tools like <a href="https://codenteam.com/understanding-software-bills-of-materials-sbom-a-crucial-tool-in-software-supply-chain-security/">SBOM</a> to manage and document every third-party component in your product.
<ul class="wp-block-list">
<li>Action Item: Keep an actively updated and maintained list of all used dependencies and libraries, don&#8217;t overlook any single dependency! A sinlge non-compliant dependency or a single vulnerable library can be a <strong>deal breaker</strong>.</li>
</ul>
</li>
</ul>



<ul class="wp-block-list">
<li><strong>Document Security Policies:</strong> Investors want to see that security isn’t just an afterthought. Prepare documentation on your encryption practices, MFA policies, and incident response plans.</li>
</ul>



<blockquote class="wp-block-quote did-you-know is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center" style="grid-template-columns:auto 26%"><div class="wp-block-media-text__content">
<p><strong>Did you know? </strong></p>



<p>Codenteam AI conducts <a href="https://codenteam.com/types-of-security-testing-in-technical-assessment-and-due-diligence-sca-vs-sast-vs-dast/">sophisticated security scans</a> and produces <a href="https://codenteam.com/static-application-security-testing-sast-is-the-team-careful-writing-the-code/">SAST</a>, <a href="https://codenteam.com/dynamic-application-security-testing-dast-how-safe-is-your-application-in-action/">DAST</a>, <a href="https://codenteam.com/software-composite-analysis-sca-how-secured-are-the-dependencies/">SCA</a> and <a href="https://codenteam.com/understanding-software-bills-of-materials-sbom-a-crucial-tool-in-software-supply-chain-security/">SBOM</a> results in a unified report. </p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="385" src="https://codenteam.com/wp-content/uploads/2024/10/report-security-1024x385.png" alt="SAST &amp; DAST &amp; SCA findings report" class="wp-image-238340 size-full" srcset="https://codenteam.com/wp-content/uploads/2024/10/report-security-1024x385.png 1024w, https://codenteam.com/wp-content/uploads/2024/10/report-security-980x368.png 980w, https://codenteam.com/wp-content/uploads/2024/10/report-security-480x180.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></figure></div>
</blockquote>



<h2 class="wp-block-heading">Step 3: Prepare Your Infrastructure for Scalability</h2>



<p>Investors are thinking long-term—they want to know your infrastructure can scale without crashing under pressure.</p>



<ul class="wp-block-list">
<li><strong>Infrastructure Documentation:</strong> Prepare detailed documentation of your tech stack, cloud architecture, and infrastructure. Include diagrams showing how your system scales with increased load.
<ul class="wp-block-list">
<li><strong>Actionable Task:</strong> Conduct load testing and show evidence of how your infrastructure performs under high stress.</li>
</ul>
</li>



<li><strong>Optimize Performance:</strong> If performance tests reveal bottlenecks, fix them now. Investors won’t be impressed with potential scalability issues.</li>
</ul>



<blockquote class="wp-block-quote do no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center" style="grid-template-columns:auto 26%"><div class="wp-block-media-text__content">
<p><strong>TIP</strong></p>



<p>Always use the past-present-future method (Gap Analysis) to show optimizations by presenting old results, current results then future plans, as showing improvements along with future plans to scale is key to get investors trust.</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="280" height="418" src="https://codenteam.com/wp-content/uploads/do-2.png" alt="" class="wp-image-241392 size-full" srcset="https://codenteam.com/wp-content/uploads/do-2.png 280w, https://codenteam.com/wp-content/uploads/do-2-201x300.png 201w" sizes="(max-width: 280px) 100vw, 280px" /></figure></div>
</blockquote>



<ul class="wp-block-list">
<li><strong>Plan for Growth:</strong> Show your plan for future scalability. This could include cloud-based autoscaling features, flexible infrastructure components, or plans for internationalization and localization.
<ul class="wp-block-list">
<li><strong>Actionable Task:</strong> Develop a scalability roadmap with milestones tied to user growth and geographic expansion.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Step 4: Streamline Your Development and Release Process</h2>



<p>A well-documented development process tells investors you’re efficient and that your product can evolve quickly.</p>



<ul class="wp-block-list">
<li><strong>Prepare DevOps Documentation:</strong> Investors will ask, &#8220;How fast can you ship?&#8221; Have documentation on your CI/CD pipelines, automated testing, and release cycles. Show that you can push updates efficiently while maintaining quality.
<ul class="wp-block-list">
<li><strong>Actionable Task:</strong> Ensure every step of your development lifecycle, from code to production, is documented and automated where possible.</li>
</ul>
</li>



<li><strong>Automate Testing:</strong> If your tests are manual, now is the time to automate. Investors want to see efficiency, and automated tests are key.
<ul class="wp-block-list">
<li><strong>Tip:</strong> Present reports from recent tests showing no regression issues and smooth deployments.</li>
</ul>
</li>



<li><strong>Track Metrics:</strong> Have concrete metrics showing your team’s velocity and performance. Investors want to know that your development process is scalable and improving.
<ul class="wp-block-list">
<li><strong>Actionable Task:</strong> Prepare data showing release frequency, time to deploy, and error rates during releases.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Step 5: Get Your Legal and Compliance Documentation Ready</h2>



<p>Legal issues can stall deals. Don’t let compliance gaps hinder your progress.</p>



<ul class="wp-block-list">
<li><strong>Document IP Ownership and Licensing:</strong> Ensure your licensing agreements (especially for open-source software) are up-to-date and compliant with relevant laws.
<ul class="wp-block-list">
<li><strong>Actionable Task:</strong> Perform an IP audit, checking for any potential legal issues, and compile all agreements related to your tech and IP.</li>
</ul>
</li>



<li><strong>Compliance Certifications:</strong> Gather any relevant certifications (e.g., GDPR, HIPAA, PCI-DSS). Investors want proof that you’re legally compliant and understand industry regulations.
<ul class="wp-block-list">
<li><strong>Tip:</strong> If you haven’t achieved these certifications yet, document your progress towards compliance.</li>
</ul>
</li>



<li><strong>Vendor Contracts:</strong> Compile and review contracts with key vendors. Investors need assurance that you have solid agreements in place that won’t introduce unexpected risks.
<ul class="wp-block-list">
<li><strong>Actionable Task:</strong> Prepare summaries of your most critical vendor relationships, including terms of service, cost structures, and how they impact your tech.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Step 6: Create a Risk Management Plan</h2>



<p>Investors love startups with a plan for managing risk. Be proactive and show them you’re in control. <strong>Even if any previous step has a clear red flag, a good risk management plan can make up for it!</strong></p>



<ul class="wp-block-list">
<li><strong>Identify Key Risks:</strong> Assess and document risks around your tech stack, operational reliance on key individuals, and potential scalability challenges.
<ul class="wp-block-list">
<li><strong>Actionable Task:</strong> Create a risk management plan outlining how you will mitigate each risk.</li>
</ul>
</li>



<li><strong>Disaster Recovery Plan:</strong> Prepare a comprehensive disaster recovery plan that accounts for cyberattacks, data breaches, and infrastructure failures.</li>
</ul>



<blockquote class="wp-block-quote do no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center" style="grid-template-columns:auto 26%"><div class="wp-block-media-text__content">
<p><strong>Did you know</strong></p>



<p>Most compliance certifications like ISO 27001 and others require a BCP plan and actual drill (simulation/test) on regular basis. </p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="635" height="550" src="https://codenteam.com/wp-content/uploads/maze-1.png" alt="" class="wp-image-241393 size-full" srcset="https://codenteam.com/wp-content/uploads/maze-1.png 635w, https://codenteam.com/wp-content/uploads/maze-1-480x416.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 635px, 100vw" /></figure></div>
</blockquote>



<ul class="wp-block-list">
<li><strong>Tip:</strong> Make sure this plan is tested regularly, and document the results of your tests.</li>



<li><strong>Monitor Financial Health:</strong> Investors want to see that you’re efficient with your technology spending. Have a report on your tech budget, showing where you’ve invested and where you plan to allocate future resources.
<ul class="wp-block-list">
<li><strong>Actionable Task:</strong> Create a financial breakdown showing the return on investment for key technology projects.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Step 7: Prepare for Questions</h2>



<p>Finally, anticipate the questions investors will ask. Be ready with clear, concise answers supported by documentation.</p>



<ul class="wp-block-list">
<li><strong>Know Your Numbers:</strong> Be prepared to discuss KPIs, from customer acquisition costs to infrastructure efficiency. Investors want clear evidence that you understand your business and the technology behind it.</li>



<li><strong>Technical Leadership:</strong> Expect questions about your leadership. Be ready to explain how your CTO and tech team are prepared for scaling.</li>



<li><strong>Exit Strategy:</strong> Have a well-documented strategy for potential exits, mergers, or acquisitions. Investors want to know that you’ve planned for the future.</li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Preparing for tech due diligence is a detailed, multi-step process. By focusing on governance, security, scalability, development processes, legal compliance, and risk management, you can give investors confidence in your startup’s ability to grow and thrive. Make sure you’re well-prepared with documentation and proactive strategies for each of these areas—your readiness will make all the difference in closing the deal.</p>
<p>The post <a href="https://codenteam.com/preparing-for-a-tech-due-diligence-step-by-step-guide-for-startups/">Preparing for a Tech Due Diligence: Step-by-Step Guide for Startups</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/preparing-for-a-tech-due-diligence-step-by-step-guide-for-startups/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Understanding Startup Maturity Stages: Funding &#038; Due Diligence at Each Stage and What Makes it Different</title>
		<link>https://codenteam.com/understanding-startup-stages-funding-due-diligence-at-each-stage-and-what-makes-it-different/</link>
					<comments>https://codenteam.com/understanding-startup-stages-funding-due-diligence-at-each-stage-and-what-makes-it-different/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Tue, 15 Oct 2024 11:30:25 +0000</pubDate>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[Tech Due Diligence]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=238523</guid>

					<description><![CDATA[<p>The journey from innovation to a scalable, successful product is fraught with challenges, and the there are multiple models that offer a structured way to understand and address these obstacles. All the scientific models differs in understanding the maturity of the product, but most of which use a very similar approach for the stages, some [&#8230;]</p>
<p>The post <a href="https://codenteam.com/understanding-startup-stages-funding-due-diligence-at-each-stage-and-what-makes-it-different/">Understanding Startup Maturity Stages: Funding &amp; Due Diligence at Each Stage and What Makes it Different</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>The journey from innovation to a scalable, successful product is fraught with challenges, and the there are multiple models that offer a structured way to understand and address these obstacles.</p>



<p>All the scientific models differs in understanding the maturity of the product, but most of which use a very similar approach for the stages, some represent it as distinct stages with names, some represent those stages with the gaps between each two. </p>



<p>The <a href="https://www.researchgate.net/publication/337121214_Bridging_the_Gap_in_the_Technology_Commercialization_Process_Using_a_Three-Stage_Technology-Product-Market_Model">Three-Stage Technology–Product–Market (TPM)</a> Model provides a structured framework to guide organizations through this process, emphasizing the alignment between technology development, product formulation, and market needs.</p>



<p>Another widespread mode is the <strong><a href="https://www.worldscientific.com/doi/abs/10.1142/9781786343239_0003">Triple Chasm Model</a></strong>, a framework designed to help organizations navigate the challenges of scaling and commercializing new technologies or innovations. It builds upon Geoffrey Moore&#8217;s &#8220;<a href="https://en.wikipedia.org/wiki/Crossing_the_Chasm">Crossing the Chasm</a>&#8221; concept but introduces three distinct stages (or chasms) that companies need to overcome to successfully scale their innovations, so modeling the stages after the distinct gaps between each stage. </p>



<p>A gap in these models means a blocker that is stopping the entrepreneur from reaching the next phase, or a decline in growth or a mix of the two. The entrepreneur then tries to seek an investment to get the funds needed, logistical support, and expertise to pass the blocker. </p>



<p>Each stage, or gap, in the models—technology to product, product to market, and market to scale—requires specific strategies to cross. Not only do these stages present technical, operational, and market challenges, but they also require different approaches to due diligence, the process by which investors and companies assess risk, viability, and scalability. In this post, we&#8217;ll explore the <a href="https://codenteam.com/technical-due-diligence-guide-for-investing-in-software-teams/">key differences in due diligence</a> at each gap, highlighting what makes it unique at each phase. </p>



<p>At the very first stage, the primary focus is transitioning from an innovative idea to a validated technology. Companies work on proving the feasibility of their technological concept and developing early prototypes. This phase is usually the least demanding on the investing side unless the technology building is the core of the startup. Usually, this phase is called pre-seed or phase 0. Once the technology idea is decided, the real work begins. </p>



<p></p>



<div class="wp-block-media-text is-stacked-on-mobile is-vertically-aligned-center" style="grid-template-columns:43% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="840" height="802" src="https://codenteam.com/wp-content/uploads/technology-to-product.png" alt="" class="wp-image-241490 size-full" srcset="https://codenteam.com/wp-content/uploads/technology-to-product.png 840w, https://codenteam.com/wp-content/uploads/technology-to-product-480x458.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 840px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">From Technology to Product</h2>



<p class="has-sm-font-size">At this stage, the main challenge is transitioning from raw technology to a viable product. For companies, this stage is focused on productizing their innovation, which means turning it into something that can be commercially viable. This is where many innovative ideas falter, often because they remain too technical and fail to address real-world problems or because they haven&#8217;t been thoroughly tested in practical environments.</p>
</div></div>



<p></p>



<p></p>



<p></p>



<h3 class="wp-block-heading">Fund Series: Pre-Seed and Seed</h3>



<p>At this stage, the company is focused on transitioning raw technology into a viable product, and the primary risk is <strong>technical feasibility</strong>. Investors at the Pre-Seed and Seed stages are typically funding companies that have innovative ideas but need capital to develop prototypes and validate the technical aspects of their solution.</p>



<ul class="wp-block-list">
<li><strong>Seed</strong> funding follows once the prototype is more established. The product is not yet market-ready, but Seed investors provide capital to further productize the technology, refine its features, and begin early market testing. At this point, some basic customer discovery and problem-solution fit validation are expected, but the emphasis remains on product development and technical challenges.</li>
</ul>



<h3 class="wp-block-heading">Due Diligence Focus</h3>



<p>In this stage, due diligence is heavily <strong>technology-centric</strong>. The questions investors and teams ask revolve around the technical feasibility of the innovation. <a href="https://codenteam.com/preparing-for-a-tech-due-diligence-step-by-step-guide-for-startups/">The startup&#8217;s readiness for such due diligence</a> relates to these aspects:</p>



<ul class="wp-block-list">
<li><strong>Proof of Concept</strong>: Does the technology work in a controlled environment? Has it been tested sufficiently to ensure functionality?</li>



<li><strong>Intellectual Property (IP)</strong>: Does the company have strong IP protections, including patents or proprietary technology, that would safeguard its competitive advantage?</li>



<li><strong>Prototype Evaluation</strong>: How developed is the prototype? Is it close to becoming a product, or is there a significant development gap?</li>



<li><strong>Team Expertise</strong>: Does the founding or development team have the technical expertise needed to bring the technology to market?</li>
</ul>



<p>In the first gap, due diligence is predominantly focused on technical risk—whether the product can work as intended in real-world scenarios—and the IP or legal landscape that surrounds the innovation. Investors look for solid prototypes, clear technical differentiation, and protection against competition.</p>



<p></p>



<blockquote class="wp-block-quote did-you-know is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>Did you know</strong></p>



<p>Codenteam AI can automatically analyze and detect startups&#8217; risks related to security, licenses and goverence automatically. Covering most first stage due-diligence needs.</p>



<p></p>



<p></p>



<p class="has-text-align-center">Run your first assessment totally for free now!</p>



<p></p>



<p></p>


<style type="text/css">
	.mauticform-button-wrapper .mauticform-button.btn-default {
		color: white !important;
	}
	#mauticform_signup .mauticform-page-wrapper { 
    display: flex !important;
    flex: 1;
    width: 100%;
    justify-content: center;
    align-items: center;
    gap: 10px;
	}
	#mauticform_signup button, #mauticform_signup input {
		border-radius: 10px;
	}
#mauticform_signup_email {
	flex:1;
	}
	.separator.get-started {
  display: flex;
  align-items: center;
  text-align: center;
		color: #AAAAAA;
		    font-weight: bold;
}

.separator.get-started::before,
.separator.get-started::after {
  content: '';
  flex: 1;
  border-bottom: 1px solid #AAAAAA;
}

.separator.get-started:not(:empty)::before {
  margin-right: 1.25em;
}

.separator.get-started:not(:empty)::after {
  margin-left: 1.25em;
}
	@media only screen and (max-width: 600px) {
		.second-row {
			flex-direction: column;
		}
	}

.second-row {
	display: flex;
	color: white;
	gap: 10px;
	margin-top: 10px;
}
	.github {
border-radius: 10px;
    background: #212528;
    display: flex
;
    padding: 9px 20px;
    justify-content: center;
    align-items: center;
    gap: 8px;
    flex: 1 0 0;
    color: white;
	}
.book-demo {
border-radius: 10px;
    display: flex;
    padding: 9px 20px;
    justify-content: center;
    align-items: center;
    gap: 8px;
    flex: 1 0 0;
    color: white;
background: #5A79C8;
}
	
	.mauticform_wrapper {
/* 		margin: 0 auto !important; */
	}
	#mauticform_signup .mauticform-row {
		margin-bottom: 0 !important;
	}
</style>
<script type="text/javascript" src="//success.codenteam.com/form/generate.js?id=4"></script>

<!-- <div class="separator get-started">Or</div>

<div class="second-row">
	<a class="github" href="https://app.codenteam.com/api/auth/github" target="_blank">Sign up with Github <i data-feather="github"></i>
</a>
		<a class="book-demo" href="https://codenteam.com/book-a-demo/" target="_blank">Book a Demo <i data-feather="calendar"></i></a>
</div> -->
<div style="font-size: 12px;font-weight: 500;"><center>By creating an account, you accept our <a href="https://codenteam.com/terms/">Terms of Use </a>and <a href="https://codenteam.com/codenteam-fair-usage-policy/">Fair Usage Policy</a></center></div>






</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="218" src="https://codenteam.com/wp-content/uploads/ai-risks-1024x218.png" alt="" class="wp-image-238602 size-full" srcset="https://codenteam.com/wp-content/uploads/ai-risks-980x209.png 980w, https://codenteam.com/wp-content/uploads/ai-risks-480x102.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></figure></div>
</blockquote>



<p></p>



<p></p>



<div class="wp-block-media-text is-stacked-on-mobile is-vertically-aligned-center" style="grid-template-columns:40% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="813" height="761" src="https://codenteam.com/wp-content/uploads/product-to-market.png" alt="" class="wp-image-241489 size-full" srcset="https://codenteam.com/wp-content/uploads/product-to-market.png 813w, https://codenteam.com/wp-content/uploads/product-to-market-480x449.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 813px, 100vw" /></figure><div class="wp-block-media-text__content">
<h2 class="wp-block-heading">From Product to Market</h2>



<p>Once the technology has been turned into a product, the next stage involves identifying and penetrating the market. This stage focuses on product-market fit, the process of finding the right customer base and demonstrating that the product solves a specific problem. Crossing this stage requires companies to move from niche early adopters to a broader market, often encountering roadblocks in pricing strategies, customer acquisition, and market alignment.</p>
</div></div>



<p></p>



<p></p>



<p></p>



<h3 class="wp-block-heading">Fund Series: Series A</h3>



<p>The product to market phase represents the transition from having a fully developed product to finding the right market fit. Here, the focus shifts from pure technical innovation to <strong>commercial viability</strong>. The company needs to identify its ideal customers, refine its value proposition, and begin demonstrating real traction in the market.</p>



<ul class="wp-block-list">
<li><strong>Series A</strong> funding is designed for companies that have a working product and are starting to enter the market but need additional capital to refine their go-to-market strategy and begin scaling their customer acquisition. Series A investors expect the company to show some early market traction, even if it&#8217;s minimal, and want evidence that there is potential for growth.</li>
</ul>



<h3 class="wp-block-heading">Due Diligence Focus</h3>



<p>In this stage, the focus of due diligence shifts from the technology itself to <strong>market viability</strong>. Key questions include:</p>



<ul class="wp-block-list">
<li><strong>Market Fit</strong>: Has the product been tested with real customers? Are there paying customers who provide validation that this product solves a problem?</li>



<li><strong>Customer Acquisition Strategy</strong>: What is the company&#8217;s go-to-market strategy? How effectively can it acquire and retain customers in a scalable way?</li>



<li><strong>Competitor Analysis</strong>: Are there competitors in this space? If so, what differentiates this product from others, and is the market already saturated?</li>



<li><strong>Revenue and Sales Models</strong>: What are the company&#8217;s current revenue streams? How will they grow, and what is the timeline for profitability?</li>
</ul>



<p>Due diligence in the second stage is more <strong>commercially oriented</strong>. Investors are now less concerned about whether the technology works and more about whether there is a market that wants the product and is willing to pay for it. They assess customer traction, market size, and revenue potential.</p>



<blockquote class="wp-block-quote dont no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>DON&#8217;T</strong></p>



<p>Don&#8217;t overlook the technology related aspects of your product in the 2nd stage due-diligence, most investors specially newly introduced will still need to run full due-diligence on the technology.</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="436" height="400" src="https://codenteam.com/wp-content/uploads/dont-5.png" alt="" class="wp-image-241486 size-full" srcset="https://codenteam.com/wp-content/uploads/dont-5.png 436w, https://codenteam.com/wp-content/uploads/dont-5-300x275.png 300w" sizes="(max-width: 436px) 100vw, 436px" /></figure></div>
</blockquote>



<p></p>



<div class="wp-block-media-text is-stacked-on-mobile is-vertically-aligned-center" style="grid-template-columns:40% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="428" height="381" src="https://codenteam.com/wp-content/uploads/market-to-scale.png" alt="" class="wp-image-241487 size-full" srcset="https://codenteam.com/wp-content/uploads/market-to-scale.png 428w, https://codenteam.com/wp-content/uploads/market-to-scale-300x267.png 300w" sizes="(max-width: 428px) 100vw, 428px" /></figure><div class="wp-block-media-text__content">
<p></p>



<p></p>



<h2 class="wp-block-heading">From Market to Scale</h2>



<p>The final stage in the models is about scaling the business. Once a product has successfully entered the market and found product-market fit, the challenge shifts to expansion. This involves not only scaling sales and distribution but also ensuring operational processes can handle increased demand. Companies need to build robust systems for manufacturing, logistics, and customer support while managing costs and optimizing efficiency.</p>
</div></div>



<p></p>



<p></p>



<p></p>



<h3 class="wp-block-heading">Fund Series: Series B and C</h3>



<p>The final stage occurs when the company has found product-market fit and needs to scale its operations to support larger customer bases and higher demand. The primary challenges at this stage are scaling the business efficiently, managing operations, and optimizing growth.</p>



<ul class="wp-block-list">
<li><strong>Series B</strong> funding is aimed at helping companies scale operations, expand into new markets, and optimize sales and marketing efforts. At this stage, the business model is proven, and the focus is on increasing market reach and building infrastructure to support rapid growth.</li>



<li><strong>Series C</strong> and beyond focus on <strong>hyper-growth</strong>. Companies at this stage are often expanding globally, adding new products, or acquiring competitors to capture additional market share. Series C funding is used to push the company to a dominant position in the market and ensure long-term sustainability at scale.</li>
</ul>



<h3 class="wp-block-heading">Due Diligence Focus</h3>



<p>At this stage, due diligence becomes centered on <strong>scalability</strong> and <strong>operational effectiveness</strong>. Investors and internal teams ask:</p>



<ul class="wp-block-list">
<li><strong>Scalability of Operations</strong>: Does the company have the operational capacity to scale? Can production be ramped up, or will supply chain limitations hinder growth?</li>



<li><strong>Financial Health</strong>: Is the company financially stable, and does it have enough runway to grow? Are there sound financial projections, and do they account for scaling costs?</li>



<li><strong>Sales and Marketing Efficiency</strong>: How cost-effective are the company’s sales and marketing efforts? What is the customer acquisition cost (CAC) relative to lifetime value (LTV)?</li>



<li><strong>Management Team</strong>: Is the management team experienced in handling large-scale operations? Does it have the strategic vision and operational expertise needed for this phase?</li>
</ul>



<p>In this final stage, due diligence is centered on the company&#8217;s ability to scale rapidly and efficiently without sacrificing quality or customer satisfaction. Investors look for evidence that the company has the infrastructure, systems, and financial health to support large-scale growth.</p>



<h3 class="wp-block-heading">What Makes Due Diligence Different in Each Stage?</h3>



<figure class="wp-block-table"><table class="has-fixed-layout mtr-table mtr-thead-th"><thead><tr><th data-mtr-content="Stage" class="mtr-th-tag"><div class="mtr-cell-content">Stage</div></th><th data-mtr-content="Fund Series" class="mtr-th-tag"><div class="mtr-cell-content">Fund Series</div></th><th data-mtr-content="Due Diligence Areas" class="mtr-th-tag"><div class="mtr-cell-content">Due Diligence Areas</div></th></tr></thead><tbody><tr><td data-mtr-content="Stage" class="mtr-td-tag"><div class="mtr-cell-content">Idea to Technology</div></td><td data-mtr-content="Fund Series" class="mtr-td-tag"><div class="mtr-cell-content">Pre-Seed</div></td><td data-mtr-content="Due Diligence Areas" class="mtr-td-tag"><div class="mtr-cell-content">Idea validation, personnel assessment.</div></td></tr><tr><td data-mtr-content="Stage" class="mtr-td-tag"><div class="mtr-cell-content">Technology to Product</div></td><td data-mtr-content="Fund Series" class="mtr-td-tag"><div class="mtr-cell-content">Seed</div></td><td data-mtr-content="Due Diligence Areas" class="mtr-td-tag"><div class="mtr-cell-content">Technology validation, IP protection, team expertise</div></td></tr><tr><td data-mtr-content="Stage" class="mtr-td-tag"><div class="mtr-cell-content">Product to Market</div></td><td data-mtr-content="Fund Series" class="mtr-td-tag"><div class="mtr-cell-content">Series A</div></td><td data-mtr-content="Due Diligence Areas" class="mtr-td-tag"><div class="mtr-cell-content">Market validation, customer acquisition, competitive analysis</div></td></tr><tr><td data-mtr-content="Stage" class="mtr-td-tag"><div class="mtr-cell-content">Market to Scale</div></td><td data-mtr-content="Fund Series" class="mtr-td-tag"><div class="mtr-cell-content">Series B, Series C</div></td><td data-mtr-content="Due Diligence Areas" class="mtr-td-tag"><div class="mtr-cell-content">Scalability, financial health, operational efficiency</div></td></tr></tbody></table></figure>



<blockquote class="wp-block-quote do no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>DO</strong></p>



<p>Prepare your team with the right technical and commercial expertise at each stage. Building a strong, flexible, balanced team is key to overcoming each stage’s unique challenges.</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="280" height="418" src="https://codenteam.com/wp-content/uploads/do-5.png" alt="" class="wp-image-241485 size-full" srcset="https://codenteam.com/wp-content/uploads/do-5.png 280w, https://codenteam.com/wp-content/uploads/do-5-201x300.png 201w" sizes="(max-width: 280px) 100vw, 280px" /></figure></div>
</blockquote>



<p>The key difference in due diligence across these stages lies in the <strong>focus of risk assessment</strong>. In the first stage, the focus is on <strong>technical risk</strong>—whether the technology works and is protectable. In the second stage, the emphasis shifts to <strong>market risk</strong>—whether there is a demand for the product and whether the company can capture market share. By the time the company reaches the third stage, <strong>scaling risk</strong> is the primary concern—whether the company can grow sustainably and handle increased demand while maintaining operational effectiveness.</p>



<p>Understanding these differences in due diligence allows companies to better prepare for the various challenges they will face as they move from innovation to market success. It also helps investors and stakeholders assess risks more accurately at each stage, ensuring the right support and investment are in place to cross each stage effectively.</p>
<p>The post <a href="https://codenteam.com/understanding-startup-stages-funding-due-diligence-at-each-stage-and-what-makes-it-different/">Understanding Startup Maturity Stages: Funding &amp; Due Diligence at Each Stage and What Makes it Different</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/understanding-startup-stages-funding-due-diligence-at-each-stage-and-what-makes-it-different/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Work factor and money-based KPIs in technical teams: Putting a price tag on a line of code?</title>
		<link>https://codenteam.com/work-factor-and-money-based-kpis-in-technical-teams-putting-a-price-tag-on-a-line-of-code/</link>
					<comments>https://codenteam.com/work-factor-and-money-based-kpis-in-technical-teams-putting-a-price-tag-on-a-line-of-code/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Mon, 14 Oct 2024 15:45:00 +0000</pubDate>
				<category><![CDATA[Management]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=238274</guid>

					<description><![CDATA[<p>Credit: The title of this post is directly inspired by Oxford philosopher Michael Sandel’s lecture, Putting a Price Tag on Life. While the content here doesn’t draw from the lecture itself, there is an intriguing parallel: just as the value of life defies simple numeric metrics, the worth of a line of code resists straightforward [&#8230;]</p>
<p>The post <a href="https://codenteam.com/work-factor-and-money-based-kpis-in-technical-teams-putting-a-price-tag-on-a-line-of-code/">Work factor and money-based KPIs in technical teams: Putting a price tag on a line of code?</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Credit:</strong> The title of this post is directly inspired by Oxford philosopher Michael Sandel’s lecture, <a href="https://www.youtube.com/watch?v=0O2Rq4HJBxw">Putting a Price Tag on Life</a><em>.</em> While the content here doesn’t draw from the lecture itself, there is an intriguing parallel: just as the value of life defies simple numeric metrics, the worth of a line of code resists straightforward quantification. Can we truly assign a financial value to something as dynamic as code?</p>
</blockquote>



<p>The drive to quantify everything is powerful. We crave metrics to help make sense of complexity, from tracking productivity to evaluating team performance. But as we strive to measure every keystroke and commit, one question arises: Can the essence of a technical team be over-simplified into something as simple as numeric metrics? Can we, in essence, put a price tag on a line of code?</p>



<p>At first glance, it seems plausible. Code is, after all, the tangible output of development work. Yet, this view is dangerously reductive. Code is not created in isolation. It is the product of thought, collaboration, and creativity, woven together to solve problems. If we focus too heavily on metrics like lines of code, we risk missing the bigger picture.</p>



<h2 class="wp-block-heading">The Fallacy of Counting Lines</h2>



<p>It’s easy to assume that more lines of code mean more progress. We’ve all seen KPIs that suggest productivity can be tied to the number of lines written in a given day or sprint. But here&#8217;s the philosophical dilemma: not all code is created equal. What is the value of 100 lines of verbose, convoluted code versus 10 lines of elegant, efficient code that achieve the same result?</p>



<p>In reality, fewer lines often signal deeper skill. Good developers strive for simplicity and clarity, reducing complexity rather than adding to it. And the less code there is, the less there is to maintain, debug, or refactor later. In that sense, the cost of excessive lines can be high—both in terms of future technical debt and the human energy required to manage it. So can we equate more lines of code with greater value? Certainly not. It’s not about the quantity; it’s about the quality of the thinking behind it.</p>



<blockquote class="wp-block-quote dont no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>DON&#8217;T</strong></p>



<p>Don&#8217;t Rely Solely on Money-Based KPIs! Avoid reducing the value of a technical team or developer to simple numeric metrics like lines of code.</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="436" height="400" src="https://codenteam.com/wp-content/uploads/dont-5.png" alt="" class="wp-image-241486 size-full" srcset="https://codenteam.com/wp-content/uploads/dont-5.png 436w, https://codenteam.com/wp-content/uploads/dont-5-300x275.png 300w" sizes="(max-width: 436px) 100vw, 436px" /></figure></div>
</blockquote>



<p></p>



<p></p>



<h2 class="wp-block-heading">The True Value of a Developer</h2>



<p>But if code itself is a flawed metric, where does that leave the people writing it? How do we gauge the importance of a developer within a team? Again, reducing this to something measurable, like the number of lines a person writes, does them a disservice. A team member’s true value cannot be fully captured in code alone.</p>



<p>Consider the senior engineer who writes less but whose decisions shape the direction of a project. Their experience and foresight help the team avoid costly mistakes, guiding architecture, and resolving bottlenecks. Their contributions, while less visible in the form of code, are often the most critical to the success of a project. It’s a reminder that the importance of a team member is not tied to the volume of their output but to the impact of their thinking.</p>



<p></p>



<h2 class="wp-block-heading">The Danger of Money-Based KPIs</h2>



<p>There’s a broader issue at play here: the pressure to link technical work to money-based KPIs. Research shows that focusing too narrowly on quantifiable metrics like lines of code or the number of commits can lead to detrimental outcomes. Developers, incentivized to meet these targets, may prioritize speed over quality, churning out code that meets short-term goals but creates long-term problems. This approach fosters a culture of quantity over quality and can lead to burnout and disengagement.</p>



<p>What research suggests is that money-based KPIs miss the mark in technical environments. Software development is inherently creative and collaborative, and its value doesn’t always fit into neat numerical categories. Teams thrive when measured by their ability to innovate, adapt, and solve complex problems—qualities that resist simplistic quantification.</p>



<h2 class="wp-block-heading">Vibe Coding: Taking the quantity to a whole new level. </h2>



<p>Enter <em>vibe coding</em>—the modern phenomenon of using AI to generate large chunks of code with minimal manual input. It’s fast, fluid, and often impressively functional. With just a well-phrased prompt, entire modules, services, or UI components appear in seconds. But here’s the paradox: while vibe coding can accelerate output, it also pushes the line-count metric to absurd new heights. <strong>A developer can now produce thousands of lines in a day—does that make them ten times more valuable?</strong> Not necessarily. Vibe coding shifts the developer’s role from “coder” to “curator,” where judgment, review, and editing become the real skills.</p>



<p>There’s another layer of risk: <a href="https://codenteam.com/ai-generated-code-security-report-a-or-epic-fail-epic-fail/">Most AI-generated code today is inherently vulnerable</a>. Whether it’s insecure defaults, outdated practices, or code hallucinated without context, what looks like a shortcut can become a security liability. Without proper oversight, vibe coding can silently inject bugs, security flaws, or technical debt at scale. It’s a stark reminder that high volume doesn’t equal high quality—and that the true value still lies in the developer’s ability to audit, understand, and improve what the AI produces.</p>



<h2 class="wp-block-heading">The Bigger Picture: People Over Metrics</h2>



<p>At the heart of this philosophical quandary is a truth that defies metrics: the value of a technical team lies in its human elements. Developers are more than just coders; they are problem-solvers, innovators, and collaborators. Their worth is not determined by how much code they write but by how effectively they navigate challenges, how well they work together, and how thoughtfully they approach their craft.</p>



<blockquote class="wp-block-quote do no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>DO</strong></p>



<p>Recognize Non-Code Contributions. Acknowledge the value that developers bring beyond code, such as architecture decisions, problem-solving, and guiding project direction.</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="280" height="418" src="https://codenteam.com/wp-content/uploads/do-2.png" alt="" class="wp-image-241392 size-full" srcset="https://codenteam.com/wp-content/uploads/do-2.png 280w, https://codenteam.com/wp-content/uploads/do-2-201x300.png 201w" sizes="(max-width: 280px) 100vw, 280px" /></figure></div>
</blockquote>



<p></p>



<p></p>



<h2 class="wp-block-heading">The Paradox of Quantifying Code: Why Codenteam Measures What It Stands Against</h2>



<p>This is a question we encounter frequently: why does Codenteam, which fundamentally opposes the idea of reducing the worth of a line of code to a numerical figure, still employ ownership and work factor metrics such as &#8220;Lines of Code per Dollar&#8221; on multiple levels—whether at the company, team, outsourcing, or individual developer level? The answer lies in the <strong>context</strong> and the <strong>balance</strong>.</p>



<p>The context here depends on who and why they are looking at code ownership, and because codenteam is used by tech managers, due-diligence companies, HR managers and so many different users, context can dramatically differ, for example, code governance is a core part of any technical due diligence. Any investor would need to know who owns how much of the code, and analyze the risk of such ownership. Also, any investor would want to know the outsourcing scene and how much reliance the startup has on outsourcing companies. Another context is for team leads and tech managers, which would need to know which team to assign which task based on their ownership on different parts of code, and at the same time in case of a layoff, which outsourcing company is the most expensive to try to re-negotiate the terms or the size of their outsourced developers. </p>



<p>And the <strong>balance</strong> here needs to be maintained between abstract value and practical measurement. While we recognize that code’s true worth involves creativity, problem-solving, and long-term impact, businesses still need tangible metrics to make informed decisions, allocate resources, and assess efficiency. Codenteam’s approach uses these numbers not as definitive judgments of a developer&#8217;s or a team&#8217;s value but as tools to evaluate ownership and code governance, assess project feasibility, and benchmark performance across different outsourcing companies.</p>



<p>For example, a single developer ownership is really important to give context on there expertise and where their knowledge will be needed. A team ownership is important to assign tasks. Neither can give value on whether the team or the developer or good enough based on this value at all. An governance is an important </p>



<p>In other words, while a line of code can&#8217;t encapsulate the full spectrum of a developer’s contributions, numeric KPIs remain an imperfect yet necessary mechanism for guiding decision-making in a business context.</p>



<p>In the end, reducing the work of a technical team to a dollar amount per line of code misses the essence of what makes these teams special. The real value is in the people—their creativity, their judgment, and their ability to see beyond the code to the bigger picture. It’s not about putting a price tag on a line of code; it’s about recognizing the immeasurable worth of the minds behind it.</p>



<p></p>



<blockquote class="wp-block-quote did-you-know no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>Did you know</strong></p>



<p>Codenteam provides KPIs like code ownership, work factor, code dilution and many more. Together those values can offer broader perspective on qualitative attributes of your developers, teams, outsourcing organizations and the entire company. </p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1000" height="843" src="https://codenteam.com/wp-content/uploads/collaboration-gear-1.png" alt="" class="wp-image-241419 size-full" srcset="https://codenteam.com/wp-content/uploads/collaboration-gear-1.png 1000w, https://codenteam.com/wp-content/uploads/collaboration-gear-1-980x826.png 980w, https://codenteam.com/wp-content/uploads/collaboration-gear-1-480x405.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1000px, 100vw" /></figure></div>
</blockquote>



<p></p>



<p></p>
<p>The post <a href="https://codenteam.com/work-factor-and-money-based-kpis-in-technical-teams-putting-a-price-tag-on-a-line-of-code/">Work factor and money-based KPIs in technical teams: Putting a price tag on a line of code?</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/work-factor-and-money-based-kpis-in-technical-teams-putting-a-price-tag-on-a-line-of-code/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Outsourcing in Dev Teams: A Blessing or a Curse?</title>
		<link>https://codenteam.com/outsourcing-in-dev-teams-a-blessing-or-a-curse/</link>
					<comments>https://codenteam.com/outsourcing-in-dev-teams-a-blessing-or-a-curse/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Mon, 14 Oct 2024 14:58:31 +0000</pubDate>
				<category><![CDATA[Code Analysis]]></category>
		<category><![CDATA[Management]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=238291</guid>

					<description><![CDATA[<p>Outsourcing in software development is a widely debated practice, with some companies viewing it as a necessary step to scale and save costs, while others approach it with caution due to potential risks. Whether it&#8217;s a blessing or a curse often depends on how outsourcing is managed, particularly regarding governance, cost-efficiency, and code ownership. Let&#8217;s [&#8230;]</p>
<p>The post <a href="https://codenteam.com/outsourcing-in-dev-teams-a-blessing-or-a-curse/">Outsourcing in Dev Teams: A Blessing or a Curse?</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Outsourcing in software development is a widely debated practice, with some companies viewing it as a necessary step to scale and save costs, while others approach it with caution due to potential risks. Whether it&#8217;s a blessing or a curse often depends on how outsourcing is managed, particularly regarding governance, cost-efficiency, and code ownership. Let&#8217;s explore the benefits and drawbacks, along with the crucial factors companies need to consider when deciding to outsource.</p>



<p></p>



<h3 class="wp-block-heading">The Benefits of Outsourcing</h3>



<p>One of the primary advantages of outsourcing is its ability to drive down costs. By outsourcing to regions where developer salaries are lower, companies can access skilled labor at a fraction of the price compared to hiring in-house teams. This is particularly beneficial for startups or businesses looking to scale quickly without committing to long-term expenses like benefits and office space.</p>



<p>Moreover, outsourcing allows companies to fill skill gaps within their internal teams. For example, a project may require expertise in AI, blockchain, or advanced security protocols, areas that may not be covered by in-house developers. In this case, outsourcing provides access to specialized talent, allowing companies to focus on their core competencies without being bogged down by the time and resources required to recruit and train new employees.</p>



<p>Outsourcing also offers flexibility. It allows companies to ramp up or down depending on project needs without the long-term financial commitment of hiring full-time employees. For short-term projects or temporary workload spikes, outsourcing provides a nimble way to maintain productivity without overextending internal resources.</p>



<blockquote class="wp-block-quote did-you-know no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center did"><div class="wp-block-media-text__content">
<p><strong>Did you know?</strong></p>



<p>Outsourced Development Can Lower Costs by Up to 70%</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="720" height="662" src="https://codenteam.com/wp-content/uploads/coins-1.png" alt="" class="wp-image-241434 size-full" srcset="https://codenteam.com/wp-content/uploads/coins-1.png 720w, https://codenteam.com/wp-content/uploads/coins-1-480x441.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 720px, 100vw" /></figure></div>
</blockquote>



<p></p>



<h3 class="wp-block-heading">The Drawbacks of Outsourcing</h3>



<p>Despite its cost-saving potential, outsourcing can also lead to unexpected expenses and challenges. One of the biggest risks involves code quality and intellectual property. Outsourcing companies may prioritize speed and cost over quality, potentially delivering subpar code that requires significant revisions. This can lead to a situation where the supposed cost savings are negated by time spent fixing issues. In extreme cases, poor-quality code can result in project delays or product failures, damaging a company&#8217;s reputation.</p>



<p>Code ownership is another critical concern. Companies must ensure that they retain full rights to the code developed by the outsourced team. Without clear governance and legal protections, businesses may find themselves in disputes over intellectual property. In some cases, outsourcing vendors may claim partial ownership of the code, limiting the company’s control over future modifications or enhancements. Proper governance, including detailed contracts that outline ownership and licensing, is essential to prevent these risks.</p>



<p>Furthermore, assessing the actual value of outsourced work can be difficult. One common metric used by companies is &#8220;Lines of Code per Dollar,&#8221; which aims to measure productivity in relation to cost. While this metric can provide a rough estimate of efficiency, it is often criticized for oversimplifying the complexity of software development. A high number of lines doesn’t necessarily translate into quality or innovation; in fact, more code can sometimes indicate inefficiency. Therefore, while &#8220;Lines per Dollar&#8221; can be a useful guideline, it should be supplemented with deeper assessments of the outsourced team’s performance, such as code quality, delivery time, and ability to meet project requirements.</p>



<p></p>



<h3 class="wp-block-heading">Governance and Code Ownership</h3>



<p>Effective governance is crucial when working with outsourced teams. Establishing clear roles, responsibilities, and communication protocols helps ensure that the outsourcing relationship remains productive and aligned with company goals. Governance frameworks should also address security and compliance, particularly if the outsourced team is handling sensitive data or working in regulated industries like finance or healthcare.</p>



<p>A critical aspect of governance is managing <strong>code ownership</strong>. Contracts should explicitly state that the client owns all code developed during the project and that the outsourcing provider cannot use or distribute the code without permission. Additionally, companies should request thorough code documentation and ensure that the outsourcing team follows best practices in version control. These measures help protect against potential disputes and ensure that the company can easily continue development if the outsourcing relationship ends.</p>



<p>However, beyond contractual ownership, internal teams must maintain sufficient <strong>code awareness</strong> of the project&#8217;s most vital components. Internal developers should own a significant portion of these critical areas, ensuring that if the outsourcing company is unable to continue or is replaced, the internal team has enough knowledge to take over seamlessly. Relying too heavily on outsourced teams for critical systems without maintaining an in-house understanding can leave the company vulnerable to delays, increased costs, and knowledge gaps if the relationship is interrupted.</p>



<blockquote class="wp-block-quote dont is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center did"><div class="wp-block-media-text__content">
<p><strong>DON&#8217;T</strong></p>



<p>Don&#8217;t Rely Exclusively on Outsourced Teams. Avoid leaving critical parts of your codebase entirely in the hands of outsourced teams.</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="263" src="https://codenteam.com/wp-content/uploads/2024/10/code-analysis-organization-ownership-1024x263.png" alt="" class="wp-image-238238 size-full" srcset="https://codenteam.com/wp-content/uploads/2024/10/code-analysis-organization-ownership-980x252.png 980w, https://codenteam.com/wp-content/uploads/2024/10/code-analysis-organization-ownership-480x123.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></figure></div>
</blockquote>



<p></p>



<p>By ensuring internal teams have strong visibility and control over key components, companies safeguard their long-term interests and maintain the flexibility to shift gears without risking project continuity. In this way, outsourcing becomes a complement to, rather than a replacement for, internal expertise.</p>



<p></p>



<h3 class="wp-block-heading">Costs and Assessing Value</h3>



<p>While cost reduction is a key motivation for outsourcing, companies must carefully weigh the immediate financial benefits against potential long-term costs. Outsourcing companies that offer rock-bottom prices may lack the experience or skills to deliver high-quality work, resulting in higher costs down the road due to rework or delayed timelines.</p>



<p>One approach to balancing cost and quality is to focus not only on the hourly rate but also on the outsourcing company&#8217;s track record. Evaluating past projects, client testimonials, and developer portfolios can provide insight into the team&#8217;s capabilities. Additionally, considering factors like code quality, documentation, and delivery timelines alongside &#8220;Lines per Dollar&#8221; ensures that companies are getting more than just cheap labor—they are getting value.</p>



<p>Outsourcing companies that demonstrate an understanding of project goals, offer transparent communication, and prioritize code ownership rights are more likely to deliver high-quality work that aligns with the company’s objectives.</p>



<blockquote class="wp-block-quote do no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center did"><div class="wp-block-media-text__content">
<p><strong>DO</strong></p>



<p>Look beyond just the hourly rate. Assess the vendor’s track record, client testimonials, and the quality of their previous work to ensure you are choosing a team that meets your standards.</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="280" height="418" src="https://codenteam.com/wp-content/uploads/do-5.png" alt="" class="wp-image-241485 size-full" srcset="https://codenteam.com/wp-content/uploads/do-5.png 280w, https://codenteam.com/wp-content/uploads/do-5-201x300.png 201w" sizes="(max-width: 280px) 100vw, 280px" /></figure></div>
</blockquote>



<p></p>



<h3 class="wp-block-heading">Conclusion</h3>



<p>Outsourcing in development teams can be both a dream and a nightmare, depending on how it&#8217;s managed. The key to success lies in finding the right balance between cost savings, governance, and maintaining control over intellectual property. By carefully evaluating outsourcing companies not only on price but also on code quality, work factor, and code ownership policies, businesses can turn outsourcing from a potential curse into a strategic advantage that drives growth and innovation.</p>



<p></p>
<p>The post <a href="https://codenteam.com/outsourcing-in-dev-teams-a-blessing-or-a-curse/">Outsourcing in Dev Teams: A Blessing or a Curse?</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/outsourcing-in-dev-teams-a-blessing-or-a-curse/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Former-developers Code Ownership: Governance’s First Enemy</title>
		<link>https://codenteam.com/former-developers-code-ownership-governances-first-enemy/</link>
					<comments>https://codenteam.com/former-developers-code-ownership-governances-first-enemy/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Mon, 14 Oct 2024 13:59:34 +0000</pubDate>
				<category><![CDATA[Code Analysis]]></category>
		<category><![CDATA[Management]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=238433</guid>

					<description><![CDATA[<p>Identifying Former Developers and Their Code Contributions Former developers are individuals who have left an organization but still hold significant ownership of parts of the codebase they contributed to while employed. Despite no longer being part of the active development team, their influence remains embedded within the code through the lines of code (LOC) they [&#8230;]</p>
<p>The post <a href="https://codenteam.com/former-developers-code-ownership-governances-first-enemy/">Former-developers Code Ownership: Governance’s First Enemy</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Identifying Former Developers and Their Code Contributions</h2>



<p>Former developers are individuals who have left an organization but still hold significant ownership of parts of the codebase they contributed to while employed. Despite no longer being part of the active development team, their influence remains embedded within the code through the lines of code (LOC) they authored. This residual ownership can lead to long-term challenges for companies in managing and maintaining their software effectively.</p>



<p>The challenge of former developers’ code ownership is not just technical but also organizational. Over time, these legacy contributions can become bottlenecks, with current developers hesitant to modify or refactor parts of the code owned by someone no longer available to consult. This creates a scenario where governance becomes weak, code complexity grows unchecked, and technical debt accumulates, putting the entire project at risk.</p>



<blockquote class="wp-block-quote do is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>DO</strong></p>



<p>Calculate Former Developer Ownership Regularly</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="347" height="106" src="https://codenteam.com/wp-content/uploads/2024/10/ex-employee-metric-1-e1728426407496.png" alt="" class="wp-image-238236 size-full" /></figure></div>
</blockquote>



<h2 class="wp-block-heading">Calculating the Ownership of Former Developers</h2>



<p>Understanding how much influence a former developer still has on a codebase is crucial to addressing this governance problem. The most direct method is to calculate their ownership by counting the lines of code they contributed to the project. This can be done through a version control system like Git, where each commit logs who wrote or modified each line of code.</p>



<p>Here’s how it works:</p>



<ul class="wp-block-list">
<li>For every file in the repository, inspect the author of each line of code.</li>



<li>Sum up all the lines owned by a particular former developer across the project.</li>



<li>Measure this number as a percentage of the total lines of code in the project to understand their impact.</li>
</ul>



<p>This method gives a clear picture of how deeply a former developer’s contributions are entrenched in the codebase. If a high percentage of the code still belongs to someone no longer part of the team, that’s a red flag for governance and maintainability. This high concentration of ownership by former developers signals potential risks, as the code might have aged without proper updates or refactoring, leaving technical debt that is difficult to manage.</p>



<p>Then you need to aggregate the values on the teams&#8217; level, on the outsourcing companies&#8217; level, and on the modules&#8217; level. This can give you an amazing overview of where your next knowledge transfer needs to happen. </p>



<h2 class="wp-block-heading">Addressing Former Developers&#8217; Ownership Through Code Dilution</h2>



<p>Once former developers’ code ownership is identified, the next step is fixing it to ensure better governance of the codebase. The most effective way to do this is by diluting their code. Dilution refers to the process of spreading out or reducing the impact of any one individual’s contributions, particularly those no longer with the organization.</p>



<p>This can be done in several ways:</p>



<ul class="wp-block-list">
<li><strong>Refactor Legacy Code</strong>: Start by reviewing the areas of the codebase where former developers have high ownership. Encourage the team to refactor these sections, updating them with modern practices and improving maintainability. This not only dilutes the code but also reduces technical debt.</li>



<li><strong>Assign Ownership to Active Developers</strong>: Make sure that current team members are assigned to sections of the code heavily owned by former developers. They should be responsible for understanding, maintaining, and updating that code. Over time, their own contributions will dilute the former developer&#8217;s impact.</li>



<li><strong>Promote Pair Programming and Code Reviews</strong>: Encourage active collaboration on legacy code through pair programming or structured code reviews. This spreads the knowledge of the codebase across multiple team members, reducing the risk that one person&#8217;s departure will leave a void.</li>
</ul>



<blockquote class="wp-block-quote dont no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>DON&#8217;T</strong></p>



<p>Never Rely on Single-Developer! </p>



<p>Knowledge transfer, code refactoring and continious improvement are key for team success.</p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="436" height="400" src="https://codenteam.com/wp-content/uploads/dont-2.png" alt="" class="wp-image-240466 size-full" srcset="https://codenteam.com/wp-content/uploads/dont-2.png 436w, https://codenteam.com/wp-content/uploads/dont-2-300x275.png 300w" sizes="(max-width: 436px) 100vw, 436px" /></figure></div>
</blockquote>



<p>By taking deliberate steps to dilute former developers’ ownership, organizations can regain control over their codebase, reduce the risk of technical debt, and foster a healthier governance structure where no part of the code is dependent on someone who is no longer part of the team.</p>



<p>In conclusion, former developers&#8217; code ownership can be a significant threat to code governance, leading to maintainability issues and technical debt. Calculating ownership and taking steps to dilute it ensures that the codebase remains healthy and maintainable, even as developers come and go.</p>



<blockquote class="wp-block-quote did-you-know is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>Did you know?</strong></p>



<p>Codenteam automatically analyzes and reports code ownership on single developer level. </p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="568" src="https://codenteam.com/wp-content/uploads/code-1024x568.png" alt="" class="wp-image-238483 size-full" srcset="https://codenteam.com/wp-content/uploads/code-980x544.png 980w, https://codenteam.com/wp-content/uploads/code-480x266.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></figure></div>
</blockquote>
<p>The post <a href="https://codenteam.com/former-developers-code-ownership-governances-first-enemy/">Former-developers Code Ownership: Governance’s First Enemy</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/former-developers-code-ownership-governances-first-enemy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Licensing assessment in Tech Due Diligence: MIT vs GPL vs LGPl vs AGPL vs Mozilla (MPL) vs Apache vs BSD</title>
		<link>https://codenteam.com/licensing-assessment-in-tech-due-diligence-mit-vs-gpl-vs-lgpl-vs-agpl-vs-mozilla-mpl-vs-apache-vs-bsd/</link>
					<comments>https://codenteam.com/licensing-assessment-in-tech-due-diligence-mit-vs-gpl-vs-lgpl-vs-agpl-vs-mozilla-mpl-vs-apache-vs-bsd/#respond</comments>
		
		<dc:creator><![CDATA[Fady S. Ghatas]]></dc:creator>
		<pubDate>Sun, 13 Oct 2024 18:02:20 +0000</pubDate>
				<category><![CDATA[Management]]></category>
		<guid isPermaLink="false">https://codenteam.com/?p=238287</guid>

					<description><![CDATA[<p>In today’s software landscape, open-source software (OSS) has become an integral part of development practices, offering developers access to a vast array of libraries, frameworks, and tools. However, using open-source code comes with legal obligations, specifically in terms of licensing. Properly managing software licenses is crucial for avoiding legal risks and ensuring compliance during technology [&#8230;]</p>
<p>The post <a href="https://codenteam.com/licensing-assessment-in-tech-due-diligence-mit-vs-gpl-vs-lgpl-vs-agpl-vs-mozilla-mpl-vs-apache-vs-bsd/">Licensing assessment in Tech Due Diligence: MIT vs GPL vs LGPl vs AGPL vs Mozilla (MPL) vs Apache vs BSD</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In today’s software landscape, <strong>open-source software (OSS)</strong> has become an integral part of development practices, offering developers access to a vast array of libraries, frameworks, and tools. However, using open-source code comes with legal obligations, specifically in terms of licensing. Properly managing software licenses is crucial for avoiding legal risks and ensuring compliance during technology due diligence. This blog post explores the types of licenses in code, the importance of license assessments in due diligence, and key considerations like permissive vs. restrictive licenses and special clauses.</p>



<h2 class="wp-block-heading">Types of Licenses in Code</h2>



<p>When it comes to software licenses, there are two main categories: <strong>open-source licenses</strong> and <strong>proprietary licenses</strong>. Open-source licenses give developers the freedom to use, modify, and distribute code, but each license comes with its own set of rules. Proprietary licenses, on the other hand, generally restrict usage and modification, and software under such licenses must be purchased or licensed directly from the owner.</p>



<p>Open-source licenses can be further divided into <strong>permissive</strong> and <strong>restrictive</strong> licenses, each having different implications for businesses and developers. Choosing the right license impacts how your code can be used and redistributed, making it a critical factor during any tech due diligence process.</p>



<h2 class="wp-block-heading">License Assessment in Code Assessment and Due Diligence</h2>



<p>When conducting <a href="https://codenteam.com/maximizing-returns-a-technical-due-diligence-guide-for-investing-in-software-teams/">technology due diligence</a>—whether for mergers, acquisitions, investments, or partnerships—assessing the software’s legal compliance is vital. Part of this process involves a <strong>license assessment</strong>, where you evaluate all software components and their associated licenses.</p>



<p>A license assessment helps to identify potential risks that come from using software governed by restrictive licenses, which may impose obligations such as releasing proprietary code when it interacts with open-source components. It&#8217;s also important to ensure that the company is compliant with all licenses and is not violating any terms, which could lead to costly legal disputes down the road.</p>



<p>License assessments usually involve:</p>



<ul class="wp-block-list">
<li><strong>Inventorying all third-party software</strong> used in the product, including libraries and tools, you can rely on a <a href="https://codenteam.com/understanding-software-bills-of-materials-sbom-a-crucial-tool-in-software-supply-chain-security/">Software Bill of Materials (SBOM)</a> to handle inventorying.</li>



<li><strong>Checking license compliance</strong> to ensure all obligations, such as attribution or redistribution clauses, are met.</li>



<li><strong>Evaluating future risks</strong> such as viral licenses that may force open-sourcing of proprietary code.</li>
</ul>



<h2 class="wp-block-heading">Permissive vs. Restrictive Licenses</h2>



<p>Understanding the differences between permissive and restrictive licenses is key when choosing what licenses to use or review during due diligence.</p>



<h3 class="wp-block-heading">Permissive Licenses</h3>



<p>Permissive licenses, such as the <strong>MIT License</strong> and the <strong>Apache License 2.0</strong>, allow developers to use, modify, and redistribute code with minimal restrictions. These licenses are favored because they provide flexibility and encourage innovation by allowing developers to integrate open-source components into proprietary software without any major obligations.</p>



<p>For example, the <strong>MIT License</strong> only requires that the original copyright notice and license terms be included in any distribution of the software, whether the software is modified or not. The <strong>Apache License 2.0</strong> adds provisions for patent rights but remains permissive, requiring attribution and documentation of any modifications.</p>



<h3 class="wp-block-heading">Restrictive Licenses</h3>



<p>Restrictive licenses impose more obligations on the use and distribution of software. The most notable examples are the <strong>GNU General Public License (GPL)</strong> and its variants like <strong>LGPL</strong> and <strong>AGPL</strong>.</p>



<ul class="wp-block-list">
<li><strong>GPL (General Public License)</strong>: The GPL is a copyleft license, which means that any derivative works or software that links to GPL-licensed code must also be released under the GPL. This &#8220;viral&#8221; nature is why many companies are cautious when using GPL-licensed components.</li>



<li><strong>LGPL (Lesser General Public License)</strong>: LGPL is slightly more lenient, allowing the use of LGPL-licensed libraries in proprietary software, provided that the library itself remains open-source.</li>



<li><strong>AGPL (Affero General Public License)</strong>: AGPL extends the GPL&#8217;s reach to network-distributed software, meaning if you modify AGPL software and make it available over a network, you must release the source code to users. This can be particularly restrictive for SaaS companies.</li>
</ul>



<p>For tech due diligence, it&#8217;s essential to distinguish between permissive and restrictive licenses, as the latter can create legal obligations that may not align with business models, especially for proprietary or SaaS products.</p>



<figure class="wp-block-table"><table class="has-fixed-layout mtr-table mtr-thead-th"><thead><tr><th data-mtr-content="License" class="mtr-th-tag"><div class="mtr-cell-content">License</div></th><th data-mtr-content="Permissivity Level" class="mtr-th-tag"><div class="mtr-cell-content">Permissivity Level</div></th><th data-mtr-content="Risk Level" class="mtr-th-tag"><div class="mtr-cell-content">Risk Level</div></th></tr></thead><tbody><tr><td data-mtr-content="License" class="mtr-td-tag"><div class="mtr-cell-content">GPL 2.0</div></td><td data-mtr-content="Permissivity Level" class="mtr-td-tag"><div class="mtr-cell-content">Restrictive</div></td><td data-mtr-content="Risk Level" class="mtr-td-tag"><div class="mtr-cell-content">High</div></td></tr><tr><td data-mtr-content="License" class="mtr-td-tag"><div class="mtr-cell-content">GPL 3.0</div></td><td data-mtr-content="Permissivity Level" class="mtr-td-tag"><div class="mtr-cell-content">Restrictive</div></td><td data-mtr-content="Risk Level" class="mtr-td-tag"><div class="mtr-cell-content">High</div></td></tr><tr><td data-mtr-content="License" class="mtr-td-tag"><div class="mtr-cell-content">AGPL</div></td><td data-mtr-content="Permissivity Level" class="mtr-td-tag"><div class="mtr-cell-content">Restrictive</div></td><td data-mtr-content="Risk Level" class="mtr-td-tag"><div class="mtr-cell-content">High</div></td></tr><tr><td data-mtr-content="License" class="mtr-td-tag"><div class="mtr-cell-content">LGPL</div></td><td data-mtr-content="Permissivity Level" class="mtr-td-tag"><div class="mtr-cell-content">Moderate</div></td><td data-mtr-content="Risk Level" class="mtr-td-tag"><div class="mtr-cell-content">Moderate</div></td></tr><tr><td data-mtr-content="License" class="mtr-td-tag"><div class="mtr-cell-content">Mozilla MPL 1.0</div></td><td data-mtr-content="Permissivity Level" class="mtr-td-tag"><div class="mtr-cell-content">Moderate</div></td><td data-mtr-content="Risk Level" class="mtr-td-tag"><div class="mtr-cell-content">Moderate</div></td></tr><tr><td data-mtr-content="License" class="mtr-td-tag"><div class="mtr-cell-content">Mozilla MPL 1.1</div></td><td data-mtr-content="Permissivity Level" class="mtr-td-tag"><div class="mtr-cell-content">Moderate</div></td><td data-mtr-content="Risk Level" class="mtr-td-tag"><div class="mtr-cell-content">Moderate</div></td></tr><tr><td data-mtr-content="License" class="mtr-td-tag"><div class="mtr-cell-content">Apache 2.0</div></td><td data-mtr-content="Permissivity Level" class="mtr-td-tag"><div class="mtr-cell-content">Permissive</div></td><td data-mtr-content="Risk Level" class="mtr-td-tag"><div class="mtr-cell-content">Low</div></td></tr><tr><td data-mtr-content="License" class="mtr-td-tag"><div class="mtr-cell-content">MIT</div></td><td data-mtr-content="Permissivity Level" class="mtr-td-tag"><div class="mtr-cell-content">Permissive</div></td><td data-mtr-content="Risk Level" class="mtr-td-tag"><div class="mtr-cell-content">Low</div></td></tr><tr><td data-mtr-content="License" class="mtr-td-tag"><div class="mtr-cell-content">BSD</div></td><td data-mtr-content="Permissivity Level" class="mtr-td-tag"><div class="mtr-cell-content">Permissive</div></td><td data-mtr-content="Risk Level" class="mtr-td-tag"><div class="mtr-cell-content">Low</div></td></tr></tbody></table><figcaption class="wp-element-caption">GPL 2.0 vs GPL 3.0 vs AGPL vs LGPG vs MPL 1.0 vs MPL 1.1 vs Apache vs MIT vs BSD</figcaption></figure>



<blockquote class="wp-block-quote dont no-shadow is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>DON&#8217;T</strong></p>



<p>Don&#8217;t use restrictive licenses in commercial products, specially in distributable products and frontends, unless you comply with the license terms. </p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="436" height="400" src="https://codenteam.com/wp-content/uploads/dont-3.png" alt="" class="wp-image-240532 size-full" srcset="https://codenteam.com/wp-content/uploads/dont-3.png 436w, https://codenteam.com/wp-content/uploads/dont-3-300x275.png 300w" sizes="(max-width: 436px) 100vw, 436px" /></figure></div>
</blockquote>



<h2 class="wp-block-heading">What might go wrong if open-source license terms are violated? <strong>The Artifex Software vs. Hancom Inc.</strong></h2>



<p><a href="https://casetext.com/case/artifex-software-inc-v-hancom-inc">The <strong>Artifex Software vs. Hancom Inc.</strong> lawsuit</a> is a notable case in open-source software licensing. Artifex, the developer of Ghostscript, an open-source PDF and PostScript rendering tool, sued Hancom, a South Korean software company, in 2016 for violating the terms of the GPL (General Public License). Hancom had integrated Ghostscript into its office suite without purchasing a commercial license or complying with the GPL&#8217;s requirement to release their source code. After ignoring Artifex&#8217;s cease-and-desist letter, Hancom was sued for copyright infringement and breach of contract. The U.S. District Court in California ruled that the GPL was legally enforceable, and Hancom settled the case out of court in 2017. This lawsuit highlighted the importance of adhering to open-source license terms and served as a warning to companies using open-source software without proper compliance.</p>



<h2 class="wp-block-heading">Special Clauses in Licensing (Common Clause, etc.)</h2>



<p>In recent years, new types of licenses have emerged, introducing special clauses to address modern use cases. One example is the <strong>Common Clause</strong>, which modifies existing open-source licenses to prohibit commercial use of the software without explicit permission. While the Common Clause aims to protect developers from exploitation by large corporations, it has sparked debates over whether software governed by this clause can truly be considered open-source.</p>



<p>Another example is <strong>patent retaliation clauses</strong>, found in licenses like Apache 2.0, which prevent users from initiating patent litigation based on the licensed software. These clauses offer legal protection for the original developers and must be carefully considered when assessing the overall risk profile of a software stack.</p>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Conclusion</h2>



<p>Licensing is a crucial part of technology due diligence, particularly in the age of open-source software. Choosing the right licenses and understanding the obligations they entail can make or break a business deal. Permissive licenses like MIT and Apache provide flexibility, while restrictive licenses like GPL and AGPL can impose significant legal requirements. Special clauses like the Common Clause and patent retaliation clauses add complexity to license management, making it essential to conduct thorough license assessments as part of your due diligence efforts.</p>



<blockquote class="wp-block-quote did-you-know is-layout-flow wp-block-quote-is-layout-flow">
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-vertically-aligned-center"><div class="wp-block-media-text__content">
<p><strong>Did you know?</strong></p>



<p>Codenteam AI identifies all licenses used by your code depdenendies, you can see it in the report and discuss with the AI why it marked it as such. </p>
</div><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="1024" height="208" src="https://codenteam.com/wp-content/uploads/report-licenses-1024x208.png" alt="" class="wp-image-238434 size-full" srcset="https://codenteam.com/wp-content/uploads/report-licenses-1024x208.png 1024w, https://codenteam.com/wp-content/uploads/report-licenses-980x199.png 980w, https://codenteam.com/wp-content/uploads/report-licenses-480x97.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" /></figure></div>
</blockquote>



<p>Understanding the intricacies of software licensing not only protects against legal risks but also ensures that the technology stack is aligned with the company’s business objectives and future scalability.</p>
<p>The post <a href="https://codenteam.com/licensing-assessment-in-tech-due-diligence-mit-vs-gpl-vs-lgpl-vs-agpl-vs-mozilla-mpl-vs-apache-vs-bsd/">Licensing assessment in Tech Due Diligence: MIT vs GPL vs LGPl vs AGPL vs Mozilla (MPL) vs Apache vs BSD</a> appeared first on <a href="https://codenteam.com">Codenteam</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://codenteam.com/licensing-assessment-in-tech-due-diligence-mit-vs-gpl-vs-lgpl-vs-agpl-vs-mozilla-mpl-vs-apache-vs-bsd/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
