<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: SDevr</title>
    <description>The latest articles on DEV Community by SDevr (@sdevr).</description>
    <link>https://dev.to/sdevr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1429559%2F8e282001-c0e5-4d88-9a00-253eb39909d8.png</url>
      <title>DEV Community: SDevr</title>
      <link>https://dev.to/sdevr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sdevr"/>
    <language>en</language>
    <item>
      <title>Rules engine or not?</title>
      <dc:creator>SDevr</dc:creator>
      <pubDate>Fri, 02 May 2025 15:58:03 +0000</pubDate>
      <link>https://dev.to/sdevr/rules-engine-or-not-2743</link>
      <guid>https://dev.to/sdevr/rules-engine-or-not-2743</guid>
      <description>&lt;p&gt;I've been tasked to look into one of the existing business logic wrapped around the rules engine to calculate the cost of products, and come up with  better solution to address some of the issues identified within existing system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem Statement
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;I want to calculate the cost and/or time required to manufacture product X.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We have a complex Business requirement. We manufacture a wide range of products. Every product is customized to meet customer needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Existing Architecture
&lt;/h2&gt;

&lt;p&gt;As of now, we have been working through something called "Rules Engine". As the name suggests, calculation for the cost/time product requires to manufacture goes through a set of pre-defined rules. Rules are stored in a database with a very complex table design. Rules engine has evolved from simple if conditions to loops, go-to, etc... it also stores formulas for the calculations. Rules of the Rules engine are managed by users.&lt;/p&gt;

&lt;p&gt;the table design looks something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc3g54kacvfc2o478otp3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc3g54kacvfc2o478otp3.png" alt="Image description" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Need for restructuring/reengineering
&lt;/h2&gt;

&lt;p&gt;Since the release of the project (early 2000), rules are rarely touched. It has grown to be more complex, the last feature added within the rules engine was in 2019. &lt;/p&gt;

&lt;p&gt;users have complained about the difficulties in understanding existing rules. Since they do not have the testing environment to test their changes, they are less inclined to make any changes to existing rules.&lt;/p&gt;

&lt;p&gt;This is causing them grief. They would like to see something different.&lt;/p&gt;

&lt;h2&gt;
  
  
  Need Advice
&lt;/h2&gt;

&lt;p&gt;I believe there are multiple ways to solve this issue. but I am not sure which one is the best. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;simplify existing rules engine:&lt;br&gt;
This means, removing many of the complex conditional statements support from the existing rules engine, this may make it easy to read and understand the rules engine. However, the GO-TO is the most painful one... I don't think something like loop and go-to should exist in the rules engine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;hard-coded rules with some flexibility with configurations:&lt;br&gt;
This means, moving all existing rules from the table to the hard-coded functions. This means, now responsibility of the maintaining shift from users to developers. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;new rules engine&lt;br&gt;
I don't know what and how to approach this. Many of the business need meets the "Rules Engine" requirement. But striking the balance is important. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DSLs&lt;br&gt;
"Domain Specific Language" (DSL) is also one of the ways to resolve this issue. However, I think this might be an overkill. We don't have the resources to meet the development requirements.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I would like to know what you'd do in this situation.&lt;/p&gt;

&lt;p&gt;Thanks.&lt;br&gt;
:)&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>A project should be run by People, Not Configurations!</title>
      <dc:creator>SDevr</dc:creator>
      <pubDate>Wed, 23 Apr 2025 01:42:26 +0000</pubDate>
      <link>https://dev.to/sdevr/a-project-should-be-run-by-people-not-configurations-4ld2</link>
      <guid>https://dev.to/sdevr/a-project-should-be-run-by-people-not-configurations-4ld2</guid>
      <description></description>
      <category>discuss</category>
      <category>softwareengineering</category>
      <category>productivity</category>
      <category>management</category>
    </item>
    <item>
      <title>WTFs?</title>
      <dc:creator>SDevr</dc:creator>
      <pubDate>Thu, 12 Dec 2024 15:41:37 +0000</pubDate>
      <link>https://dev.to/sdevr/wtfs-2mjb</link>
      <guid>https://dev.to/sdevr/wtfs-2mjb</guid>
      <description>&lt;p&gt;There are so many WTFs moments I have been involved with, I feel like I should start my own Daily WTFs.&lt;/p&gt;

&lt;p&gt;Day hasn't even started and I got request to test features, Here's the request:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CRUD &lt;/li&gt;
&lt;li&gt;Try  from  and &lt;/li&gt;
&lt;li&gt;Try to create/update  and make sure it returns &lt;/li&gt;
&lt;li&gt;'s context menu &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mind you no Jira stories. I was involved in initial feature discussions so I do have some idea about the use cases / user requests. Other 3 request are somewhat reasonable, but the first one, CRUD? &lt;/p&gt;

&lt;p&gt;Happy Coding.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>Coding with Music On!</title>
      <dc:creator>SDevr</dc:creator>
      <pubDate>Fri, 06 Dec 2024 14:56:53 +0000</pubDate>
      <link>https://dev.to/sdevr/coding-with-music-on-n26</link>
      <guid>https://dev.to/sdevr/coding-with-music-on-n26</guid>
      <description>&lt;p&gt;I just felt an urge to share this. Being not huge fan of working from office, Today, I started off with my headphones; music on, and Noise Cancellation activated. Completely forgot that I was working from office until I stood up for a coffee refill.&lt;/p&gt;

&lt;p&gt;You guys must have experienced this at some point. but I was so surprised by it that, that it felt almost unbelievable. Like it was switching between dimensions. I did not realize how much focused I was at my tasks.&lt;/p&gt;

&lt;p&gt;Anyways, Going back to whatever I was doing before.&lt;/p&gt;

&lt;p&gt;Happy Coding.&lt;br&gt;
:)&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>The company is not your family!</title>
      <dc:creator>SDevr</dc:creator>
      <pubDate>Fri, 08 Nov 2024 12:30:41 +0000</pubDate>
      <link>https://dev.to/sdevr/the-company-is-not-your-family-1328</link>
      <guid>https://dev.to/sdevr/the-company-is-not-your-family-1328</guid>
      <description>&lt;p&gt;How much do you agree with this title?&lt;/p&gt;

&lt;p&gt;I was saddened to learn something that made me think about this. CEOs talk about youth jumping between companies to gain their interests. But do they ever discuss company practices that make everyone easily replaceable with no job security?&lt;/p&gt;

&lt;p&gt;And if this is true, how do you manage life outside of work? I spend most time at work, and out of work, I am back to my computer working on something that is again either related to work or, some side project that never finishes.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>3 years of development</title>
      <dc:creator>SDevr</dc:creator>
      <pubDate>Thu, 07 Nov 2024 00:14:44 +0000</pubDate>
      <link>https://dev.to/sdevr/3-years-of-development-54m7</link>
      <guid>https://dev.to/sdevr/3-years-of-development-54m7</guid>
      <description>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;I am a developer with a few years of experience and still working on my first full-time job.&lt;/p&gt;

&lt;p&gt;Today, I want to share the experience I had in the last 3 years working as a full-stack developer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Starts from Here!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We (not me) have been working on the project for almost 4 years to solve some manufacturing issues and digitize manufacturing tasks. The project was started by a few smart people with a small team of five developers.&lt;/p&gt;

&lt;p&gt;Heavy research was done, plans were made, and things were developed in an agile fashion. A year of continuous product rollouts.&lt;/p&gt;

&lt;p&gt;Soon after that, the developers started leaving, and three of them left within the following year. That's when two new developers were hired; one experienced and one junior.&lt;/p&gt;

&lt;p&gt;One of the new hires was me. I joined the team as a junior developer. With not much experience at Angular, I started picking up the code fairly quickly.&lt;/p&gt;

&lt;p&gt;Much to my surprise, the IT Manager and one more developer left right after the completion of my three months of probation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Happens Next?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Last remaining developer (part of the original team) fills in the role of Manager. It becomes a team of two Devs and an IT Manager.&lt;/p&gt;

&lt;p&gt;With no new hires, We kept the pace up for the next 2 years. And that's when things started to go wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Although the team got flattened, we somehow managed to keep the productivity up (for a while). New features, New rollouts. We were working and picking new projects as soon as one was done. Without waiting for the feedback, partially implemented modules were rolled out. As we get the feedback from previous modules, we'd have to jump back to work on those, then switch back to the current project and implement that.&lt;/p&gt;

&lt;p&gt;By the end of my second year in the company,  without anyone to supervise, I realized we kind of took everything for granted. Large PRs, far too many changes at once, many bug reports, almost no code reviews, and no proper testing.&lt;/p&gt;

&lt;p&gt;There was little to no motivation to fix these issues. I was to be blamed as well. So, I decided to pause for a moment and start fixing some of these things. The timing was right as well. After the last major rollout, we were not expecting any major updates for the next couple of weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, How Difficult can it be?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I started encouraging and requesting my colleagues for code reviews. You might argue the team of 2 does not require reviews. But I think otherwise. &lt;/p&gt;

&lt;p&gt;I started spending more time on PR Reviews, deliberately checking for bad practices, and looking out for potential issues. That did work to a certain extent. But as PR got heavier, my review process suffered.&lt;/p&gt;

&lt;p&gt;Tried rejecting PRs, but that created a rift between us.&lt;/p&gt;

&lt;p&gt;I tried expressing the performance issues behind running the CPU-intensive tasks from APIs. Eventually, gets approved by the manager.&lt;/p&gt;

&lt;p&gt;There were other occasions where I felt like my opinions did not matter. This made me think twice before sharing anything within team meetings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;During the whole damage control process, I became the bad guy among the three of us, received more criticism, got yelled at by the client without letting me explain the reason for the action from our team, and had disputes over multiple things with the network administrator with no support for resolutions.&lt;/p&gt;

&lt;p&gt;I am the youngest of them and not mature enough to handle some things on my own. I struggled a lot without proper guidance. I am not sure how well things will progress, but for now, I have a lot to clean up.&lt;/p&gt;

&lt;p&gt;I learnt a lot from my experience (and I am still learning from it). I started off writing this article as a journal. It was not meant to be shared, but having someone else's perspective can help a lot. So, counting on you... :)&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
