miércoles, 21 de febrero de 2018

Blog Activity: Understanding the SOLID Principles

SOLID principles are a good option to provide refraction or in other word to optimize the code that were creating, these kind of tips and tools helps programmers to get the right idea and the best structure to create a program.

For the SRP it’s important to keep an eye on what is going to be removed from the code, if it provoke an issue or something important is removed then it could impact in a negative way the result or the expected exit from the program.

Now, for the OCP keeping the most important stuff as private and that could not be modified, but for some other sharing issues we find a common problem when creating a new class that inherit from another, one thing that I can use also for some programming languages are friendly classes, for me is the best answer to solve this kind of problems when we share between some classes information or content and that other class is not able to use.

LSP is another element for the code to get every class working and cooperate between each one, the only thing here is that in this principle modification is allowed, sometimes this option is a good one because you don't depend too much on inheritance and could make the code independent for each class, this does not mean that you need to discard everything of inheritance, but to reduce the amount of use.

For ISP, looks simple and to have difference classes with the function each one can call is a good idea, you avoid any issue from memory and to execute classes that now the program that is running does not require it.

Finally, for DIP, instead of making references to classes, with this principle we can create reference to interfaces or abstract classes.


Every part of the structure of a code is very important not only for the syntax, but also for the way the programmer writes the code, once we remember this and apply (of course) you are going to be able to create and design code in no time.

miércoles, 7 de febrero de 2018

Blog Entry: Software Craftsmanship

A long time the division between programmers and designers (or architects) has been marked since years and for the required job that every role needs to be implemented on a project.

It's important to distinguish again that there are traditional methods and agile methods for a project management and development. With this, the election and decision for choosing the right method to create the project depends on the requirements and the time and resources that the person/team is going to used and in terms on time the amount of inverted time for the different phases of the project.

Now, one thing that it’s important to consider is that every person on the project has its main role. from my point of view a person is not able to be architect and a programmer at the same time, you need to focus only on one thing, not because of judging or even having lack of ability, but it's more on the sense that one person needs to focus on the main role he or she has. Now, sometimes being all in one could be valid when you are a small group or you are the only element of a project is taking all the roles from a project.

Having a software strategy is important to have a method to create the right project, normally is followed by a method because once there is a team with specialized areas everyone needs to follow the right process.

Normally, Agile software (like in this case software craftsmanship) keeps quality high so the schedules should not be affected.

For me Agile software is a good tool to create projects this kind of methods are applied correctly when we are creating the project for something that is not formal or even as a student it’s nice to use it, but when we are talking about a professional and serious project the team and specially the manager needs to take the right decision about this
Oh, and for a project the adherence is important not only to keep the record of what we are doing but also to check loses or incomings from the project.

Just before I finish this blog entry I would like to leave the Agile manifesto, something that could help to make a good reflection about any project where agile software development:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Also, for more information (I used this webpage too to get more information) I recommend you to access this page to check the values and the principles.

http://www.ambysoft.com/essays/agileManifesto.html