Life Cycles

--Originally published at Computer Systems Engineering

When we want to develope a program, the best thing we could do is follow this phases that we call program developement life cycle. This cycle consists of 6 steps:

  1. Problem definition
  2. Analysis
  3. Algorithm Developement
  4. Coding and Documentation
  5. Testing and Debugging
  6. Mantainance

1) The planning is the most fundamental part, we need to analize the problem, this is the key: focusing on defining the problem before thinking about the solution. It has to be very clear what are we  trying to solve, put boundaries to the issue, understand the problem and what the solution must or mustn’t do. Unfortunately, this is often the most rushed part for us young developers because we just want to start working right away and we throw a solution really quickly without taking our time to understand the problem that we have to resolve for the client.

2) On the next phase, analysis, we start defining the goals as functions for the program. This is when we link problem-solution, we also need to look into posible issues that could rise when meking the project. It’s in this moment that a Software Requirement Specification document should be created, but in reality as students, if the teacher doesn’t ask for it, who actually bothers to  make one?
giphy (7)

3) In the design phase we see more technical stuff like data flow, modules and the architecture of the problem solution overall, when we make this of course we need to take into account the things that were defined on the previous phases

4) Implementation is the phase we look forward the most (or at least that’s waht i think) because we start creating the solution and we can actually see progress. We see code being written as work being completed which is different then the previous

tenor (3)
tenor (4)
tenor (2).gif
Continue reading "Life Cycles"

Nothing Ever Stays The Same

--Originally published at Computer Systems Engineering

Let’s get started with this LONG chapter 5 of the book.

Software needs to change, that is innevitable, let it be because some new features need to be added, some need to be updated, some need to be added, deleted, or whatever.  They tell us to be ready for the change but in reality we are all panicked about change.

giphy (6)

In object oriented programing a way we can prepare for that change in software is using abstract classes that can act as placeholders that when we put to use we can modify to fit our needs. The abstract classes defines the behaviour and the sublcasses are the ones that implement the behaviour.

Another alternative to make software chaengable is using interfaces, which makes it more flexible and addaptable, perfect for the case that the book brings up about needing to add various instruments, by creating an interface you can be ready even for those sublcasses that doesn’t exist yet but if you try to make your code bigger they for sure will be usefull to avoid code duplication.

Joke break. On the left we see how flexible we want our code to be, on the right we see how flexible our code actually is:

yoga toes.gif

Encapsulation is important to leave some parts of your code unbothered while at the same time you leave some other parts run free for every change necesary. It’s vital to know and analize your code to diferenciate which will actually stay as it is and which will need an update every hour.

update-gif-11.gif

Everything is about following the OO design principles, make your code more flexible and think things trough. We shouldn’t be stubborn about keeping our design as it is only because at a given moment it worked, we need to improve and better to

P7wa.gif
😦
giphy (5).gif
🙂
giphy67.gif
Continue reading "Nothing Ever Stays The Same"

Taking Your Software into the Real World

--Originally published at Computer Systems Engineering

Let’s talk about chapter 4 of the book.

In this chapter they talk about putting your software to use in real world because, you know, world isn’t the perfect environment we all want it to be. We can try to prevent as much as we can some software malfuctions that our system may have by doing this: ANALYSIS.

tumblr_p371r6YlUQ1wvvyspo6_r1_400.gif

We need to carefully think about where is our program going to be when it is no longer in our little bubble of perfect conditions, we need to train it and prepare it for all the scenatios, create new use cases, update the ones we already have and basically give our program a shield and a sword so that it can fight the world. Visual representation of our program:

tenor.gif

As for my personal thougts, i think its really important to get used to preventing things on a larger scale. We are in a risk of getting acostumed to programming only taking into acount that it should work for the school project, or that it only has to work well on our own computer but that’s not how it works at the end of the day.

Without nothing else to say, thank you for reading and bye.

tenor (1).gif

I Love You, You’re Perfect… Now Change

--Originally published at Computer Systems Engineering

Let’s get started with the third chapter from the book.

In the chapter they mention the situation in which you biult a perfectly functioning aplication but after it is used it is required to change because now the client wants something different. The be like “hey remember that thing you did? yeah i want you to change everything, hope it’s okay”. This is you after hearing that:

giphy (4)

This is the reason why we should make code pretty, because when we need to modify it it will be 1000 times easier.

I was thinking about how many times my code is a mess because i just want to finnish it fast and forget to comment and clarify what things are what. Baiscally i set me up so that the next time i look at it i know absolutely nothing about how it works.

bbc81fb083fa9a7bc0031d39239f877ca08af3dcb40e916adae6ae166b3ba4e4

The thing is that, just how they mention in the book, software should be ready to change at any given time, be it because something should change or something must be added. When you writte good code you can use it again to build on top of it, it eventually saves you more time to be carefull and comment everything necesary than trying to be done with it and neglect those things. (I am guilty of that :/ )

 

On another note:

I also enjoy that the book has those kind of titles that could be something else, that apply to situations outside software engineering. Like, i love that you could learn another lesson in life by reading this particular title “I Love You, You’re Perfect… Now Change”. Somethimes we think that we are in love with someone and they are in love with us, but they just keep telling us how to be and behave, changing us

🙂
Continue reading "I Love You, You’re Perfect… Now Change"

Give Them What They Want

--Originally published at Computer Systems Engineering

Just the title of the second chapter of the book already tell us a lot: the clients are innocent and only ask for what they want, telling us especifically what that is.

frabz-WHY-YOU-NO-GIVE-ME-WHAT-I-WANT-7ce518

Am i right? (As if)

How many times has it happened that a client asks you for something and you spend hours doing exaclty what they asked just for them to reject it once you deliver because “It’s not what they asked for”. That for sure will make you angry at the client but you should be angry at yourself too. Think about it, whose fault is it? All the responisbility is not on the client, it is a mistake not to ask enough questions and asssume that that’s how they want it. You end up with a product no one wants and you end up like this in front of the costumer:

take-it-its-6kf01b

 

To avoid this kind of situations is why we need to learn to gather requirements. A requirement is “a specific thing your system has to do to work correctly”. Basically there  are the things the client ask for, so of course we need to listen to the client in order to know what the requirements for a specific product are.

When you speak to the customer about what they want we should make a requierement list, mention it to them and see if both sides are  on the same page. Those requirements are not set in stone, they can change depending on how the product is being developed and additional ideas or second thoughts of clients. That’s why constant comunication is needed.

I havent worked on a mayor project but it sure has happened to me that we divide tasks for some project with my team mates and each “agree” on what we need

giphy (3).gif
img_product_management
🙂
giphy7.gif
Continue reading "Give Them What They Want"

Re-learning Object Oriented Programming

--Originally published at Computer Systems Engineering

In this post I’ll be talking about the first chapter of the book “Head First Object-Oriented Analysis and Design” and what were my thought about it while reading it.

There is a lot of things that may come to your mind when someone asks you what is “great software”, for me the first thing that comes to minde is that THAT is the type of software i want to write. I’d love if I wrote a program that made other say “that is great software”. But I don’t have a clear idea of what it means. In the book they point out some characteristics of great software that can be:

  • It does what the customer wants it to
  • It is well designed, well coded and easy to mantain, reuse and extend

So, how do we make what we write “great software”? well, we build a program to do what the customer wants while using oop principles and make it readable, reusable and extendable. As simple as that right? Just in theory really, now I realize that a lot of the OO code I have written can’t be considered “great software” #shame

giphy

Reading more of the chapter I encountered this phrase: “Don’t create problems to solve problems” and, as obvious as it sounds, i found myself remembering all the times i did just that. I just wanted to make the program do what it was supposed to and be done with it, even if it meant hard coding some parts of it, because i didn’t have to worry about using them again, i’ll pass the course anyways (what a bad way of thinking i have).

giphy (1)

It is vital to learn to plan ahead of time before going all in and start writting the code, we need to stop and think about

giphy (2)
original
Continue reading "Re-learning Object Oriented Programming"

Trabajo en Equipo

--Originally published at M E R I N O

Trabajar en equipo para algunos puede ser algo del día a día y para otros puede ser una tortura, en este blog veremos cómo.

1. Conoce a tu Equipo

Lo más importante dentro de un equipo es saber con quién estás trabajando, más si es un equipo a largo plazo. Tienes que saber de tu equipo tanto en lo profesional como en lo social. Por ejemplo, si trabajan mejor solos, darles tareas que no dependan de más de una persona, o si conocen alguna plataforma mejor que otro en el equipo, darle el mando de esa tarea, también qué actividades fuera de lo profesional hacen, si hacen deporte, arte o tocan algún instrumento, además de hacer un enlace más fuerte, te das cuenta de cómo son y la mejor manera de tratar con ellos.

2. Habla… Pero no tanto

La comunicación entre el equipo siempre es crucial, es necesario tener una buena comunicación entre todos los integrantes del equipo para que la meta se alcanzada de una manera positiva. Pero a nadie le gusta el spam, entonces no es necesario estar dando reportes de tu trabajo cada que agregues una palabra a una práctica, o cada que pongas una tuerca. Esto parece como una exageración pero conforme pasa el tiempo, ese spam pequeño se va extendiendo más y más y se vuelve muy difícil de trabajar.

3. Do or do not, there is no try

Supervisa que las tareas no se dejen a medias, es mejor tener tareas completadas que 20 a medias, está bien trabajar en dos, máximo tres, tareas por persona, porque a veces pasa que estamos haciendo nuestro trabajo y nos bloqueamos, o hay algo que nos impide trabajar, es ahí donde entra la segunda tarea, sí es más eficiente pero llenar tu lista de actividades no es Continue reading "Trabajo en Equipo"

Semestre i – Review

--Originally published at M E R I N O

Quise postergar este blog lo más posible para tener un alcance global de todo el semestre, también estar lo más tranquilo que se pueda para que las emociones no influyan en lo que realmente es y pues… Aquí va:

Empecemos con qué es, el semestre i es un modelo hecho por el Tecnológico de Monterrey en el que llevas todas tus materias con un mismo grupo, dentro de este grupo se hacen equipos pequeños y se enfocan en resolver un reto. Como es diferente a llevar clases normales, los temas de clase son diferentes a un semestre normal, un porcentaje se dedica a resolver el reto y el otro a  ver los temas de clase como si fuera un semestre cualquiera (este porcentaje depende de la materia y el maestro). En teoría todo suena muy bien.

Ahora, la realidad. La realidad fue que se nos obligó a varios estudiantes (ITE-ISC) a que lleváramos este modelo de semestre sin previo aviso de dirección de carrera, ni siquiera un cartel como lo hay en otras carreras, la mayoría de nosotros no estaba de acuerdo de llevar semestre i, pero al final todos entramos. Nos dijeron, no se preocupen todo está bien planeado va a estar cool. La verdad, no estoy seguro si se haya planeado tan bien o no, pero lo que si vi que falló fue la ejecución del plan. Llevamos materias de semestres adelante, que en mi opinión deberían llevarse en esos semestres ya que cuando llegues a esos semestres deberías estar más preparado y con más experiencia del tema. Otra cosa que molestó a todo el grupo es que nos hayan quitado un tópico a la fuerza, muchos de nosotros no estaba de acuerdo con que sucediera esto pero aún así lo hicieron. En fin, podría hablar mal de Continue reading "Semestre i – Review"

Segunda Publicación Semestre i

--Originally published at Coding with jared

El último día de clases oficialmente fue el jueves 3 de mayo, sin embargo siempre al final de cada semestre se acumula la tensión y estrés debido a los proyectos finales, exámenes y otros pendientes que los estudiantes puedan tener, no solo escolares si no también familiares o incluso personales, en una edad todavía crítica para la vida, combinando todos estos “problemas” pueden ser útiles de manera constructiva o negativos en la búsqueda de identidad personal y como desea ser un futuro no lejano. En fin, regresando a lo escolar, las dos o quizá tres últimas semanas de clases son las más pesadas y más para el estudiante mexicano promedio que suele procrastinar bastante, a pesar de que está característica esté escrita en mi ADN, he intentado cambiar mi actitud en los últimos años y durante este semestre i creo que puedo decir he mejorado un poco más la manera en que me administro. No solo uno es más consiente de esto mientras va creciendo, sino también le sirven los consejos y buenos hábitos de las demás personas.

El tiempo pasó demasiado rápido este semestre, quizá el más rápido de todos debido a los puentes, días festivos, etc. Junto a este tiempo también se llevó a cabo la lectura completa de Tom DeMarco Deadline, la cual a pesar de haber sido una novela (incluyendo drama, acción y romance) tiene unos puntos clave muy sólidos en cuanto a la realización de proyectos, tareas o cualquier meta que se quiera proponer una persona, a pesar de que el libro fue publicado por vez primera en 1997,  hay consejos, teorías y maneras estratégicas de manejar aspiraciones que todavía aplican muy bien para el 2018, aunque si pueda haber algún contexto histórico grabado en el libro el cual no se mantiene muy bien Continue reading "Segunda Publicación Semestre i"

Experiencia Técnica durante Semestre i

--Originally published at Programming

Siento nostalgia al volver a escribir en este blog que comencé a utilizar hace dos años, pero me gusta ver todo lo que he avanzado desde el momento en el que puse un pie en la universidad. He adquirido muchos conocimientos y conocido profesores que además de tener pasión por la educación son buenas personas. Todo esto me ha ido forjando el camino hacia este famoso semestre i. Por eso, en este blog hablaré sobre mi experiencia técnica con la aplicación web y al montar la base de datos. Antes de comenzar me gustaría clarificar qué fue lo que hicimos en el semestre i para aquellos que no están familiarizados con el reto. Este reto se trataba de buscar una solución a la problemática del alumbrado público utilizando el internet de las cosas. Nuestra solución fue la implementación de alumbrado inteligente con un servicio en la nube de administración remota, el cual les permite a los administradores de forma sencilla visualizar datos y estadísticas, así como ver las fallas de las lámparas y asignar técnicos para la pronta reparación de estas.

Mi equipo de semestre i estuvo muy bien balanceado, teníamos personas con experiencia y conocimientos en diversas áreas. Por lo que la realización de la parte técnica del reto fue pan comido. Cada integrante se encargaba de lo suyo y luego compartía sus conocimientos a los demás integrantes del equipo para que todos supieran cómo lo hizo y cuáles eran las mejores prácticas. En mi caso, al ser estudiante de ISC, no me tocó meterme tanto en el microcontrolador, yo me encargué principalmente del diseño y la implementación de la base de datos y parte de la aplicación web. Como estudiante de computación pensarían que principalmente me enfoqué en la aplicación web, pero la verdad es que en nuestro Continue reading "Experiencia Técnica durante Semestre i"