<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Writing by Madhab Dhakal</title>
    <link>https://madhabdhakal.com.np/blog/</link>
    <atom:link href="https://madhabdhakal.com.np/feed.xml" rel="self" type="application/rss+xml" />
    <description>Articles by Madhab Dhakal on ColdFusion architecture, Azure AD single sign-on and the working life of a software developer, drawn from real production experience.</description>
    <language>en-AU</language>
    <lastBuildDate>Fri, 02 May 2025 03:50:50 GMT</lastBuildDate>
    <item>
      <title>ColdFusion in 2025: Key Challenges and Architectural Lessons</title>
      <link>https://madhabdhakal.com.np/coldfusion-in-2025-key-challenges-and-architectural-lessons/</link>
      <guid isPermaLink="true">https://madhabdhakal.com.np/coldfusion-in-2025-key-challenges-and-architectural-lessons/</guid>
      <pubDate>Tue, 08 Apr 2025 09:10:58 GMT</pubDate>
      <dc:creator>Madhab Dhakal</dc:creator>
      <category>ColdFusion</category>
      <description>Lessons from two years as a ColdFusion technical architect: modernising legacy code safely, treating security as ongoing, documenting decisions and scaling on AWS.</description>
      <content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>ColdFusion frequently slips under the radar in modern technology conversations, but it continues to power key systems in many organisations, including mine. I’ve spent the last two years working extensively with ColdFusion in real-world production situations, and it’s been a journey filled with both obstacles and opportunities. In this post, I’d want to share some of the lessons I’ve learnt, not only about the technology, but also about what it takes to progress from developer to technical architect inside a ColdFusion ecosystem.</p>
<p>As a Senior Software Engineer and Technical Architect, I’ve focused on driving strategic initiatives while engaging closely with stakeholders to ensure alignment with organizational goals. A significant part of my work has involved acquiring and manipulating spatial data within GIS environments, a critical component in enhancing the mapping and geographical applications.</p>
<p>Beyond coding, I’ve been responsible for maintaining ColdFusion servers across multiple environments, applying best practices in security, automation, and performance monitoring. My daily workflow is split between hands on coding (70%) and system level oversight (30%), monitoring servers, troubleshooting vulnerabilities, managing patches, and ensuring smooth deployments. I also mentor junior developers, offering technical guidance that supports their growth and contributes to a collaborative, high-performing team culture. This multifaceted role has allowed me to not only influence technology landscape but also foster innovation and cohesion within the team.</p>
<p><img src="https://madhabdhakal.com.np/images/blog/coldfusion-in-2025-key-challenges-and-architectural-lessons/inline-1.webp" alt="Banner reading ColdFusion in 2025: Challenges, Lessons, and Architecting for the Future, beside the ColdFusion logo" width="300" height="168" loading="lazy" decoding="async" /></p>
<h2 id="lessons-learned-along-the-way">Lessons Learned Along the Way</h2>
<p>Over time, I’ve picked up a set of invaluable lessons both technical and human that have played a pivotal role in shaping my journey as a ColdFusion Technical Architect. These lessons go beyond code and architecture; they also focus on leadership, collaboration, and long-term thinking. Here’s a closer look at some of the key insights I’ve gained:</p>
<h3 id="modernizing-legacy-code-is-a-balancing-art">Modernizing Legacy Code is a balancing art</h3>
<p>When working with an established ColdFusion codebase, there is always the desire to start from scratch. The system may feel outdated, difficult to maintain, or riddled with inefficiencies. However, legacy systems often contain deeply embedded business logic, hidden dependencies, and years of patchwork fixes that are crucial to the overall functionality. In my experience, jumping straight into a full rewrite can be risky, it not only disrupts the business but can also introduce unforeseen issues that complicate things further.</p>
<p>A perfect example of this comes from my work, which was originally built with ColdFusion more than 20 years ago. Over time, various features were added or patched together to meet the growing demands of the business. As a result, the code became tightly coupled with business logic, and untangling it was no easy feat. Some parts of the system were convoluted, and others had significant technical debt that made refactoring a challenge. However, instead of throwing everything away, I decided on a more measured, incremental approach.</p>
<p>Rather of rebuilding the entire backend system, I focused on redesigning smaller, more modular components that interact with the existing code. This allowed us to keep the system’s functional aspects while gradually incorporating modern approaches. By splitting down the module into individual components, we could make modifications gradually, lowering the danger of large-scale disruptions.</p>
<p>However, the most difficult problem was explaining the benefit of these modest advances to stakeholders. Many of them did not always recognise the technical debt hiding beneath the surface. To assist them understand, I demonstrated actual results by comparing system performance before and after each incremental update, emphasising the reduced downtime, and highlighting potential scalability benefits. By framing it as a strategic, long-term approach, I was able to secure their support while demonstrating how we were enhancing the system without entirely redesigning it.</p>
<h3 id="security-and-authentication-are-ongoing-responsibilities">Security and Authentication Are Ongoing Responsibilities</h3>
<p>In the world of software development, security is not a one-time activity that you implement and then forget about. It’s a constantly evolving problem, especially when working with public-facing applications where risks can alter quickly and unpredictably. One of the most important lessons I’ve learnt is that security is not a one-time job; it is an ongoing responsibility that necessitates vigilance, proactive measures, and a continual improvement mindset.</p>
<p>One of the most significant security enhancements I spearheaded was the Azure AD Single Sign-On (SSO) connection for our ColdFusion-based platform. While this was a significant step towards simplifying user authentication and enhancing security, it was only one component of a much wider security system. Single Sign-On enabled us to centralise authentication, providing greater control over user access, while also laying the groundwork for enforcing other security best practices throughout the system.</p>
<p>However, implementing SSO did not mark the end of the journey. I’ve learnt over time that security is an iterative process. Regular token validation and secure session handling have become essential components of our day-to-day operations. To prevent session hijacking, I validate all tokens on a frequent basis, and I’ve introduced measures to ensure that session timeouts and re-authentication processes are properly handled. These small details make a huge difference in safeguarding our application from unauthorized access.</p>
<h3 id="documentation-is-architectures-best-friend">Documentation is architecture’s best friend</h3>
<p>One of the most important yet underrated aspects of system architecture is documenting the decision-making process. Over time, I’ve made it a habit to document why specific libraries or APIs were chosen, why endpoints were designed in certain ways, and how modules fit into the larger system. This documentation serves as a technical roadmap for others or even for myself down the line ensuring that the reasoning behind architectural decisions is clear and accessible. This becomes especially useful when changes are needed or new team members join, as it provides a deeper understanding of the system’s structure and purpose.</p>
<p>For example, when integrating Azure AD Single Sign-On (SSO) into our ColdFusion application, I documented the decision-making process behind selecting SSO for centralized authentication, the challenges we anticipated, and how it aligned with security goals (<a href="https://www.cyber.gov.au/resources-business-and-government/essential-cybersecurity/essential-eight" target="_blank" rel="noopener noreferrer">Essential Eight</a>). This allowed new team members to understand not just how the system works but why it was structured this way. Documentation also proved invaluable when we faced a security audit, as we were able to easily provide details on our token validation process. In short, good documentation fosters better communication, reduces errors, and ensures that the architecture remains understandable and adaptable over time.</p>
<h3 id="coldfusion-still-has-a-place-when-used-right">ColdFusion still has a place, when used right</h3>
<p>ColdFusion doesn’t always get the respect it deserves. As a language that has been around for decades, it can be easy to dismiss it as outdated, but my experience has taught me that it’s not the tool itself that defines the quality of a system — it’s how you use it. ColdFusion, when paired with the right architecture and modern development practices, can still power robust, scalable, and secure applications. I’ve found that embracing ColdFusion’s strengths, such as its ease of rapid development and powerful integration capabilities, while using modern patterns, has allowed us to build solutions that are both efficient and future-proof.</p>
<p>For instance, we’ve successfully integrated ColdFusion with modern authentication systems like Azure AD SSO, ensuring that our platform aligns with current security standards. Additionally, we’ve leveraged AWS services to scale our platform and integrate with cloud-based tools, allowing us to take advantage of features such as S3 storage, Lambda functions, and RDS for improved performance and flexibility. We’ve also embraced clean REST APIs, enabling seamless communication between ColdFusion and other systems. By adhering to principles such as modular design and keeping the codebase flexible and maintainable, we’ve ensured that our ColdFusion applications remain scalable and adaptable as the system grows. Through these efforts, I’ve seen firsthand that ColdFusion is far from obsolete it’s a tool that, when used thoughtfully and with care, can continue to serve businesses well in 2025 and beyond.</p>
<h3 id="support-can-be-sparse-so-build-your-own-network">Support can be sparse, so build your own network</h3>
<p>Unlike more mainstream languages, ColdFusion doesn’t have an overwhelming number of local user groups, StackOverflow activity, or readily available consultants, especially in Australia. This lack of readily available support can sometimes feel isolating, but it also pushes you to become more self-sufficient and proactive. I’ve learned that, in the absence of a large, active community nearby, it’s crucial to create your own network of support. I’ve started writing blogs to share insights and solutions with others, engaging with the broader ColdFusion community online through forums and social media, and experimenting with solutions when documentation falls short. This approach has not only allowed me to solve problems independently but has also helped others in similar situations.</p>
<p>For example, when working on integrating <a href="https://madhabdhakal.com.np/implementing-sso-with-azure-ad-in-coldfusion/">Azure AD SSO with ColdFusion</a>, I found that there were few resources specific to this combination. Rather than getting stuck, I dove into documentation, trial and error, and shared my findings on <a href="https://madhabdhakal.com.np/blog/">my blog</a>. As a result, I not only solved the issue for my team but also contributed back to the community, helping others who might be struggling with the same integration. By making these efforts to connect with like-minded professionals and share knowledge, I’ve found a sense of collaboration and support that benefits both me and others. In the end, the ColdFusion community might not be as large as some other ecosystems, but it is filled with passionate individuals who are always eager to help when you reach out.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Working as a ColdFusion Architect isn’t just about keeping old systems alive it’s about transforming them into something modern, secure, and future-ready. Throughout my journey, I’ve learned that the role demands more than just coding skills; it requires thinking strategically about the long-term health of the platform, mentoring others, and advocating for solutions that balance innovation with stability. It’s a blend of leadership and technical expertise, where your decisions impact both the immediate needs of your team and the future of the product.</p>
<p>I’m incredibly proud of how far we’ve come, especially in areas like modernizing legacy code, integrating secure authentication systems, and scaling our ColdFusion applications to meet the needs of the business. But I’m also aware that this journey is ongoing. We’re always learning, adapting, and improving particularly as we continue to evolve ColdFusion into something even more powerful, capable of meeting the demands of today’s technological landscape. While ColdFusion might not always get the recognition it deserves, I’m excited about what lies ahead and the opportunities to continue pushing the boundaries of what we can build with it.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Implementing SSO with Azure AD in ColdFusion</title>
      <link>https://madhabdhakal.com.np/implementing-sso-with-azure-ad-in-coldfusion/</link>
      <guid isPermaLink="true">https://madhabdhakal.com.np/implementing-sso-with-azure-ad-in-coldfusion/</guid>
      <pubDate>Wed, 19 Mar 2025 13:42:05 GMT</pubDate>
      <dc:creator>Madhab Dhakal</dc:creator>
      <category>ColdFusion</category>
      <category>Experience</category>
      <description>A step-by-step guide to single sign-on for ColdFusion: register the app in Azure AD, enable ID tokens, configure OpenID Connect and handle the login callback.</description>
      <content:encoded><![CDATA[<h2 id="introduction">Introduction</h2>
<p>In today’s digital landscape, security is more critical than ever. With the rise of cyber threats and data breaches, organizations must prioritize protecting their systems and user data. One effective way to enhance security is through Single Sign-On (SSO), which simplifies the authentication process and reduces the risk of password-related vulnerabilities.</p>
<p>SSO allows users to log in once and gain access to multiple applications without needing to re-enter their credentials. This not only improves the user experience but also strengthens security by centralizing authentication. Azure Active Directory (Azure AD), combined with <a href="https://learn.microsoft.com/en-us/entra/identity-platform/v2-protocols-oidc" target="_blank" rel="noopener noreferrer">OpenID Connect</a>, provides a robust solution for implementing SSO in applications. In this blog, I will demonstrate how to implement SSO using ColdFusion as my programming language.</p>
<h2 id="prerequisites">Prerequisites</h2>
<p>Before diving into the implementation, make sure you have the following:</p>
<ul>
<li><p>An Azure AD tenant</p>
</li>
<li><p>An application registered in Azure AD</p>
</li>
<li><p>Basic knowledge of OAuth 2.0 and OpenID Connect</p>
</li>
<li><p>ColdFusion server set up</p>
</li>
</ul>
<h2 id="step-by-step-implementation">Step-by-Step Implementation</h2>
<h3 id="register-your-application-in-azure-ad">Register Your Application in Azure AD</h3>
<p>The first step is to register your application in Azure AD. This registration allows Azure AD to recognize your application and provide it with the necessary credentials for authentication.</p>
<p><strong>Steps</strong>:</p>
<ol>
<li><p><strong>Log in to the Azure portal</strong> and navigate to Azure Active Directory.</p>
</li>
<li><p><strong>Select “App registrations”</strong> and click on “New registration.”</p>
</li>
<li><p><strong>Enter a name</strong> for your application, such as “MyAppSSO.”</p>
</li>
<li><p><strong>Specify the redirect URI</strong>. This is the URL where users will be redirected after they authenticate. For example, <code>https://yourapp.com/callback</code>.</p>
</li>
<li><p><strong>Click “Register”</strong> to create the application.</p>
</li>
</ol>
<p><img src="https://madhabdhakal.com.np/images/blog/implementing-sso-with-azure-ad-in-coldfusion/inline-1.webp" alt="Azure portal Register an application form, with a name, supported account types and a redirect URI" width="1327" height="1228" loading="lazy" decoding="async" /></p>
<h3 id="configure-authentication">Configure Authentication</h3>
<p>After registering the application, you need to configure the authentication settings. This involves specifying the redirect URI and enabling ID tokens.</p>
<p><strong>Steps</strong>:</p>
<ol>
<li><p>In the <strong>App registrations</strong> section, select your newly registered application.</p>
</li>
<li><p>Navigate to the <strong>“Authentication”</strong> tab.</p>
</li>
<li><p>Click on <strong>“Add a platform”</strong> and select <strong>“Web”</strong>.</p>
</li>
<li><p>Enter the <strong>redirect URI</strong> you specified during registration.</p>
</li>
<li><p>Under <strong>“Implicit grant and hybrid flows”</strong>, enable <strong>ID tokens</strong>. This allows your application to receive ID tokens directly from Azure AD.</p>
</li>
</ol>
<p><img src="https://madhabdhakal.com.np/images/blog/implementing-sso-with-azure-ad-in-coldfusion/inline-2.webp" alt="Azure portal Authentication settings for the MyAppSSO application, showing the redirect URI and ID tokens enabled" width="1600" height="1036" loading="lazy" decoding="async" /></p>
<h3 id="3-set-up-openid-connect-in-your-coldfusion-application">3. Set Up OpenID Connect in Your ColdFusion Application</h3>
<p>Now, you need to set up OpenID Connect in your ColdFusion application. This involves configuring the necessary endpoints and handling HTTP requests using the <code>cfhttp</code> tag.</p>
<ol>
<li><p><strong>Install the necessary libraries</strong>. You can use the <code>cfhttp</code> tag in ColdFusion to handle HTTP requests.</p>
</li>
<li><p><strong>Configure the OpenID Connect endpoints</strong> in your ColdFusion application. Here’s an example configuration:</p>
</li>
</ol>
<figure class="code"><figcaption>CFML</figcaption><pre class="shiki transit" style="background-color:#121211;color:#e9e5dc" tabindex="0"><code><span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> clientId</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">"your-client-id"</span><span style="color:#A8A49A">></span></span>
<span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> clientSecret</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">"your-client-secret"</span><span style="color:#A8A49A">></span></span>
<span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> redirectUri</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">"https://yourapp.com/callback"</span><span style="color:#A8A49A">></span></span>
<span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> authority</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">"https://login.microsoftonline.com/your-tenant-id"</span><span style="color:#A8A49A">></span></span>
<span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> tokenEndpoint</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">"#authority#/oauth2/v2.0/token"</span><span style="color:#A8A49A">></span></span>
<span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> authorizeEndpoint</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">"#authority#/oauth2/v2.0/authorize"</span><span style="color:#A8A49A">></span></span></code></pre></figure>
<h3 id="4-implement-the-authentication-flow">4. Implement the Authentication Flow</h3>
<p>The final step is to implement the authentication flow. This involves redirecting users to the Azure AD login page, handling the callback, and validating the ID token.</p>
<ol>
<li><strong>Redirect users to the Azure AD login page</strong>:</li>
</ol>
<figure class="code"><figcaption>CFML</figcaption><pre class="shiki transit" style="background-color:#121211;color:#e9e5dc" tabindex="0"><code><span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> state</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">createUUID()</span><span style="color:#A8A49A">></span></span>
<span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> nonce</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">createUUID()</span><span style="color:#A8A49A">></span></span>
<span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> authUrl</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">"#authorizeEndpoint#?client_id=#clientId#&#x26;response_type=id_token&#x26;redirect_uri=#redirectUri#&#x26;response_mode=form_post&#x26;scope=openid&#x26;state=#state#&#x26;nonce=#nonce#"</span><span style="color:#A8A49A">></span></span>
<span class="line"></span>
<span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cflocation</span><span style="color:#FFC65C"> url</span><span style="color:#A8A49A">=</span><span style="color:#6FE3A5">"#authUrl#"</span><span style="color:#A8A49A">></span></span></code></pre></figure>
<ol start="2">
<li><strong>Handle the callback</strong> from Azure AD and validate the ID token:</li>
</ol>
<figure class="code"><figcaption>CFML</figcaption><pre class="shiki transit" style="background-color:#121211;color:#e9e5dc" tabindex="0"><code><span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfif</span><span style="color:#FFC65C"> structKeyExists(form,</span><span style="color:#A8A49A"> "id_token")></span></span>
<span class="line"><span style="color:#A8A49A">    &#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> idToken</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">form.id_token</span><span style="color:#A8A49A">></span></span>
<span class="line"><span style="color:#8A867C;font-style:italic">    &#x3C;!--- Validate the ID token here ---></span></span>
<span class="line"><span style="color:#A8A49A">    &#x3C;</span><span style="color:#FF7A6B">cfset</span><span style="color:#FFC65C"> session.user</span><span style="color:#A8A49A"> = </span><span style="color:#6FE3A5">parseJwt(idToken)</span><span style="color:#A8A49A">></span></span>
<span class="line"><span style="color:#A8A49A">&#x3C;/</span><span style="color:#FF7A6B">cfif</span><span style="color:#A8A49A">></span></span></code></pre></figure>
<ol start="3">
<li><strong>Store the user’s session</strong> and provide access to protected resources:</li>
</ol>
<figure class="code"><figcaption>CFML</figcaption><pre class="shiki transit" style="background-color:#121211;color:#e9e5dc" tabindex="0"><code><span class="line"><span style="color:#A8A49A">&#x3C;</span><span style="color:#FF7A6B">cfif</span><span style="color:#FFC65C"> structKeyExists(session,</span><span style="color:#A8A49A"> "user")></span></span>
<span class="line"><span style="color:#8A867C;font-style:italic">    &#x3C;!--- User is authenticated, provide access to protected resources ---></span></span>
<span class="line"><span style="color:#A8A49A">&#x3C;/</span><span style="color:#FF7A6B">cfif</span><span style="color:#A8A49A">></span></span></code></pre></figure>
<h2 id="conclusion">Conclusion</h2>
<p>Implementing SSO with Azure AD and OpenID Connect in ColdFusion can significantly enhance the security and user experience of your applications. By following the detailed steps outlined in <a href="https://madhabdhakal.com.np/implementing-sso-with-azure-ad-in-coldfusion/">this post</a>, you can set up a robust SSO solution that simplifies authentication for your users.</p>
<p>If you have any questions or run into issues during the implementation, feel free to reach out in the comments below. Happy coding!</p>
]]></content:encoded>
    </item>
    <item>
      <title>Why do software engineers drink so much coffee?</title>
      <link>https://madhabdhakal.com.np/why-do-software-engineers-dring-coffee/</link>
      <guid isPermaLink="true">https://madhabdhakal.com.np/why-do-software-engineers-dring-coffee/</guid>
      <pubDate>Thu, 24 Mar 2022 10:31:51 GMT</pubDate>
      <dc:creator>Madhab Dhakal</dc:creator>
      <category>Experience</category>
      <description>Why coffee and programming go together: what caffeine does for focus and energy, the research on pain, eye health and mood, and why the aroma alone may help.</description>
      <content:encoded><![CDATA[<blockquote>
<p><strong>Programmer, an organism that converts caffeine into software</strong></p>
</blockquote>
<p>I work as a <a href="https://madhabdhakal.com.np/software-developer-as-an-international-student/">software engineer</a> and enjoy drinking coffee. Staying up late to read news about technology, innovation, and so on is one of my habits. One of my friends recently asked me, “Why do you programmers love drinking coffee?”</p>
<p>That’s a great question, and I think it’s worth writing about. The most important reason, in my opinion, is that coffee is a symbol of concentration. And programmers must concentrate in order to complete any workable project.</p>
<h2 id="it-improves-your-intelligence-and-energy-levels">It improves your intelligence and energy levels.</h2>
<p>I’m not saying you’ll score 150 on your next IQ test, but caffeine has been scientifically proven to block an inhibitory neurotransmitter called Adenosine as it travels to the brain via blood circulation. When this occurs, there is enough room for other neurotransmitters to increase, such as dopamine and norepinephrine. This results in increased neuronal firing.</p>
<p>Caffeine improves a variety of brain functions, including mood, cognitive function, concentration, reaction times, and energy.</p>
<p><img src="https://madhabdhakal.com.np/images/blog/why-do-software-engineers-dring-coffee/inline-1.webp" alt="Illustration of coworkers talking over lunch in an office kitchen" width="1600" height="914" loading="lazy" decoding="async" /></p>
<h2 id="coffee-reduces-pain-and-prevents-retinal-damage">Coffee reduces pain and prevents retinal damage.</h2>
<p>A missing semicolon destroys thousands of lines of perfectly written and organized code in programming. How many times have you had this happen to you just because of this? Back in 2007, scientists discovered that coffee reduces pain by 48%.</p>
<p>Despite the fact that most developers wear glasses (because we are hipsters above all), studies have shown that drinking coffee can help prevent retinal damage. This time, the hero is not caffeine, but chlorogenic acid, another powerful antioxidant found in coffee beans.</p>
<h2 id="it-simply-gives-you-a-wing">It simply gives you a wing.</h2>
<p>This is yet another thing for which caffeine is not to blame. According to the <a href="https://pubmed.ncbi.nlm.nih.gov/21432699/" target="_blank" rel="noopener noreferrer">National Institute of Health</a>, people who drink coffee are 10% less likely to be depressed. As previously stated, this is not due to caffeine, as coke contains significant amounts of caffeine and has been linked to depression. Coffee’s antioxidants, according to scientists, are responsible for this benefit.</p>
<h2 id="even-the-smell-is-beneficial">Even the smell is beneficial.</h2>
<p>Another intriguing discovery is that the aroma of coffee stimulates the brain to produce proteins that are known to protect nerve cells from stress-related damage caused by sleep deprivation. Remember that the next time you stay up all night working on your next project!</p>
<p>Coffee consumption is one of our niche’s most common habits. However, it is not we who set the trend. A cup of coffee can be found in almost every profession that requires concentration and a clear mind, just look at novelists.</p>
<p>No, we did not start the trend, but we are “labeled” with it because programming is so common these days. After all, a cup of coffee is simply delicious.</p>
<p>Please share your thoughts in the comments section! Is there anything else you’d like to say</p>
]]></content:encoded>
    </item>
    <item>
      <title>Work from home with ease</title>
      <link>https://madhabdhakal.com.np/work-from-home-with-ease/</link>
      <guid isPermaLink="true">https://madhabdhakal.com.np/work-from-home-with-ease/</guid>
      <pubDate>Thu, 12 Aug 2021 11:02:14 GMT</pubDate>
      <dc:creator>Madhab Dhakal</dc:creator>
      <category>Experience</category>
      <description>Practical tips for working from home well: plan your day, stay tech-savvy, communicate clearly, set office hours, take regular breaks and look after your health.</description>
      <content:encoded><![CDATA[<p>Many organisations are establishing optional or required work-from-home policies in the wake of the emerging coronavirus outbreak. As a result, many of us are facing a unique situation. Working from home due to coronavirus may feel like a whole new universe, even if you’ve done it before: It’s most likely a surprise. It could be over a longer amount of time rather than just a day or two (and you have no idea how long it will stay). Your entire organisation is participating. Outside of work, you may not be able to socialise in person.</p>
<p><a href="https://madhabdhakal.com.np/work-from-home-with-ease/">These points</a> can help you succeed at both getting your work done and keeping your mental health:</p>
<h2 id="plan-your-day-ahead">Plan your day ahead</h2>
<p>This will allow you to reduce distractions and maximise your true productive times. For example, many people eat a small breakfast on their way to work, but when you get home, you may be tempted to eat a larger breakfast, which will slow you down for your early morning meeting. Or you may normally leave at 5 p.m., but your children arrive at 4 p.m., necessitating a shorter lunch to complete all of your work.</p>
<h2 id="be-tech-savvy">Be Tech-Savvy</h2>
<p><img src="https://madhabdhakal.com.np/images/blog/work-from-home-with-ease/inline-1.webp" alt="Illustration of a person on a video call with colleagues from an armchair at home" width="1600" height="1600" loading="lazy" decoding="async" /></p>
<p>As you will be doing the majority of your work on a computer, you must be computer literate. Everything from learning how to use different software to updating programs and keeping your computer running smoothly should be covered. A broken computer or Internet connection means no work, so you’ll need to be able to navigate your way around technical issues and concerns.</p>
<h2 id="brush-up-on-your-communication-skills">Brush up on your communication skills</h2>
<p>Because you will be working remotely, you must have great communication skills. Although smartphones, instant messaging, and applications such as <a href="https://www.skype.com/en/" target="_blank" rel="noopener noreferrer">Skype</a> allow us to stay in touch, the majority of our communication will be done via e-mail.  That’s why you must ensure that you are able to convey your message clearly and concisely.</p>
<h2 id="set-office-hours">Set office hours</h2>
<p>Make a time slot for each of the day’s activities. This aids in communicating with others while you’re at work and when you are at play. If you have little children, you may need to plan your work around their naps or the schedule of another caregiver so that you may work uninterrupted for a long period of time. You should also inform your loved ones that you are working and request them not to call you unless there is an emergency. Make your office hours known and obvious to your family, and make sure they respect your working hours.</p>
<h2 id="take-breaks">Take breaks</h2>
<p>Consider working in short bursts and taking breaks from the computer to stretch when planning your routine. This will be extremely beneficial to you on both a physical and mental level. You may forget to take breaks from your workstation if there isn’t a water cooler or coworkers nearby. You will be more productive if you take breaks.</p>
<h2 id="maintain-a-healthy-lifestyle">Maintain a healthy lifestyle</h2>
<p>Working from home encourages a sedentary lifestyle, and the proximity of the kitchen and refrigerator adds to the problem of weight gain for many telecommuters. Make sure to set aside time for regular exercise, keep nutritious snacks on hand, and drink enough water.</p>
<p>Working from home, in comparison to a regular job, can take some getting used to. However, if you keep these tips in mind, you’ll be able to take advantage of the flexibility that remote work provides while also feeling good and productive in your job.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Software Developer as an International Student</title>
      <link>https://madhabdhakal.com.np/software-developer-as-an-international-student/</link>
      <guid isPermaLink="true">https://madhabdhakal.com.np/software-developer-as-an-international-student/</guid>
      <pubDate>Tue, 10 Aug 2021 02:07:32 GMT</pubDate>
      <dc:creator>Madhab Dhakal</dc:creator>
      <category>Experience</category>
      <description>What it is really like to move to Australia as an international student and find work as a software developer, from arriving in 2018 to a first permanent role.</description>
      <content:encoded><![CDATA[<p>Australia is a wonderful country that attracts a big number of international students from all across the world. Students want to pursue higher education in Australia for a variety of reasons, including the high level of education, natural attractions, and culture.</p>
<p>When it came to deciding where I wanted to pursue my higher education, Australia was the first country that came to mind. I searched for universities and decided on the <a href="https://www.newcastle.edu.au/" target="_blank" rel="noopener noreferrer">University of Newcastle</a> in Newcastle. The tuition was a little expensive, but the teachers and educational quality were exceptional.</p>
<p><img src="https://madhabdhakal.com.np/images/blog/software-developer-as-an-international-student/inline-1.webp" alt="Sydney Opera House and Harbour Bridge at sunset, reflected in the water" width="1600" height="1067" loading="lazy" decoding="async" /></p>
<blockquote>
<p>Being an international student in Australia entails more than just attending university, studying, and working; it also entails learning about Australia’s incredible culture and way of life.</p>
</blockquote>
<p>In August of 2018, my partner and I arrived in Sydney. I was a little anxious at first because I was missing home so much. We were completely unfamiliar with the place, but we were lucky in that we had family here. My brother-in-law offered us a place to stay in his home. So that was a fantastic aspect of living in Sydney; otherwise, we would have had to pay more for our living expenses.</p>
<h2 id="life-in-university">Life in University</h2>
<p><img src="https://madhabdhakal.com.np/images/blog/software-developer-as-an-international-student/inline-2.webp" alt="University of Newcastle NUspace city campus building with a light rail tram passing in front" width="1500" height="1500" loading="lazy" decoding="async" /></p>
<p>When I first arrived at the <a href="https://www.newcastle.edu.au/" target="_blank" rel="noopener noreferrer">University of Newcastle</a>, everything seemed strange. There were students from various countries, including China, France, Russia, India, Pakistan, and the United States, as well as many local students who were extremely kind and supportive. But, as time passed, my nervousness faded, and I became accustomed to the study environment and culture. I made many friends from various countries, which greatly aided me in learning about their cultures. The educational quality was excellent, and I thoroughly enjoyed my time. Few of my teachers were from abroad, while others were from within the country and were extremely professional and knowledgeable in their fields.</p>
<p>The next step was to look for a job because I had to pay my own tuition fees, which are higher in Australian universities than in other countries. In any case, I began applying for jobs all over the place. On my orientation day, my professor advised me not to include too much experience on my resume. Only include information that is relevant to the position for which you are applying. So, I tailored my resume to the jobs and began applying online at every recruitment site I could find, but I received no response. Then I printed my resume and personally went to all the markets and stores to hand out my resume. At the very least, this allows you to interact with the employer directly.</p>
<p>Finally, I received a few calls and went for interviews, but I was always turned down for one reason: I was an ‘international student.’ I found an ad for a Junior Software Developer on the <a href="https://crmaus.com.au/" target="_blank" rel="noopener noreferrer">career page</a> and decided to apply, and after a few interviews, I was selected. It was only a two-month trial term, but they loved my work so much that they offered me a permanent position as a <a href="https://madhabdhakal.com.np/">Software Developer</a>. My salary helped me not only paying my entire tuition fee but also saved money for other expenses.</p>
<h2 id="increase-a-network">Increase a Network</h2>
<p>Increasing your network as much as possible is one of the simplest strategies to find work. Participate in a variety of career programs and community events. You can also volunteer for a period of time, which may lead to a part-time paid position later. Join university clubs to meet new people from all around the world and make new friends. This way, you’ll not only be able to learn about Australian trends and culture, but you’ll also have a better chance of landing a job.</p>
<p>Are you thinking about going to Australia as an international student but worried about the cost of living, finding a job, and so on? Don’t overthink it and just do it. As an international student myself, I can tell you that the first few months will be difficult, but you will enjoy living here after that. If you look hard enough, you’ll find a job. Nothing is impossible, believe me. If you work hard enough, you will most likely be given a good opportunity. If I can do it, so can you. Don’t be discouraged by any negativity, and keep moving. You’ll fall in love with this incredible country, its multi-cultural environment, and its food.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Top 7 Most Useful Tools for Software Developer</title>
      <link>https://madhabdhakal.com.np/top-7-most-useful-tools-for-software-developer/</link>
      <guid isPermaLink="true">https://madhabdhakal.com.np/top-7-most-useful-tools-for-software-developer/</guid>
      <pubDate>Tue, 29 Jun 2021 11:01:13 GMT</pubDate>
      <dc:creator>Madhab Dhakal</dc:creator>
      <category>Experience</category>
      <description>Seven useful tools for software developers: GitHub, CodePen, Azure, Buddy, Cloud IDE, Atom and Bootstrap, with what each one does and how it can help you.</description>
      <content:encoded><![CDATA[<p>Best software development tools are in high demand. The software industry is one of the largest and fastest-growing industries in the world.</p>
<p>The entire IT business is worth $5.2 trillion (2020), therefore it is not surprising that more and more individuals want to be a part of it. Even though there are over 21 million software developers in the world, there is still a shortage.</p>
<p>In this post, I’ll discuss some of my <a href="https://madhabdhakal.com.np/about/">findings</a> of the best and most valuable software development tools in 2021 and beyond, as well as what they do and how they may help you.</p>
<p>Let’s get started.</p>
<h2 id="what-is-the-definition-of-a-software-development-tool">What is the definition of a software development tool?</h2>
<p>A software development tool is an application that is used to create, maintain, support, and debug other software and applications. There are both commercial and free software development tools available; however, free tools typically have restricted functionality.</p>
<h2 id="what-types-of-software-development-tools-are-there">What Types of Software Development Tools Are There?</h2>
<p>Software development tools are classified into numerous sorts, each of which serves a distinct purpose. We covered a wide range of topics in our selection of the best and most useful software development tools.</p>
<h3 id="github">GitHub</h3>
<p><a href="https://github.com/" target="_blank" rel="noopener noreferrer">GitHub</a> is without a doubt the most popular software development platform available. It is defined as a web-based Git repository hosting service that functions similarly to Google Drive in terms of storing codes. You can submit your projects (public or private) to the site to keep them protected or to share with others.</p>
<p>The community is quite huge, and the project backbone is quite remarkable. It can be an excellent venue for anyone seeking collaborative development. GitHub is not a software development tool, but it will assist you in the process.</p>
<h3 id="codepen">Codepen</h3>
<p>If you are a front end developer, you should consider getting your hands on this (<a href="https://codepen.io/" target="_blank" rel="noopener noreferrer">Codepen</a>) amazing tool. It’s an excellent location to get ideas for web developers.</p>
<p>You can share your CSS, Javascript, and HTML problems with others on the platform to find a rapid solution.</p>
<p><img src="https://madhabdhakal.com.np/images/blog/top-7-most-useful-tools-for-software-developer/inline-1.webp" alt="Illustration of a team building a web page together, with code, charts and folders around them" width="1600" height="1067" loading="lazy" decoding="async" /></p>
<h3 id="azure">Azure</h3>
<p>For many developers who want to build, administer, and develop web apps, <a href="https://azure.microsoft.com/en-au/" target="_blank" rel="noopener noreferrer">Azure</a> is the way to go. It is very quick and supports a wide number of programming languages, devices, frameworks, and operating systems.</p>
<p>The system’s capacity to detect and reduce threats is our favourite Azure feature. Because Azure uses a secure cloud environment, it is believed to be optimal for programmes that require secret information.</p>
<h3 id="buddy">Buddy</h3>
<p><a href="https://buddy.works/" target="_blank" rel="noopener noreferrer">Buddy</a> is a web developer’s software development tool. In order to deploy, test, and create applications, the tool makes use of delivery pipelines.</p>
<p>The pipelines are simple to use because of a one-of-a-kind action system that allows you to arrange them as you like. When it comes to deployment, it strikes the mark. The configuration should take no longer than 15 minutes.</p>
<p>It executes builds in isolated containers and supports a diverse set of frameworks, task managers, and languages. The integration function, however, takes the cake. It is compatible with WordPress, Google, and AWS, to name a few.</p>
<h3 id="cloud-ide">Cloud IDE</h3>
<p>Are you having difficulties with programming languages? Here you will find solutions to your difficulties. Users can clone complete environments with ease using this online integrated environment application. Python, Perk, Ruby, PHP, C, and JavaScript are among the languages supported by <a href="https://aws.amazon.com/cloud9/" target="_blank" rel="noopener noreferrer">Cloud9 IDE</a>.</p>
<p>It’s simple to use and can be used to save time by setting breakpoints. The Code Completion part is the cherry on top, as it provides solid ideas for coding faster. Unlike the majority of other options, this one is designed for beginning users and has a built-in terminal with a command-line wizard.</p>
<h3 id="atom">Atom</h3>
<p><a href="https://atom.io/" target="_blank" rel="noopener noreferrer">Atom</a>, a well-known text editor that is unexpectedly free to use, must be included in any list of the finest software development tools. Developers will benefit greatly from this open-source tool.</p>
<p>You can change it to suit your needs without having to change the configuration file. The software is best renowned for its ability to run on all major operating systems, including Windows, Mac OS X, and Linux.</p>
<p>The autocomplete option, which speeds up writing, was our favourite element of this application. Thanks to a fantastic browser feature, Atom makes management a breeze. To edit and compare numerous files, you can even split the interface into several panes.</p>
<h3 id="bootstrap">Bootstrap</h3>
<p>Here’s a responsive framework that works well with CSS, JS, and HTML. It has various built-in features that make the process easier.</p>
<p><a href="https://getbootstrap.com/" target="_blank" rel="noopener noreferrer">Bootstrap’s</a> popularity has waned in recent years, but it’s still a good framework. It provides ready-to-use code blocks and is adept at ensuring uniformity. Make the most of its one-of-a-kind customising choices.</p>
]]></content:encoded>
    </item>
    <item>
      <title>How to get a job as a Software Developer</title>
      <link>https://madhabdhakal.com.np/how-to-get-a-job-as-a-software-developer/</link>
      <guid isPermaLink="true">https://madhabdhakal.com.np/how-to-get-a-job-as-a-software-developer/</guid>
      <pubDate>Sun, 13 Jun 2021 23:53:35 GMT</pubDate>
      <dc:creator>Madhab Dhakal</dc:creator>
      <category>Experience</category>
      <description>How to get a job as a software developer: the main roles, the core and soft skills employers want, and practical ways to build a portfolio and get hired.</description>
      <content:encoded><![CDATA[<p>Web and Software Developer (also known as programming and engineering) is a rewarding profession. You get to create amazing new technology that alters how people live and work. Add to that the fact that the computer technology business is fast expanding and hiring, and learning to code makes a lot of sense.</p>
<p>The main attraction of working in web or software development is the potential earnings. As of May 2021, the median annual wage for computer and information technology employment was $95,115, according to the <a href="https://joboutlook.gov.au/occupations/software-and-applications-programmers?occupationCode=2613" target="_blank" rel="noopener noreferrer">Australian Government Job Outlook</a>. And, most of all, it does not necessitate advanced degrees or decades of expertise. The job market for tech expertise is so competitive that those with the right talents may fetch six-figure salaries.</p>
<p>However, a daily commitment is needed to master the languages that a developer, programmer, or engineer needs to be in demand. You must first learn the fundamentals, such as HTML, and then advance your skills to the point where you are an expert in a few languages that employers need.</p>
<p>If you’re thinking about a career in web or software development, this <a href="https://madhabdhakal.com.np/how-to-get-a-job-as-a-software-developer/">article</a> is a fantastic place to start. We’ll go over the most popular tech careers, explain to you how to get the skills you need, and give you some pointers on how to get your first job as a developer, programmer, or engineer.</p>
<h2 id="types-of-jobs-for-software-developers-engineers-and-programmers">Types of jobs for Software Developers, Engineers, and Programmers</h2>
<p>As with other careers, there are different specializations within web and software development that you can pursue. It is critical to have a clear idea of the job you desire so that you can take the proper steps to become qualified and being hired.</p>
<p>According to numerous web sources, the roles listed below are a selection of the most popular tech jobs:</p>
<ul>
<li><strong>Software Programmer</strong> – Write the underlying code that makes software function.</li>
<li><strong>Software Developer</strong> – Write code while also engaging in software conception (note that “software developer,” “software programmer,” and “software engineer” are frequently considered as equivalent job titles by employers, but there are some minor differences).</li>
<li><strong>Solutions Architect</strong> – Map out the end-to-end plan for complicated tech projects.</li>
<li><strong>Mobile Developer</strong> – Build apps for phones or tablets (most specialize in either Android or iOS development).</li>
<li><strong>Front-end web developer</strong> – Collaborate with designers to bring functionality to a website.</li>
<li><strong>Back-end web developer</strong> – Connect websites with the proper servers and databases.</li>
<li><strong>QA Engineer</strong> – Test and debug software and apps to ensure optimal performance.</li>
</ul>
<p>The examples above are only a few of the many possible career pathways for a developer/engineer/programmer. Conduct more research to identify which occupations are in high demand in your area, which pay the best, and which require the languages/skills you want to study.</p>
<h2 id="essential-skills-for-a-job-as-a-web-or-software-developer">Essential Skills for a job as a web or Software Developer</h2>
<p>To be successful, most jobs necessitate a combination of core skills (job-related knowledge) and soft skills (personality traits). Let’s have a look at the various talents required to get recruited as a developer.</p>
<h2 id="core-skills">Core Skills</h2>
<p>The understanding of the appropriate programming languages will always be essential to acquire a developer or engineer employment. The best ones are determined by the specific position and the platform/language on which the company’s software is created. The following are a few of the most popular coding languages that employers are looking for:</p>
<ul>
<li>C++</li>
<li>C#</li>
<li>Java</li>
<li>JavaScript</li>
<li>Angular</li>
<li>Python</li>
<li>Ruby</li>
<li>PHP</li>
<li>CSS</li>
<li>SQL</li>
</ul>
<p>Aside from being fluent in the appropriate programming languages, some employers may want you to have prior expertise with specific applications or tools (i.g <a href="https://github.com/" target="_blank" rel="noopener noreferrer">GitHub</a>, <a href="https://visualstudio.microsoft.com/" target="_blank" rel="noopener noreferrer">Microsoft Visual Studio</a>, <a href="https://analytics.google.com/analytics/" target="_blank" rel="noopener noreferrer">Google Analytics</a>).</p>
<h2 id="soft-skills">Soft Skills</h2>
<p>Even if soft skills aren’t as vital as coding knowledge, they can help you stand out from the crowd and flourish in your future profession. Here are a few personality traits that will help you become a well-rounded programmer:</p>
<ul>
<li><strong>Problem-solving</strong> – Employers value the ability to tackle complex coding problems and comprehend why something is programmed in a certain way.</li>
<li><strong>Team player</strong> – Few programmers work completely alone. Web developers work alongside designers, and software engineers/programmers are frequently part of huge teams.</li>
<li><strong>Time management</strong> – Software developers are frequently on a tight timeline. Even if you have excellent coding skills, you will need to manage your time effectively.</li>
<li><strong>Passion for technology and knowledge of the space</strong> – The technological landscape is always changing. It is critical to be informed of what is coming next and to constantly learn new abilities.</li>
</ul>
<h2 id="how-to-get-a-job-as-a-developer-programmer-or-engineer">How to Get a Job as a Developer, Programmer, or Engineer</h2>
<p>Once you’ve mastered a few coding languages, you can begin applying for jobs. While the job market for developers, programmers, and engineers is now favorable to candidates, it is still advisable to put in extra effort when looking for suitable employment. Here are some pointers to help you land your first job in web or software development:</p>
<h2 id="create-your-own-websites-apps-and-software">Create your own websites, apps, and software.</h2>
<p>Learning coding languages alone will not get you a job. You must show potential employers the apps and websites that you created to demonstrate your expertise. It’s also a great practice for applying what you’ve learned as you learn to code.</p>
<p>Who knows, perhaps you’ll build something remarkable that turns into a profitable business. Even if you don’t get the job, you’ll have work samples to show in interviews.</p>
<h2 id="contribute-to-an-open-source-project">Contribute to an open-source project.</h2>
<p>The term “open source” refers to software code that is freely available on the internet. You may observe how well-known applications were created and alter or contribute to the code.</p>
<p>Participating in an open-source project will allow you to hone your talents and establish a portfolio. It’s also a terrific method to network, as many projects have a thriving community of tech enthusiasts.</p>
<h2 id="attend-a-hackathon-and-demonstrate-your-abilities">Attend a hackathon and demonstrate your abilities.</h2>
<p>Hackathons are popular gatherings of developers who compete in coding competitions. Attending these events is not only an excellent method to network and demonstrate your abilities. It may also help you connect with employers since many organizations support and host hackathons in order to recruit programmers and engineers.</p>
<h2 id="start-by-putting-your-foot-in-the-door">Start by putting your foot in the door.</h2>
<p>Even if your ultimate objective is to work as a high-paying web or software developer, you may need to start by filling out your resume with some entry-level roles. Don’t be afraid to start as a junior developer or QA analyst. You’ll be able to polish your talents while being paid, and you’ll have a good chance of being promoted to a mid-level position when you’re ready.</p>
<p>Remember that learning to code can take a year or more, depending on the languages you choose and how much time and effort you put in. However, if you find and stick to a path that works for you, you could soon have a fascinating and rewarding profession.</p>
]]></content:encoded>
    </item>
    <item>
      <title>A day in the life of a Software Developer</title>
      <link>https://madhabdhakal.com.np/a-day-in-the-life-of-a-software-developer/</link>
      <guid isPermaLink="true">https://madhabdhakal.com.np/a-day-in-the-life-of-a-software-developer/</guid>
      <pubDate>Sat, 12 Jun 2021 05:07:34 GMT</pubDate>
      <dc:creator>Madhab Dhakal</dc:creator>
      <category>Experience</category>
      <description>What a typical day looks like for a software developer, from morning stand-ups and two-week sprints to code reviews, design documents and deployments.</description>
      <content:encoded><![CDATA[<p>Every profession has a sense of discovery about it. As we pass by the throngs of commuters in the morning, we wonder, “What do those people do all day?” Is the money they make worth it? What happens at their workplace?</p>
<p>As a relatively new field, software development is cloaked in more secrecy than many other fields. So we went behind the scenes to see what a regular day for a software developer looks like.</p>
<p>Before we begin, two disclaimers should be made: Obviously, the job changes from day to day. Furthermore, each organisation has its own culture and quirks. We’ll begin by providing some context for project work.</p>
<h2 id="sprints-and-the-mornings">Sprints and the Mornings</h2>
<p>If you’re working as part of an <a href="https://www.atlassian.com/agile" target="_blank" rel="noopener noreferrer">Agile</a> development team, you’ll be part of a group of at least five people and possibly as many as ten. (Among other disciplines, Agile development comprises Extreme Programming [XP], Scrum, Crystal, Dynamic Systems Development Method [DSDM], Lean Development, and Feature-Driven Development [FDD].)</p>
<p>In general, you’ll work in “sprints”: The notion is that rather of working on a major project all at once, it is divided into two-week sprints. Everyone on the development team would take on a task that was appropriate for them (either chosen by the developer or assigned by their manager/supervisor).</p>
<p>Then, every morning, a shorter session is held to assess progress. These would normally consist of 10-15 minute stand-up meetings in which everyone states what they’ve accomplished, what they’re struggling or blocked with (if anything), and what they’re going to do that day.</p>
<h2 id="daily-routine">Daily Routine</h2>
<p>So here’s how your day might go:</p>
<p>9 am: Come in, check your emails, prepare short, medium, and long-term to-do lists, and schedule meetings.</p>
<p>10 am: Set up a stand-up meeting to schedule the day and organise teamwork (if any)</p>
<p>Then there’s project work: Perform coding, problem-solving, and development tasks. You will seek advice at various points (or give advice). Depending on the situation, you could talk or send a message via Slack or IRC (a form of chat popular among software devs). If members of your team are available, you may go to a whiteboard or sit together to diagram and hash out a solution. (You might then go back to struggling!)</p>
<p>Depending on the organization, you’d normally create a “change request” or “pull request” summarising proposed modifications, which someone else would review. They may have their own ideas or solutions. This would most likely get you to lunch. Meetings and longer-term initiatives are frequently held in the afternoon.</p>
<h2 id="afternoon-and-project-launches">Afternoon and Project Launches</h2>
<p>When starting a new project, you are given a list of requirements, after which you must prepare a design document. Typically, this is a 2-3 page document detailing the problem and recommended remedy.</p>
<p>Typically, you would explain your approach to the problem and explore other possibilities you examined and why you rejected them. You would present it to your boss and the rest of the team. For these larger challenges or projects, you’d gain approval before you begin, and you’d know you’re adopting an approved approach and that people are on board with your ideas/plans.</p>
<p>Depending on the organization, you would normally (alone or with a coworker) deploy the project to production after changing your features. Even if you’ve thoroughly tested everything, make sure it works on your own work computer at this point: You may uncover issues after deployment, and you will need to solve bugs based on feedback from colleagues and users/customers.</p>
<h2 id="end-of-day">End of Day</h2>
<p>Your employer determines when and how your working day ends: It is normally after the typical 8-hour workday, although during “crunch time” for projects, you may be expected to stay until a specific task is completed.</p>
<p>Consider a <a href="https://madhabdhakal.com.np/about/">software developer’s</a> everyday activity to involve problem-solving: The challenges to be addressed are minor and cumulative, culminating in the development of a feasible (and satisfying) solution when the project is completed and the team has collaborated.</p>
]]></content:encoded>
    </item>
    <item>
      <title>My First Day at Office</title>
      <link>https://madhabdhakal.com.np/first-day-at-office/</link>
      <guid isPermaLink="true">https://madhabdhakal.com.np/first-day-at-office/</guid>
      <pubDate>Sun, 30 May 2021 04:14:58 GMT</pubDate>
      <dc:creator>Madhab Dhakal</dc:creator>
      <category>Experience</category>
      <description>A light-hearted look back at a first day in the IT industry in June 2014: the expectations, the reality, and three lessons from the first hours at the office.</description>
      <content:encoded><![CDATA[<p>June 8th, 2014</p>
<p>Do you work for a software company? Do you have your story about <a href="https://madhabdhakal.com.np/first-day-at-office/">First Day at Office</a> to share?  Raise your hands if you are.</p>
<p>I’m like you. I joined the IT industry 2 years ago with a dream to learn new things, a dream to earn money, a dream to own a car, and a dream to lead a quality life. Looking back, I achieved a few of them. But, the price that I had to pay was HUGE. It is absolutely impossible for me to recoup what I lost. Yes, friends… in a quest to be a successful software engineer, I lost a precious treasure… I lost god’s gift… I lost a crown jewel… Yes… it is nothing but my shiny black hair.</p>
<p>Today, I’m going to share a page from my IT industry experience.</p>
<h2 id="getting-ready-on-the-first-day">Getting ready on the first day</h2>
<p>June 8th, 2014 – a memorable day in my life. The day I started to earn my living. I got up very early and started to get ready. Neatly combed hair – yes, I had lots of hair at that time; clean shave; wore neatly ironed formal wear including a tie, and squeezed into my newly bought black shoes. With a pile of certificates and mark sheets in hand, I started walking to the office.</p>
<h2 id="dreaming-about-the-office-environment">Dreaming about the office environment</h2>
<p><img src="https://madhabdhakal.com.np/images/blog/first-day-at-office/inline-1.webp" alt="Illustration of colleagues talking around a desk in front of a board of notes" width="1600" height="1000" loading="lazy" decoding="async" /></p>
<p>While walking to the office, I started dreaming about how the office would be – a young lady at the reception with a beautiful smile welcoming me; my HR manager in coat, suit and tie eagerly waiting for my arrival; my team members lined up on both the sides of the walkway and cheerfully clapping their hands and I was walking between them like a hero; my manager standing with a flower bouquet in his hand to receive me.</p>
<h2 id="surprise-shock-after-reaching-the-office">Surprise / Shock after reaching the office</h2>
<p>With all these dreams, I reached the office by 8 am and opened the doors of <a href="https://mos.com.np/" target="_blank" rel="noopener noreferrer">Mercantile Pvt. Ltd.</a></p>
<p>What I saw there was shocking. There was a lady near the reception, but with a mopping stick and a bucket full of water cleaning the floor. My HR manager wasn’t there, but an old security guard sleeping at the reception desk. The whole office was empty. Oh! What happened to my team members? Are they hiding in the rooms to give me a surprise? What happened to my manager? Has he gone out to buy a flower bouquet?</p>
<p>With all these thoughts going in my mind, I shook the security guard and woke him up. On seeing me in full formals and tie, he thought I am the CEO of the company. In a shock, he got up and gave me a firm salute. I said, “Sir! I’m a fresher and today is my first working day”. When I told him that, he gave me a very strange look. He looked at me from top to bottom and asked me to sit in the lobby.</p>
<h2 id="people-entering-office">People entering office</h2>
<p>I started to wait for the HR manager. I waited … waited… and waited… Time is now 9 o’clock and I saw the first soul entering the office. He looked as if he just got up from the bed and didn’t even have time to take a bath. His hair was standing stiff with spikes. He was wearing a pant and a T-shirt. I couldn’t understand why he was wearing coolers even when he is inside the building.</p>
<p>Minutes passed… another guy entered the office. He was wearing a tight red T-shirt and jeans pant that was torn all over. My first impression on seeing that guy was… “Maybe he is from a poor family. He doesn’t even have money to buy good clothes”. Later, I was told that it is a fashion to wear tight T-shirts and torn jeans pants.</p>
<p>In the few hours that I waited in the waiting room, I watched nearly 100 people getting into the office. The HR manager came in at 10.30 am and took care of all the formalities.</p>
<h2 id="lessons-conclusion">Lessons / Conclusion</h2>
<p>Friends, I learned 3 lessons in the first few hours of my IT career:</p>
<p>•   Never go early to the office – software engineers start their day at 9:30</p>
<p>•   IT engineers dress up STRANGE – none of them wears formals, none of them wears polished shoes, none of them wears a tie, and above all, none of them even comb their hair.</p>
<p>•   The IT field is staffed primarily by men; the ratio of male to female software engineers is on the order of 10 to 1. There are a number of good-looking girls. But, pretty much all the guys are average. So, for the girls who want to find a man “The odds are very good, but the goods are odd”</p>
<p>Friends, I lost a few hair strands right on the first day at work – because of the excessive stress caused by waiting. This is just the first page of my IT industry experience. You’ll see many more pages in my subsequent speeches.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
