Thoughts on Software

# Tag: General Programming

• ## Why We Accumulate Technical Debt

Everyone eventually rewrites either a small piece of code, an entire application or framework or refactor their work, and this process is in a constant cycle. You notice this everywhere, from small applications, libraries, frameworks and even Enterprise Software. Should we be concerned? Why is this such a common theme?

For Applications, one of the primary reasons for refactoring or rewriting is technical debt, so let’s have a look at some common reasons for technical debt, and I attempt to propose some solutions to each point.

The process of taking away or removing characteristics from something in order to reduce it to a set of essential characteristics

The idea behind abstraction is to hide complexity – we try to hide away all the complex details. For example, you may want to persist some type of data – that’s the high level view of what we want to be able to do. Whether we’re storing that in a text file, a database or what not, we shouldn’t really care, that’s someone else’s problem, that is an implementation detail – one less thing to worry about, all we know is that our data will be persisted somewhere. We don’t really care where or how.

• ## Youtube Channels for Developers

Throughout the years, I have learned a lot from free online video’s, so, I thought I’d share some of the channels that I’m subscribed to on Youtube in the hope’s that someone finds them useful as much as I have.

• ## Functional Code : Focus More on Solving Problems

I’ve recently been writing a lot of lazy functional code in C# that allows for better re-usability and cleaner solution than it would have been if it had been written in an Object Oriented manner. This also helped in lower level code by focusing on steps to solve a problem rather than worrying about scoping and sequence of execution.