Some years ago, the National Science Foundation estimated that our brains produce between 12.000 and 50.000 thoughts per day. According to other studies, this number could be even increased to 70.000. In parallel, other studies determined that between 75% and 80% of our thoughts are negative. Assuming these as valid numbers, this means we have between 2000 and 10000 thoughts that are neutral or positive in a day.
A typical waterfall project has well defined phases that go from the idea conception until putting the solution in production, being the most typical of them:
- Requirements gathering
- Design of the solution / Architecture
- Testing phase (including all kinds of tests)
- User Acceptance Test
- Go Live (put in production)
- Post Go-Live support
It’s very common in big companies that there’s a functional team responsible for each phase. Thus, we get:
- Business Analysts to gather requirements
- Architects, Systems Engineers or Software Analysts to design the solutions
- Programmers or coders to implement it
- Quality Testers or Quality Assurance engineers to check its quality
- The customer to test the delivered solution
However, one of the big problems from this approach is that usually these teams work in silos. The right hand doesn’t know what the left hand is doing and this causes inefficiencies. To make it worse, sometimes the way to try to reduce silos is through an immense increase in bureaucracy, forcing teams to communicate through documentation.
DISCLAIMER: This is not a tutorial on how to learn Python, in fact, I have never used Python before so don’t take me as example. What I want to share with you is how to learn a new language, strenghen the TDD principles and practice a Kata in an easy way.
Last week I attended the Global day of Code retreat in Barcelona. It was a wonderful experience that generated me a lot of energy to code again (I became a manager some time ago and I don’t code as often as I’d like to). That day we used the Conway’s Game of Life which I recommend to practice the TDD approach.
After investigating about several other katas I stumbled upon the Cyber dojo online tool. Basically this is a web page in which you can practice any kata and choose among more than 20 languages you want to learn without the need to do any setup at all. In other words, if you want to grasp the basics for a new language, this is the perfect place.
Also, one of the nice features from Cyber dojo is that after you’re done with all the coding you wanted to do, you can download all your changes into a zipped Git file and then you have the repository with all the changes that you worked on.
If you are still working in a waterfall methodology, you should know that the world is moving towards new methodologies… some famous concepts would be Agile, XP or Scrum and surely those words will sound familiar to you especially during the recent years.
Especially in the case of scrum, the first scrum team in which Jeff Sutherland participated took place in 1993, literally 20 years ago, and now it’s mature enough to be taken by big companies.
Since years, many software companies have their Quality department, which in many cases implies that they have the responsibility to assess the quality of the releases. This department is typically called QA department (standing for Quality Assurance), but I rather think that they are doing much more of checking releases than to assure the quality and I see a huge difference these two concepts, that is, between a QA engineer and a QC engineer:
- QA stands for Quality Assurance, therefore an engineer that ensures the quality. Every time a new release is being built, the QA engineer ensures that the quality is built in it. The QA is responsible for improving the processes and participates actively in the creation of the testing tools.
- QC stands for Quality Checking or Quality Control. This engineer typically waits for the release to be finished in order to check if the quality is built there. A Quality Checker typically creates a list of test cases based on the requirements themselves and puts them in a tool to plan each of the BTCs. Later he executes all the test cases, in most cases manually and tracks their execution.
As part of my work, sometimes I need to memorize some speeches or some presentations and in order to do that, what I frequently use is one technique called: Memory Palace (which originally comes from an ancient method called Method of Loci).
The approach of this technique consists on basically breaking down your speech into the main concepts you want to talk about and you try to look for a visual image for each of the concepts. It is very important that you have a vivid image for every concept you want to memorize because it will be much easier to retrieve it from your memory later. Once you have all your images, you mentally place them in a place that you know perfectly that we’ll call your “memory palace”.
To be honest, I think sheer will power is a bad idea. You start trying to do useful things using your will power and then you realize it’s like a gas can that gets empty very quickly along the day. I mean, if you’re doing something against your emotions, if you’re doing something that you don’t like to do, in the beginning you will do it without any problem. You will fake yourself, you will feel comfortable doing it like you can do it the whole day… but after a while you get tired very easily and believe it’s not productive.
I was reading some time ago a book called Switch that explains the different forces that affect change. In the book they just explain how to make changes by looking at three different perspectives:
- The Rider
- The Elephant
- The Path
You know… the rider is kind of the intellectual part of the change, trying to look for reasoning, etc… the elephant is the emotional part of the change and whenever something is unclear, then it gets fearful… and the path is your environment, that can help you achieve the change or not at all. Well, in my case, my elephant is very fearful to accept that anything needs to be done just through sheer will power. I get fearful very easily and that doesn’t help much.
My proposal is that you look for ways to make it easier, to put your passion in as many things as you can, because if you have that tank of will power, it needs to last for the entire day (I presume that during the night it gets filled up again). If that’s the case, then you need to use it wisely along the day because there are so many things that require will power that do not depend on you. You can end up the day frustrated, anxious and feeling uncomfortable with yourself.
On the other hand, if you are aware when you’re using this energy and you try to limit the usage of sheer will power as much as possible, it’s the same as if you’re piloting an aircraft and you’re trying to glide it so that it doesn’t consume any petrol.