Showing posts from December, 2018

Documentation is important

Self-documenting code is one of the biggest myth in the software development industry. It is common for someone to think that their code is pretty much self-explanatory, either because it is so simple or they are the author so they should have known it better than anybody else. However, not all of us can realize the fact that while the code is pretty transparent for ourselves, other would not have the aspect as we do despite how much experienced they are in the field. In this blog post, I would like to reason that code comments have a lot of value and documentation has more value than just explaining how functions / software works. From that all of us can understand, code documentation is basically a collection of descriptions to explain what the codebase does and how it can be used. It can be a simple explanatory comment that locates above a function or a block of code, or a full fledged developer handbook, usually complete with prescriptive style dos and don'ts overviews of eac

Angular vs NodeJS

Javascript has been around for awhile and it is a simple yet powerful client-side language and now with the help of frameworks and platforms, it can also be used as a server-side language. Nowadays, more and more frameworks and platforms are released and that leaves us a tough decision to choose. Today, I would take Angular framework and NodeJS platform in consideration, since they are both powerful for front-end and back-end development. They feature rich cross-platform web app and enable developers to make a Single Page Application easier while maintaining Javascript as the main language, instead of AJAX, which is a whole new set of syntax to learn. Let's dive into it. Angular in general is an open source web application framework that is maintained by Google. It comes with two forms (or versions) which is Angular 1.X, which is usually referred as AngularJS, and the rewritten version of itself Angular 2+, which used mostly Typescript. With AngularJS, it can be added to a HTML p

Why favor composition over inheritance?

In the early stage of software engineering, there was no such thing is composition or inheritance, it only exist in the context of object-oriented programming. When object-oriented programming was introduced, every one pretty much ignored it until user interface heavily based on it. One of the most popular object-oriented design principles is to favor composition over inheritance.  I have been asking people about the advantages of using composition over inheritance and the answers always suggest that it makes your code so much simpler and increase its flexibility. That is somewhat an acceptable answer, but I thought, to convince you, I would need more than just simpler and maintainability, so I found a  this article  that provide five reasons and I will summarize it. Firstly, there are a lot of object-oriented programming languages out there, but let's take Java for consideration, since a lot of developers (including the new one) know how to use it. With composition, when class A

What is an Anti-Pattern?

In this week blog, I'm going to write about anti-pattern, mainly because I have seen the term a lot and think to myself that I should at least know something about it. This week blog is based on  this article . For a start, we need to understand what algorithm and pattern is. Algorithm has been around for a really long time and considered to be the most fundamental concepts in software engineering. The early concept of algorithm as it is written in "Fundamental Algorithms" by Donald Knuth, which was published in 1968, mainly provides Calculus-based proofs of its solution and code examples in outdated language like Algol or MIX Assembly. However, a lot of the subject was covered is still widely used today, for example like singly / double linked list, garbage collection or trees, etc. and it remains to be valid solutions to common software engineering problems for more than 5 decades and still going strong. A "pattern" can be seen as a more general form of an