Test && Commit || Revert ?

About two weeks ago I started an internship in a Software company. They like to use this relatively new framework known as Agile. But it isn’t only used where I work, it seems that a lot of companies are trying to migrate to an Agile approach (or some kind of distorted version of it ūüôĄ).

In other words, they like using the SCRUM mindset.

In other words, Ken Beck has influence my work days and probably a lot of many other people.

So after doing a lazy Google research I found out that the Agile roots (extreme programing) were mostly developed by a smart guy named Ken Beck. He did not just worked on this awesome methodology, but also contributed to Test¬†driven¬†development,¬†Smalltalk, helped popularized the CRC cards along Ward Cunningham, and made the unit testing framework JUnit.¬†It’s incredible all the work this guy has contributed into the Software industry. ‚Äč

Kent Beck (right image) Was one of 17 authors of the Agile manifesto which shaped the constant changing software industry

So what about TCR?

Kent Beck proposes: TEST && Commit||Revert which basically consist in:

If my test pass then I want to commit it!

If I fell that something wrong happened in my code then I can go back to the last time it worked. Therefore, the incentive is to make small changes, all in a stable way. It’s better to have many smaller commits than a big commit with all the different changes.

This doesn’t mean you will have to write more tests. But if you are going to make 3 tests at once maybe it’s better to test one by one so the code of the 3 don’t fully disappear. As Kent Beck says:

How could you make progress if the tests always have to work? Don’t you make mistakes sometimes? What if you write a bunch of code and it just gets wiped out? Won’t you get frustrated?

Kent Beck

And yes, the mistakes will be made, we are humans and the human factor will never assure to have working code 100% of the times. But it is better to instantly wipe out all the bad code. So if you don’t want for big chumps of your work to be sent to the forgiveness then don’t make really big commits between the successful tests.

I guess most of us, university students that hadn’t finish a Testing course, program either by submitting the whole code project until the end, until it’s working as a whole. I’m not counting much the team projects because we commit occasionally, but, it’s a different reason. I think we commit to share code, not to have it safe for testing. And even deeper I guess we don’t do any formal testing.

TDD vs TCR

Test Driven Development: Also created by Kent Beck (is there anything this guy can’t do?), is basically a programming practice where you have to write test first and then write the code that will pass it. Finally do a refactoring.

I don’t have a lot of experience with TDD to be honest. To be even more honest I wasn’t even sure about what it really meant. I guess my testing before this class was running a program, if something goes wrong fix it. And occasionally throw as many weird inputs to see what happens. But I want to change this. Maybe TDD is the solution, maybe not.

TDD workflow

Test Commit Revert: It’s an alternative workflow. TCR is chaotic in a sense that there will be different problems. Maybe TCR will be very weird in Github. To have a lot of tiny commits, for 12 line of code seems incorrect. But there are some solutions as squash commits. If all test passes then commit to master, if anything fails use the the revert button, Life is too short for waterfall planning.

References

You can read the whole Agile manifesto (all along the early 2000’s web pages experience) in here: https://agilemanifesto.org .


First Personal Post 2.0 #TC3045

Image taken from Diyfail.com

Hello my name is Kevin Oswaldo Cabrera Navarro. In the next 3 months I’ll be writing about Software testing, verification and quality. So why does Testing and quality matter?

Quick example of why quality is important sometimes

The emoji movie had a 8% score at rotten tomatoes. Photo credits to Michael Steber

I wonder if there was any quality department inside Sony pictures that didn’t realized about how bad does the idea of this movie actually is. This is the equivalent to the story about how small testing can save tons of money to a company. Probably the correlation is so arbitrary, but it is a good example of why everything should have a quality measurement (it doesn’t matter if it is a movie, a book or a software system)

No bugs in here! ūü¶ó

One of the main goals in this blog is to prevent the usage of the word bug to refer to a fault, error or failure in a program. Maybe it is a word rich in history but in this blog I will try to follow the advices of Paul Ammann and Jeff Offutt writers of the Introduction to Software Testing book to don’t encapsulate all the different meanings into only one word.

But that’s another history for a different post. See you later



The Deadline

Mr. Tompkins, a ReSOE “Released to Seek Opportunities Elsewhere” is the protagonist of the Tom Demarco book about Project Management, if you are looking for a new way to learn about PM this book is perfect, it is a novel! so from the beginning of the story, you are transport into the world of a Gant Charts, SCRUM, changes and management risks.

If your english is not really good, there can be some hard words, but in these days there is nothing that google translate can’t resolve.

Some of my favorite Quotes from the book:

“Let me answer that question with a question. What’s the¬†hardest job in management?”
“People,” Tompkins replied automatically. He knew¬†exactly where he stood on this subject. “Getting the right people for the right job. That’s what makes the difference between a good manager and a drone” (DeMarco, T., 1997).

Metascore 88/100¬†ūüĆēūüĆēūüĆēūüĆēūüĆó

More info in: http://www.goodreads.com/book/show/123716.The_Deadline

References:

DeMarco, T., (1997) The Deadline, Dorset House Publishing, New York: USA.

Here I go again ūüéł

ūüéľ It’s such a perfect day¬†

You may be thinking about Whitesnake song (maybe not, should you?*), ¬†It’s the beginning of the finals week, for almost every student¬†in the school, today is the last day of classes, that means we have to think about our performance in the semester, It works like a new year’s eve without twelve grapes or tons of fireworks, did we make all our plans true?, did you¬†get into the new project?, did you change the world around you? did you make all the posts and stayed active on Slack in your #TI2011 class?,

*https://goo.gl/eiEoVW

2014officespace4

We seem to enjoy to leave everything in the end, we like to do things on unhealthy marathonic ways, just like finishing a serie in one day, going to hackathons to work all day and night, do 30 post in one day, study for a final and arrive at the school without any sleep, test the slides 3 minutes before the presentation and realize it does not work, reading a complete book in one sitting, .

2014officespace1
Hope you are not a Peter Gibbons in this life

ūüéľ But I didn’t have time to do it

“You know I’m sooooo busy to go to class, I have to study” “I have a lot of outside work, school is not for me, I can learn everything from an internet tutorial”

uhy

“Finals are¬†here, I can’t do anything but study/make a project”¬†Even the trendy¬†Luis Fonci’s¬†Despacito song isn’t heard as¬†much as these phrases on finals.¬†But of course my horse, when they meet with their teams or friends to study, ¬†80% of the times is wasted on chatting, complaining that they have to do a lot of work, procrastinating, eat and look for memes on Facebook/Twitter/KevintrocoWordpressSite, so maybe these phrases are just a way of saying, I did have time to do it, but I spend it on videogames/partys. I kind of describe my finals week anyways.

giphy-6
Don’t: Be this guy After the Finals (SO)

To be honest, I enjoy to write about different things that involves the Project Management, and avoid those posts that are just resumes of the book (literally), having 2 good posts instead of 14 Mcconnell awesome mixtape, although in the end, they are necessary to fill the blog and make it to seem full of posts, we learned from the book that the amount of time you spent on planning is truly valuable in the last phases of the project.

ūüéľ Inevitable¬†things of the Finals

  • Marring the “maquinita” for a week and only eat cookies and chips since you can’t go to eat something made with love or without a wrap.
  • Have eye-bags big enough to be confused with a zombie, sponsored by those large nights of studying without sleeping.
  • Make the Tec or your foreign friend house your second home,¬†If you are not a foreign student you will not see you’re parents, which result in the next point.
  • “This ain’t a Hotel” scold by your parents when they realize you only go to sleep or eat to your house in the lately days.
  • Going crazy because you left everything at the end, and then tell yourself you will NEVER do that again.

All these things can be avoid if you have CONTROL OF YOUR TIME, procrastination is an enemy we must face.

Remember about the estimations that Mcconnell wrote in the book, following a systematic estimation procedure is effective when they are realistic, I will read these 100 books at the end of the month is not going to be completed if you have never read more than 10 pages without sleeping in the couch. In the end GOOD LUCK IN THE FINALS! show what you can do.

Captura de pantalla 2017-05-03 18.49.25

**Of course this is my opinion and it is okay if you don’t think the same, there is a lot of exceptions in students, not everybody is lazy.

Why is ITerm Open Source? Good Question

imgcat

George Nachman @gnachman¬†the¬†creator of the ITerm project describes himself in his twitter bio as “the iTerm2 guy. I eat, sleep, and breathe terminal emulation. It is my everything.”, but what is ITerm exactly? ITerm is a GNU licensed terminal for MacOS, it supports a terminal with new features and even viewing images (for some reason). ¬†but why is it open source? I couldn’t find a exact answer anywhere in the internet, but, I think the reason is the lack of Terminal alternatives on MacOS.

Examining under the GNU License it specifies how the software is made to share, to give you the freedom to do whatever you want, share it and change it, free to all users.

Captura de pantalla 2017-03-29 16.03.18

Looking at some responses in Quora.com, I found that the reasons why the users choose to have this terminal over the standard app, are the COLORS and mouse support,

Preliminary Planning & Football

To win the Football* league is not so different as managing a software project, at least in the planning factors, let’s talk about Chapter 7 of the book.¬†ūü•Ö ¬†‚öĹÔłŹūüí® ¬†ūüŹÉūüŹĽ

giphy-4

In booth cases you have to got a Coach who manages the team, the tactics and formations before/during/after the matches, just like any software project, the project manager has to make with the given resources the best teams and put together the ones who has the best chemistry of work, the team cohesion has a very important impact on the productivity of the team.¬†You also need resources, players (programmers), trainers, investors and more. Different ¬†areas unite to make a good result, this means that there should be a project vision¬†of where the project is going in order to don’t exceed the budget or fail, some soccer teams have in mind to win the league, others to avoid the relegation, having a vision helps to build a common goal that makes trust among the team towards the same objective, the team needs to be motivated and need to have a challenge or mission to achieved, sometimes the Champions League¬†or a new revolutionary social network to compete with¬†Facebook and will take the market share for the first months, anyways, it is important to have a real goal, you will not make a League 4 Sunday league team¬†to win the FA CUP, or have 2 developers to make a new Call of Duty in one month, it may be uncommonly¬†possible but not realistic, McConnell says:

A common and damaging dynamic occurs when the development team begins to realize its goals are unachievable before management does. If management continues to insist that the goals are achievable after the team has figured out that they are not, team motivation and morale can sink fast.

Executive Sponsorship 

Executive sponsorship is the support given to the person or group who has the final authority over the project wide decisions (ask Barça or any of those multimillionaire teams or tech companies like Sony), The Coach may be in charge of the players to be fit and win matches, but his boss is the one who is in charge of the team, just like a PM is responsible for committing to a project, but the release to its users is in other authority chair, they are also the ones who give the money to buy those fancy players that will win the league for them.

daniel-sturridge-dance.gif

Risk management

A risk is a possibility of loss or injury, Software development involves risk, football involves risk, changing the battery of your computer involves risk, everything has a chance of risk or loss, sometimes there are star players that get injuries or that don’t fulfill the expectations, this is where the manager will decide what to do, in a football team or in a software project, if you find a difficult persons, works as quickly as possible, because the negativity and the effects in the team will be lowered, sometimes teams just lose finals because the aggressively plays that leads to red cards.

giphy-5

Because the project manager as the coach are the ones who give the face of success or failure in a project, projects needs to reduce risk, they are faced into the risk management, there are three approaches that McConnell describe in the book of Software Project Survival Guide.

  1. Project plan must describe a risk.
  2. The budget for the project must include funds for the risk solution.
  3. She risks are assessed, their impacts must be incorporated into project plans.

If a player is injured, there must be a substitute, if a programmer doesn’t give the task on time, there must be a new approach to make him work as desired, sometimes football fans act like the risk officer, who appoint that some players are not in the best shape, although sometimes just like McConnell says, the are just “designated pessimist” that does not like the tactics, the risk officer must have the management point of view and respect too.

 

80378-jurgen-klopp-gif-4EcQ
Maybe the coach is not playing on the field, but he is the one that is in charge of the tactics to succeed, just like the Project Manager

Successful projects begin planning early, they define the project vision, identify an executive sponsor, set targets for the project scope, manage risks and map out the strategies, which is useful and important.

in the end ProjectManagement == Coach

*‚úĆūüŹĽSoccer‚úĆūüŹĽ for North Americans

All those things College Have Done

giphy-3

Let’s forget about the McConell Book just for this post, Imagine coming back to your school 15 years after you graduated to give a chat¬†to students that are studying the same career as you, imagine¬†returning to your school in 2031, what will it change? Maybe there will be VR classes and a lot of screens everywhere, google may own us all and we may even¬†have full holograms like Star Wars to communicate,¬†you will see things very different, but the most different thing that you’ll see, will be¬†what your school did for you. All those years that made what you are now, all those filler classes and subjects like financial administration and citizenship that did not make any sense, there is no filler classes, like Steve Jobs says (I know he is kinda over quoted but he¬†have a great¬†point) it is all about connecting the dots! We are not machines, we are not code manufactures, everything that we learn is useful, I mean, as a System Engineer, you can¬†fit everywhere, any place that there is a computer, ¬†a job is waiting for you (if you have what it is needed), but we need to learn to take advantage of all what we learn.

Working and studying is the pillar of success, but it is a double knife trap too, we need to have a balance between the amount of work without losing the focus in our studies, work will teach you more than any class of course, but do not let greed for money consume you, studies are still important.

giphy-2

Sometimes we live in the basic, not by choice, but because we have to develop in¬†the most common tools, since they’re¬†easy to use for the user, we have to adapt to our clients (without trying to innovate in what we can), and learn to explain what we want, because it is hard to sync our ideas¬†with other people that are not engineers, soft skills are the solution in here, let’s appreciate our work and don’t let others to step on us, but without trying to act as if we are superior than the other guys.

 

A Project from 20,000 feets

How does a mountain¬†looks like from a 100 meter? Like a mountain probably, but how does a good project looks like from a far distance, it is more ambiguous, I mean, how can a person tell if a project is in a good or bad situation, well… there is no magic steps but anyways McConell teach us about some of these things.

wTh2JFI

The conceptual phase told us about the three kinds of developing focus thet must be, Discovery, Invention and Implementation, should this phases will shift like a roller coaster? Of course not (Or maybe they will, but it is really NOT the desirable) Since the level of uncertaintly just got bigger with these shifts.

“Technical projects often provide status reports such as 90% complete”

Truth been told, thanks for that quote McConell! this is the reality, System engineers (and me) done this so many times that is scaring how this can become an habit anytime soon, so the way to fight this is getting the critical functionality as soon as is available .

The price of Technology

giphy
Technology has taken a tendency over the past years of one specific and recurring event, it constantly gets better, researching and developing new knowledge helps to make something cheaper, smaller and faster, and this has been a standard for years, just like in 1946 the transistor debuted by the bell’s laboratories and helped to the reduction of the mega computers, or the faster microprocessors developed by various emprises, but this might have been corrupted with the new trends and the capacity of wearing devices.
Some companies has seen the potential of selling the ‚Äústatus‚ÄĚ in its products, and since this is a massive marketing strategy it needs money, capital that is used in the selling of the same products instead of the product itself, which can make a device really overpriced, paying actors to use their products in public places. But is this actually bad? No it is not, because people (usually) knows that they are buying the product because of the trending instead of the functionality, but there is another side of the coin, there is a sector that can get it trouble, which is the people who wants to pay for something that is really worth and not extra money to show his status, people that cares for quality and not for luxury, and that is the bad side of this trend of ‚Äúfancy devices‚ÄĚ, technology loses its actual purpose of scientific knowledge to help and made easier the adaption for everyday and routine tasks to become just another kind fashion. But remember that this is not as bad as it sounds, this trends exist because it is actually a very profitable business that can make people to be more interested in technologic wearables and make a step to the internet of things.

Peopleware

All these thinks that are written in the book are a recompilation of years of software engineering, I’m not making this up, so yes…¬†Software project is indeed a complex task, it is not like doing a ham sandwich, that is why it can be a big mess without the correct planning, lots of ISC’s hates to spend time planning, I do not mean that engineers don’t think that planning is not important, but they do think that is a waste of time of the project (mostly because they aren’t coding)t, and maybe doing a programming course homework doesn’t require a lot of planning, but even if you are pretty lucky, medium and large projects do require systematic approach.

# Planning is important! 

“Plan a serie of plannned small mistakes to avoid large mistakes”

5b229f59aa5601c9e8ca9a5af498ccd8

Requirements development.¬†Helps to identify in detail the problem that the team is trying to solve, it’s like the soul of the project (maybe) because the project is modeled around the requirements,¬†architecture plans the correct solution to the problem in a high level specification, detailed design ¬†Comprehensive plan of what is going to be build, all this together will made the project a solid work.

 

Checkpoint Review

“very early in the project the project team should have produced a user interface prototype, detailed requirements, and a detailed project plan” ¬†This helps a lot to the stakeholders to know if they should invest on your project or yourself to see if it is actually posible to accomplish the goals.¬†Maybe this tasks will take 10 or 20 percent of your project, but at the end of this you’ll have a planning checkpoint review(and see if cancelation is a positive decision), if you don’t have this, is not a crazy idea to think that there is a risk of FAILURE.

Facts:

  • Good progress control is where the¬†project progress is visible (true status of the project).
  • Binary milestones are the key of project progress management.
  • DON’T LIE ABOUT THE PROGRESS.
  • Even optimistic people need to prepare for the worst.
  • Quoting the book “if you don‚Äôt actively attack the risks on a software project, they will actively attack you.”

 

Peopleware

0677-image_26ef2854

People is one of the most important parts of the project, so when developers find their work interesting they can achieve incredible work, productivity must come from possible goals,  and try to avoid to manipulate them or create noisy atmospheres (like in taller vertical). Not everything is the developer,the user is also a key in the project development, having the user to be involve in the project might save you from remaking the whole project if you ever find that the client did not even wanted what you make, Mockups can help you a lot, is better to involve the user early on in the project.