You have written your code, ran it and looks ready to be committed. Once is committed it can be tested by another member of a the team. However,why no write some comments for your code before committing it, which will help you find some bugs. By writing comments, you will have to dissect your code piece by piece, which will lead you to find common errors and makes your code understandable for other (and your future you).
Is not just about just writing one liners, write them with the following set of mind: it will be read by somebody that knows nothing about the applications or program, imagining the target reader is a new member of your team. This will help you see your code from a different perspective and go into details. By submerging in to details, you will find bugs in your code before going into the testing stage.
There are two advantages of this method: First your code is readable and readable code is better code. Second, you save resources by saving a bug report. Testers will not test code, find bugs and return it to you. You will NOT stop your current task and go back to fix a careless bug and resubmit it for testing. Instead you will spend your time producing new code.
On the weekend, I went shopping for a pair of sneakers. I needed something comfortable for my summer travels, which provided a much needed arc support. This is due to being flat footed and been giving me problems when walking a lot. In addition, they should later be wearable to work and everyday commuting. My decision: the Nike Air Max Classic BW.
I got to the store and when I saw the high price, plus all the colors and similar models, I stalled and wasn’t totally convinced. Still after some browsing and a coffee, I decided to ask for two pairs to try them all. I was disappointed because they didn’t provide the support I was looking for, although they looked cooled than I thought.
Things changed when the salesman got some insoles with arc support, the sneakers felt much, much better. When he asked me “what do you think”, I gave him the thumbs up. Then asked if the insoles were included, and he said I had to pay extra for them. At this point, I got turned off.
Note: Looking at this from a third view, when you have a price sensitive customer and then you make him pay more for what he/she has already committed too (in this case more than 10%), then the deal breaks up and there will be no sale.
At that point, I said I wasn’t going to buy them because, it was already an expensive product and I had to add more to actually serve its purpose. While he was trying to convince he can’t give it to me for free and they are good insoles and that they have a warranty and “bla bla bla”, I realized something: what I really need was the insoles with arc support, not a new pair of sneakers.
I bought the insoles and left the store with them in my old sneakers. After three days, I assure you: that was the best possible decision I could have made. It will have been a waste of money, to buy new sneakers when most of the non running shoes come with neutral arc support.
Most of the time, customers want to solve a problem and they think that the product/service you offer is the solution. And most of the time we are wrong, that is why is important to find out: WHY they think that is the best solution.
In that process of finding out WHY, you might not sell them anything and the customers just needs to tweak something in their current solution (that being sneakers, network, website, etc). However, a happy customers has a bigger possibility of returning and even better bring it’s friends. But, if he/she is not satisfied with the overall experience, forget about it. you lost them, because is about building relationships and thinking long term, not just selling.
“Sin Nombre” is the title of the independent movie, written and directed to Cary Fukunaga. His approach to writing and directing was that caught my attention some months ago and thought it will be usefull to apply in User eXperience (UX) design. First lets see what the movie is about, here is the synopsis:
After murdering his gang’s leader, a teenager joins a family of Honduran immigrants making the dangerous journey across Mexico to the United States, avoiding a fellow gang member who has been sent to kill him along the way. [Source Yahoo Movies]
Fukunaga’s approach was to do research before starting to film anything. He travel with illegal immigrants in trains, talked to gang members or “mareros” (the local term for this type of gangs) and even had two ex-mareros help him with the slang and way of expressing.
The movie has been acclaimed internationally and is very well done. One of the strongest attributes is attention to detail (which leads to some strong scenes), high pace and scenery. Things Fukunaga couldn’t have figured out without the research.
In the case of software, research is needed if we want to provide a pleasant UX experience to our customers.
Most of the time we create software to solve a problem. If we follow Fukunaga as example, we should not just interview the people the suffer the problem, but “ride the train” with them. In other words, let them take you through that moment in life where they suffer the problem. If we continue with the movie theme then we can conclude that:
story boards are to sketches as filming is to programming.
UX design is about continuous improvement.
We have done the research, now we need to determine if our conclusions are correct. So, we need make a rough sketch of the software and show it around the future customers or users. Then after some feedback, lets redraw the sketches with more detail. We continue doing so, until we have something that we can take to the next level.
The next level is to build the core of the software. This means that we only include those features and functionality that is the least needed to solve the problem. Once we have a good core, then the rest of the features will be easier to add. In addition it will keep things simple, which will save some resources. But more important it will give you a application that some of your customers can try and give you feedback on.
It is always about continuous improvement through research and attention to details, unlike movies there is no final version.
There are only two ways to catch up a “market leader”:
1. the leader makes very bad decisions that eventually comes back to haunt him and leaves him vulnerable.
or
2. you buy a startup or small company that has the innovation, but lacks the resources, giving you a better possibility of catching up.
Either is very hard, just look at Microsoft. Vista really sucked, but still they are the “market leader” operating systems. Or see at Google, they bought Android and see where they are today, still on the hunt for iPhone and trying to be the dominant mobile platform.
So, what to do? Stop playing the game of others and play your own. The catch game is like gambling in a Vegas casino, you will win enough to continue betting, but will never win against the house or break even. Do something different, which makes you the leader since you are the first to come up with it.
For example, Asus and the netbooks (eventually everybody was able to catch up). More interesting, instead of trying to play catch-up, Apple did something different, the iPad, which is a device that is between the tablet, eBook reader and netbook.
Another example is the Puma Phone, just freaking cool stuff.
At the end of the day is like convincing people to not follow the conventional patch and follow, therefore making you the leader.
Yesterday, I spent my day at Startup Day 2010. There I got to meet new people, catch up with others, listen to interesting stories and practice my pitching skills. No, I didn’t participate the pitching competition. However when you meet somebody, generally they ask what do you do. This conversation goes something like this: “Hi, how are you? What have you been doing?” or “Hi my name is Lalala. So, what do you do?”. Most of the time, my response was:
Currently I’m working with startup called Yanzi. We sell a product that helps owners mange their business, through cameras and sensors. You can do this through the web or a mobile phone.
By the time I said the word “sensors”, they were looking for the cookies. And those that paid attention, were wondering what is special about Yanzi. That made me realized that I was doing something wrong.
When developing any product or service, “test early and often”. The same applies to pitches, there is no way to find out if the pitch delivers the message, until you try it with different people. So, if the pitch sucks (like mine) you will find this out, before the cookies are gone. Or, if you have a good pitch, it will help you refine it.
You can refine it by tweaking details of it and see what works and what doesn’t, until you have a great pitch. And it becomes a great pitch, when people receive the message you intend to deliver and feels natural to talk about it.
To solve my issue with the bad pitch, I turned to using a framework called the Golden Circle: Why, How and What. This is a simple idea developed by Simon Sinek. He states that to deliver a inspiring message, one should start by the Why we do things, instead of starting with How or What. So, based on the Golden Circle, here is my pitch:
[Why]
Business owners should focus on the important things: customers and families. Instead of trying to control every part of their business.
[How]
24/7 remote access to your business, through a computer or mobile phone. In addition, providing history of camera recordings and sensor data.
[What]
A plug and play, solution with data recorder, cameras and sensors that can be connected, that can be access from anywhere that has a internet connection.
As Sinek states, making money is not Why, that is result. So, ask yourself: Why to you make what you make? Why to you blog? Why to you dance? Why to you work? Why do you study?
I invite you to try it and you will see that your message will be much better, it will have more substance and will be less boring.
I was chatting with a professor (mentor and friend) from my University in Honduras. He was telling me that now the University became a “Javaschool”: a university were programming is taught using Java. This lead me to think of a couple of common mistakes that students might commit, since they don’t understand what is happening behind the scenes. Here is an example:
String patito = “javaschool”;
if (patito == “javaschool”){
//will never enter here
}
if (patito.equals(“javaschool”)){
//always enter here
}
The difference between using a == and equals method is that the operators == compares references to the object. Since “javaschool” is an object (even if you may see it as a value), it doesn’t reference the same object as patito. That is why the first if is always false. To compare or find out, if a String object has the value “javashool”, they will need to use the method equals.
They will make the above mistake, due to them learning to program using primitives like boolean, int, double, float, etc. Which is natural to conclude that everything in Java, works like comparing primitives, when is not the case.
int x = 90;
if (x == 90){
//woohoo! we are in
}
In the above example, int is not an object, but a primitive. A primitive is just a block of memory, no methods or others stuff. Just the value and a way to reference that block in memory containing the value.
If you need to read more about equals and == in Java, I recommend you go here. And if you want to read more about primitives, you can go here.
On the first week of march, I started to listen to a recompilation of Antonio Vivaldi’s work on Spotify. My curiosity for Vivaldi was triggered when Google changed their logo to commemorate his birth date (on the 4th of March). I didn’t remember much about him so, I thought it could be interesting.
While enjoying the music and working I suddenly felt goose pumps when I started to listen to Winter 1st Movement of The Four Seasons.
Maybe is because I’m a big fan of the violin and maybe is why I felt how I felt. When I saw which piece was, I decided to go through the other four season pieces. I started from spring to winter, while I was trying to map my memories of the seasons. At this moment I had understood the four seasons. Before I had the knowledge about them. I had read what they represent the four seasons of a year: what people do and climatic events during each season. Each piece reflects this through the melody, tempo and a rhythm.
Because, I had experience them more than once, so they stuck to me, which lead to understanding them. To know is different from understand, therefore once we feel it and experience that feeling more than once, we will understand.
Since, I lived most of my life in Honduras where there is no clear manifestations of the the four seasons, I did not understand them. Until now, that I’m in my third winter in Sweden, I had the experience them, therefore I understand why Vivaldi’s four season sound as they do.
You can know that being a father is difficult, however until you experience it you will understand it.
You heard countless times and read even more, how hard is to have a business, but until you run your own, you will understand.
You might know or have an idea of what your customers want, however until you are your customer, you will understand them. Why do you think (37 signals’ book), “Getting Real”, recommends that you solve your own problems and therefore you will have great web applications? Because, you will become the customer, feel the pain and there understand what it is really needed. However this is sometimes difficult to do. Sometimes we just need to solve other people problems. That is why, in addition, developers that build the web applications should receive the tech support emails. Not as a punishment for writing buggy software, but because they will never be the customer. So, they need (somehow) feel the pain of the customer. That way they will understand what it is really needed.
Once we feel something we will understand it, other than that is knowledge. just theory.
Drop the clichés, forget about what a engineer and a artist are suppose to do and don’t judge based on the university title or gender.
This is the information revolution, where anybody with the will power to learn, can be anything they want. Sure the revolution hasn’t reach everybody on the planet, but is on it way. In the meantime, just remember that you can wear any hat you wish and more importantly, anybody can wear the hat the want, even yours.
So, my proposal is that in those workplaces, companies and startups where project managements: “are managing the resources of a software project”, ditch them (or if you are nice give them a chance to get a new hat).
Management of people kills creativity, instead provide mentorship: guide instead of dictating. Get people that can lead by nurturing the skills of the people around them and help them focus, instead of “try to put off that fire or cure the itch”.
Let the artist write software and the engineer design, it might not be appealing but, it is a start of something different and sometimes different is good.
Universities and corporations develop software with a “hangover” (of classical concepts) from the days of punch cards and mainframes. Today we don’t need to control computer resources, since they are widely available. The access to information about programming is available on the instant and to anybody with access to Internet. However, universities still teach concepts that where design to control scarce resources, when there not scarce anymore. IT departments still try to use these concepts, to manage the projects and comply with internal politics.
There is a belief that everything needs a project plan, progress reports, Testing Procedure Specification (TPS) documents to make sure that everything is on budget. I find it ironic that we spend money on making sure we don’t go over budget. What is the point of writing stuff that nobody is going to read.
Cure for the hangover? Embrace chaos! Give some liberty to people to work without reporting or detailing everything. At the end of the day it doesn’t matter how you did it, the point is that you did it right.
Like my mom used to say:
All roads lead to Rome
Just because is different, doesn’t mean is good or bad, the point is to get where we want and on time.
A personal blog where I write about my current projects, work and interests. The posts are a reflection on my current self, varying over time, since change is the only constant.
Welcome to G To The Square, my thoughts on ICT, Business and Life... in a Square.