If you have developed any piece of working code within a team, you may have noticed that several different people often come up with very different solutions for building the same thing. Both of them could work equally well in terms of the functional requiremens of the application, but I believe there is much more to software than that.
+ +While looking at different solutions, you may notice that some solutions may use more lines of code than others; some will optimize the use of dependencies; there will be one that feels like the more straight forward solution; etc. Perhaps you have found yourself in an argument (with a colleague or with yourself) trying to figure out what would be the best way to implement some requirement. I strongly believe that the best we can hope for is for code to be written so that it allows developers to iterate quickly, so that they can test, debug, provide bug fixes and release new features quickly, easily and safely.
+I have seen two major ideas in the Software Development industry that drive us to think in those terms: Test Driven Develpment (TDD) and Continuous Delivery (CD). They provide broad statements about how to build software, but when followed properly, you end up in a team that is highly productive. However, I have also found that a lot of people don't follow the ideas properly in their day to day practice, maybe due to lack of understanding or lack of discipline. Therefore, I have decided to write a series of blog posts in which I illustrate the process of building real sofware, keeping productivity in mind. I won't be giving in depth discussions about TDD and CI / CD, there are already great sources of information for that; I will rather provide examples to help developers to see how to apply those ideas to the development of real useful software.
+What will we build?
+Some time ago I discovered an amazing site for coding challenes: Coding Challenges. I loved it because, instead of presenting the reader with hypothetical questions that are hard to relate to real software, it shows you how some real software tools are expected to work and then guide you through the process of building them yourself. The challenges on their own are a great source for any aspiring developer who wants to learn a new programming language or wants to understand the process of building some real world aplications.
+I will use the challenges as inspiration for the series of blog posts, which I wil call Coding Challenes Solutions. They may not be the only source of inspiration I will use, but certainly a very important one.
+Let's get started!
++ + + + + +