Reading this blog post is a choice, everything around you is the result of the decisions you’ve made during your life. Yes, there is luck, and faith, and karma, and many other things that many of us believe on, but in the end, it is our choices and those of the people around us that make our lives the way they are.
So you want to be a software engineer? What choices are you making today to make it happen? Are you in school studying computer science? Are you learning by coding a simple project, or perhaps learning the basics online at Codecademy or Udacity, or Girls Who Code or Code among many others. I believe reaching your goals is all about making multiple tiny choices as you go along.
Do you want to be an entrepreneur? It is your choice, just do it (please don’t sue me Nike). Do not say you want to be an entrepreneur, start a company and then complain about not having time, or the necessary resources, or the connections or a great idea. Don’t wait for the perfect time, or the ideal partner or an excellent idea, go ahead and try it today. If you still think is not possible then all you are doing is choosing not to be an entrepreneur.
Do you want to help people in need, volunteering at a local charity or something similar? That is great! All you have to do now is choose to help and make something happen. Choose not to think of the many excuses out there and instead choose to participate in a charity or similar organization where you can help with your time, money, skills or any combination of these. Just do it.
The next time you think of something that you want to accomplish, not just think about it but do something about it. Doing something, anything that might help you get closer to your goal helps, and avoid any possible excuse you will undoubtedly use to convince yourself why your dream is not possible, it is your choice, make it happen.

Many companies today track bugs and features in a bug tracking system, this is a good thing. It is necessary to record bugs which I define as things that aren’t working in a software application and that have the potential to affect the performance and output of such applications. When a customer calls and tell us that they couldn’t purchase an item in our website, or that some data does not look correct, or that they got an error and the application is throwing some obscure error message then you know that there is a problem somewhere. It doesn’t necessarily mean that there is a problem with the software itself, it could be a problem related to another system being down, corrupted data in a database, lack of permission, etc… When something like this happens, companies big and small need to have a bug triage system that allows them to sort out these bug reports before they go into a bug tracking system and are exposed to software engineers.

Bug Triage Done Right

In a hospital, triage happens the instant a patient arrives through the emergency room doors. His vital signs are checked, his status assessed, and he gets sorted in amongst all the other patients waiting for treatment.

Bug triage is a lot like that because we assess bugs to determine whether or not they have enough information to be worked on and assign a priority to them as soon as possible.

Triaging bugs consists of several things:

  • Responding to new bugs as they are filed.
  • Ensuring that new bugs have all the necessary information.
  • Assigning bugs to the proper package.
  • Confirming bug reports by trying to reproduce them.
  • Setting the priority of bugs reports.
  • Searching for and marking duplicates in the bug tracking system.
  • Sending bugs to their upstream authors, when applicable.
  • Cross-referencing bugs from other distributions.
  • Expiring old bugs.

If you receive a considerable number of bug reports every day and you don’t have a bug triage system then you are doing it wrong. Remember that each one of these “bugs” will need to go through the steps mentioned above, or at a minimum they will need to be read, assessed, and sorted so that it can be easily reproduced, fixed and tested if they are in fact bugs. I have worked in projects where software users had the ability to add bugs to our bug tracking system causing us (the software developers) to deal with a large numbers of items where only a small percentage of them were real bugs. This is wasteful and it hurts the productivity of a software team, make sure that whatever gets logged in your bug tracking system is in fact a bug that has all the information necessary to be reproduced, fixed, and tested. Have a system that checks for the things listed above and be very careful not to pass bug reports to software developers without confirming them during the bug triage step. You’ll have happier developers and a better product overall.

Below is a flow chart showing you the basic steps of bug triage:

Bug Triage Flow Chart
Image credit: Ubuntu.com

As this flow chart shows, many of the request that come from software users might not even be bugs, they could be a feature request or a support question and that is very common. The bug triage step should be the first thing you do with all bug reports added to your bug tracking system and if you are not doing some sort of triaging you are doing it wrong. If your bug tracking system doesn’t have a way for you to do bug triage, don’t worry that not everything is lost, you could simply create a spreadsheet where all the new bug reports are sent so bug triaging can be done.

Confirmed Bugs

The result from bug triaging are confirmed bugs, and when a bug is confirmed the status should change to “Ready”, “Confirmed” or “Triaged” so it can be made available to the software developer to work on it, after the importance and priority have been set. Before changing the status of a bug report make sure you have answered all the questions below BEFORE you mark it as Ready, Confirmed or Triaged, or whatever status you choose in your system to pass it on to the next level:

  • Does the bug report describe a valid bug?
  • Does the bug report contain enough details?
  • Is the bug report ready to be worked on by any software developer?

Only if ALL of these conditions are satisfied, you can change the status of the bug report and move to the next step which is setting the importance and priority of this bug.

Setting Importance Of Bugs

Below are some examples and the meanings of the most common importance values:

  • Undecided: The default for new bugs. Also means that there is insufficient information to determine importance. PLEASE mark all of your bug reports with this status as they are entered into your bug tracking system.
  • Wishlist: Missing functionality.
    • These aren’t always bugs, but can be ideas for new features which do not yet exist.
    • These can also be requests for new features.
    • If it is non-trivial to implement, it should rather be written as a feature specification.
    • These can be bugs that affect an experimental extension or non-essential feature of a given application/project.
    • Bugs that would only be fixed on a best-effort or outside-contribution basis might also be considered wishlist.
  • Low: Bugs which affect functionality, but to a lesser extent than most bugs, examples are:
    • Bugs that have easy workarounds
    • Bugs that affect unusual end-user configurations or uncommon hardware
    • Bugs that affect a non-essential aspect and limited scope of the application
    • Bugs that have a moderate impact on a non-core application
    • Cosmetic/usability issues that does not limit the functionality of a non-core application
    • Non-ideal default configurations
  • Medium: Most bugs are of medium importance, examples are:
    • A bug that has a moderate impact on a core application.
    • A bug that has a severe impact on a non-core application.
    • A bug which impacts accessibility of a non-core application.
    • A usability issue that does not limit the functionality of a core application.
  • High: A bug which fulfills one of the following criteria:
    • Has a severe impact on a small portion of your application’s users (estimated)
    • Makes an application generally unusable for some users
      • For example, if a certain area of your application does not work at all, or on a specific browser version, etc…
    • A problem with an essential hardware component (disk controller, built-in networking, video card, keyboard, mouse)
    • Has a moderate impact on a large portion of your application’s users (estimated)
    • Prevents the application or any dependencies from functioning correctly at all
    • Renders essential features or functionality of the application or dependencies broken or ineffective
    • Impacts accessibility of a core application
  • Critical: A bug which has a severe impact on a large portion of your application’s users
    • Causes data corruption
    • Crashes the entire application or operating system
    • Renders the system temporarily or permanently unusable
    • Severely affects application’s core functionality

Once the bug reports have been set with the right importance, then it is easier for everyone involved in fixing them to know what bugs are priority.

Software developers are the ones who should set the bug report status to “Dev Complete” or something similar as soon as they have fixed a bug so the QA team can test again and make sure the bug is fixed. Involving your QA team early on in this process is key, you shouldn’t wait until a developer is done “fixing” a bug to get QA involved in the process… it is too late by then and I will write about this in a future post.

Invalidating Bugs

Sometimes, you will have to invalidate a bug report. There are bugs reports that just don’t seem as important or perhaps are lacking a lot of details so they just get added to the “to be triaged” group. Yes, I am talking about those bugs who stay in a backlog with the same status in a bug tracking system for days and even months, these should be invalidated, retired, or removed from your bug tracking system. If you keep these bug reports around because you worry these might be real bugs, then removing them will not make any difference, if it is a real bug it will be reported again, trust me.

You see, when a bug report does not seem to be critical, or perhaps it falls to the bottom of a list because there are so many other bugs with higher priority, then you should consider how you handle these not so important bugs. My advice is to let them expire automatically. You can set up your bug tracking system so if a bug report doesn’t have any status changes, or any new information added to it for 60 days then it automatically expires and it is invalidated from your bug tracking system. If you don’t do this, then is really easy to end up with an unmanageable number of bug reports and as Joel Spolsky wrote a while ago, you’ll be just adding software inventory to your team. It is not a good thing, check it out.

Keep It Simple

As with ANY other system, find what works for you and your team and stick to it. Avoid at all costs the idea of keeping ALL bug reports that get submitted to your bug tracking system. Just like your to-do lists, if it goes unmanaged, the items at the bottom of the list end up just wasting space, are forgotten and it also makes the to-do list incrementally larger than what it really is. Keep it simple, triage all bug reports, fix them and test them. Do not keep bug reports around thinking that one day you’ll get to it, you never will and if you do, it is because you or somebody else made the bad decision about spending time and effort on something that was very low priority and probably not important.

Every time you open your bug tracking application and then you look at the feature or bug backlogs and realize you have just too many items, do not cry, just remember to set an expiration date on all backlog items. I suggest 60 days, and as your process gets better you can then lower this number, IF you make it more than 60 days, don’t be surprised if some of those things never see the light of day.

Feature requests can also become a problem, every time somebody suggests a cool new feature or has an idea… make sure you look at your backlog first and decide if this new feature or idea are worth doing in the first place, this might prevent you from wasting time documenting and designing a crazy idea that might also never see the light of day.

Keep your backlog and entire bug tracking system lean and tidy, and hopefully you’ll spend less effort working on things that never see the light of day. Trust me, “Backlog grooming” sessions is something to be avoided, it just adds to the overhead and more meetings, who wants to do that?!

We have great and exciting news to share with you regarding one of the products we have been working hard for the past few months to get the beta version out. The name of this product is foreverbit and it is a web application to save notes, lists, journal entries and the like in the cloud. The cloud is just a fancy name the technology industry uses to describe software that runs online, where users don’t need to download or install anything in their computers and since the application runs in the browser, it is accessible from any computer or mobile device.

Foreverbit is a solution for people wanting to save notes or anything that they wish to remember when in the road, while browsing, at school, etc… Write notes and remember your thoughts is the goal of foreverbit. There are other solutions out there that offer similar solutions, what we are trying to accomplish with foreverbit is to have a simple product that it is easy to use and very useful at the same time. Foreverbit has two primary functions, to let you write notes and to view them from any device and from anywhere at any time. You can write and view your notes from a Mac, a PC, an iPad, a windows tablet, your phone, etc… We hope you give foreverbit a try and please let us know how we can improve it so it works for you.

We are here to help.

Sign up for a foreverbit beta account today
Follow foreverbit on Twitter
Get our newsletter

These days the word entrepreneur, founder, start-up, small business owner are very common and so it is the idea of starting a new business, especially in the tech and internet industries. Many of us dream of creating the next big thing, an awesome application used by millions of people, a service with public APIs that thousands of developers will use, etc… we are wannapreneurs! that is a term I stole from Patrick Foley’s Confessions of a Wannapreneur talk at the Business of Software conference last year, and from a blog post he wrote about it.

This post has the intention to show you some of the most common things that demotivate people about their ideas and dreams of becoming an entrepreneur and start a business. Hope it helps you as it has helped me while I was thinking and writing about it.

The idea generator

There are some of us who are always coming up with ideas, we cannot stop it, it is something that we have to deal with and it is part of who we are. Some of us might actually convince ourselves that one of our ideas is worth pursuing, and then off we go. One big problem is following up and actually end up executing an idea. While it is fun to think and talk to others about our ideas, the possibilities, coming up with domain names, starting to prototype a user interface, and start thinking about the architecture of the application, etc…, there is always something we need to do first, it is what I call the real work, you know, the stuff that we don’t want to do because we don’t know how or are not good at. This work is something that needs to happen to make an idea become a reality. For example, you can come up with a great idea for an app that will absolutely disrupt some existing technology or industry, before you change the world you need to make sure that what you are about to build is something that people will pay you for it… yes, and to do this you will need to get out and actually talk to normal human beings to tell them about your idea. Get feedback, make decisions, and then start. Register a domain name, work in a prototype, create a landing page, etc. The idea is to have something out there so you can continue with the feedback loop. Are you done? not even close, because if enough people get interested in your idea of a product, it means that after you build it you’ll have to sell it, do the accounting, do some marketing, handle payments, add features, etc… if you are a software developer like me, the thought about doing all these things is scary and is something that you are not looking forward to, I am certainly not looking forward to it. When time comes to do these tasks, remember that doing the tasks you don’t enjoy doing is super important and these tasks needs to get done, they are the means to an end, and without performing these tasks reaching your goal is not a reality.

The fear of competition

There are also some of us who will work and work not minding the boring work as long as it help us get a step closer to our goal. Then one day we realize that there are other people who are also working in the same or similar idea, or even worst (we think) an existing business offering the same type of application or service that we are working on. This usually causes many first-time entrepreneurs to doubt their ideas. In many cases, finding out that there are competitors might be enough for some people to stop working on their ideas or change it completely because their idea is not longer as unique or disruptive as they thought. I have felt like this before, it is hard not to, but feeling like this is foolish. When you want to start a company and there are already companies selling the same product or service that you want to sell, that just validates your idea and the market for it. Of course you’ll have a competitor or many, and that is OK, just make sure your company offers something that the competitors don’t, do a better job marketing your product and make sure what you offer adds value to your customers. Believe it or not, there is usually room for more players in almost any industry and market.

The day job

For many people, starting a company while having a day job is the only way to get started. Yeah many people will say that if you are really serious about being an entrepreneur that you should quit your day job and dedicate 100% of your time working in your startup, that is just crazy talk and usually comes from people who don’t have the need to have a full-time job while trying to become an entrepreneur. In the real world, when you have a family and a mortgage quitting your day job is not a wise idea and I strongly recommend against it. The good news is that you can still create a company, regardless of what naysayers tell you. For example, back in 1999 I was going to college, married, working full-time and we already had our first baby Jennifer, she was one year old. My wife was working for a big health insurance corporation and none of us were happy about the fact that our first child spent almost half a day under the care of someone else. We started a tax prep business, both my wife and I had some background in accounting and personal tax preparation having been preparing our own taxes every year for a while at the time. We asked our family and friends if they wanted us to prepare their income tax returns, a few of them agreed and so we started Sanchez Plus Services (it is now called TodoTax.com) and by 2001 we had a few dozen paying clients which was bringing enough money for my wife to stay home with our daughter. Today the tax prep business has become a life-style business, that is my wife’s home business and TodoTax has now over 500 paying customers all over the US, no office and no employees.

Having a day job while trying to launch a business gives you the option to take care of life expenses and support your business, people who do this usually work in their startup at night and weekends, and yes you can still have a balanced life that allows you to spend time with your family and friends, it is possible. The thinking that if you are not working on your idea 100% of the time is because you don’t believe in it, or at least not enough, is horse shit, each of us work with what we have and do as much as we can, do what works for you not what others tell you. Starting a company while having a day job is harder and it will take longer, yes, but it is not impossible and it is definitely the way to go when you don’t have the possibility to dedicate 100% of your time to your startup, if you need to keep your day job to pay the bills then keep it, and be very strict about spending as much time as you have left to your startup, without missing your life, make it happen. For example, I work on my startup at nights after my kids have gone to bed and dedicate some time during the weekends, usually very early in the morning and late at night. Do what works for you and remember that in then end, it is a personal choice, do what you think is best for you, follow your gut.

The naysayers

We all know them, they are in our family, our friends, co-workers, etc… these are the people who think you are nuts and can’t believe you are wasting your time trying to take a business off the ground. Usually these are the same people who are not ambitious, who don’t go the extra mile, and who work from 9-5 and are very happy about it. That is OK, do not try to convince them about your idea, just move on with it. The reason many people think of creating a business from scratch as a crazy and bad idea is because it terrifies them to just think about it, they cannot see themselves doing it and so they think is impossible for you to do it. Usually these people make very good employees, wannapreneurs do not, since we are not good at following directions, we question everything and are always trying to change things to find a better way, always.

Don’t get stuck with people’s feedback but do not ignore all of it either. If the feedback is just about your idea of creating a business you can ditch that. However, if people are actually giving you feedback about the idea, product or service that you are working on then ditch 90% of it and pay attention to about 10%, that is usually safe as most of the feedback is from naysayers who cannot see what you can. I am not implying to just go for it and create a product without doing some market research to find out if your product/service is something that people will actually pay you for it. Do your research, talk to everyone you can and make sure you get some people to say they will buy and not just like your product, Jason Cohen writes about this in a very direct non-bullshit way in this post, read it, it is good.

Continue with your idea, just working on it will help you learn more about yourself, it will push you to explore other ideas, and even meet people during your journey… the important thing here is that you keep the energy up surrounding yourself with people who will keep you motivated and always keep an open mind and be willing to change your vision, your idea and your goals. Good luck!

I am still working on my ideas (Webmica, StartupInterns), check them out and sign-up if you want to offer feedback and become part of the 10% that I pay attention to.

Most of my writing here is advice to myself and anyone who might need it, use it at your own risk. Cheers.

The annoying sound of the alarm clock crying for attention at 5:00am in the morning woke me up. Everybody in my house was still sleeping, after all it is summer and it was just 5 in the morning! For a moment I thought about going back to sleep and forget about the reason I setup the alarm at such an early time, especially after going to bed around 3am, just a few hours earlier.

About 30 minutes later I was outside and in my car, and I started to drive on IH35, heading north, I was on my way to Dallas to attend a Microsoft Azure Summit. For a while I have been thinking about using Azure for my software startup but have been avoiding it since other cloud solutions offered by Amazon and Rackspace have been sufficient to host a few web applications and image files. The reason I have been avoiding Azure is because the first time I tried it, almost two years ago, I was disappointed with it for various reasons, the product didn’t seem to be ready, it lacked many basic features and there was not enough documentation. I have been using Amazon S3 for file storage and Rackspace’s Cloud Servers for my web servers and database. (more…)

Remember back in the day when everyone started to get into email and sharing messages and photographs was the main reason to use email? It was a new way of communication and sharing personal information and pictures was a cool and painful thing to do. It was painful because images took a while to download with the modems we used to receive these email messages.

Today, most of my Facebook “friends” are family members and close friends, I don’t follow or “friend” people I don’t know personally. For a while, Facebook has been a great source to reconnect with old friends and distant family members. We’ll share photos, messages, comments, etc… However, in the past few months it seems as if most of my Facebook contacts have been attracted or pulled into those non-useful messages that ask you to “like” an image featuring a handicapped person, or a hungry kid, etc…

The “Like This” Chain Status

This is so much like those old “chain mail” campaigns that always have something somewhere telling you to email this or else! This is very unfortunate and expected at the same time, my Facebook feed has reached the point where it looks a lot like my Hotmail account when most of my family and friends started using email and sharing the same things I see in Facebook now like jokes, “funny” photographs they find in the interwebs, “chain mail” like status updates, invitations to play stupid games, etc…

Facebook latest updates are not helping with this, the way the default sort works helps these junk messages to show up on top of my feed as they are the ones with the most comments and likes making them the “top stories” making my Facebook feed unreadable and full of junk information. Yes you can change the sort of your feed, and you can block certain type if updates and invitations, and even some friends that keep on pushing the junk content… and after a while you might even create a new Facebook account where you only connect with really close friends and family in order to avoid the junk information… just like we did with email years and years ago, but I refuse to believe Facebook has become the email of the 90s, and I don’t want to end up having multiple Facebook accounts.

I still have my Hotmail account and I cannot remember the last time I checked it. I know many of my family members and friends keep sending me online jokes, images and chain messages to that account, I am OK with that, I don’t use it anymore, it has become my catch-all junk email account.

Below is an example of the content I am talking about, notice the number of likes and shares…

What to do?

I guess Facebook could do something to help us better filter our feed or even better block those annoying updates that show up on your feed when one of your friends falls for it and click “Like” on even worst, decides to share it publicly. I mentioned above that this behavior and contamination of Facebook is expected, as it is with any network or service that reaches a point where the network effect is so powerful that eventually someone starts to abuse it in this manner. Facebook and all of its users will have a hard time eliminating these type of messages, first because Facebook’s success relies on people liking and sharing content and secondly because most of its users actually enjoy reading, viewing and sharing junk information, unfortunately.

This is a serious problem that is affecting many people who want to use FB to really connect with friends and share things that they care about, and not spend time cleaning and avoiding all these chain statuses which many people seem to enjoy liking and sharing. To see more examples and comments about these FB chain statuses, look at this Tumblr page, showing all messages regarding FB chain statuses.

For now we should just sit and wait to see what happens, in the meantime I am once again looking for a service that can offer image hosting and sharing, and that is easy to use so that my non-technical inclined friends and family members can once again share photos about our family events, kids, vacations, etc… in a platform that will allow us to control the privacy and sharing of our personal media, without bombarding us with ads and other junk content.

Peace out.

As babies, we learn everything by getting to know our surroundings. We listen, we touch, we taste, we smell and we watch. Then we start pushing ourselves to try out something new every minute, every hour and every day. We are restless and never stop, we keep trying over and over again. Our nature is to be curious and imaginative, and at the same time we are very sensitive. As babies we cry, we are loud, we laugh and we get mad… and as adults we are always trying hard to hide these feelings, as if it was a bad thing.

As we grow, we distract ourselves from our surroundings with the so-called entertainment industry, we spent endless hours watching TV, sports, movies, social networks, etc… without paying attention to our surroundings and all the incredible things about it. And do not get me wrong, it is OK to do all these things as long as you also spent time to look around, meet real people, reading, writing and trying out new things.

It is human nature to be curious and creative, and yet we as a society always find ways to make sure we teach our kids not to try new things in the name of good behavior and uniformity, this is wrong. We teach our kids that using a pen with colorful ink at school is wrong, we teach our kids that drawing an elephant with the unnatural shape and using different colors is wrong… and yet we ask ourselves why creativity and innovation is so hard to find these days… I wonder why.

As kids we try hard to learn what we want, we don’t see anything as impossible, our mind is full of adventure and our imagination is at a maximum at all times… until we start going to school and between some teachers and parents we start to hear that all those things we think and believe in are not possible, we hear that to be a good person we need to be reasonable, that we need to think realistically and put our feet on the floor, we are told we need to be realistic… why?!

A while ago one of my sons who is now 10 years old came to me with a Lego car he had built using pieces from different Lego models including a brand new set I had bought for him just hours ago… my first reaction was to get upset because he had not followed the instructions in the Lego manual, I remember  telling him that what he did was not right. How could he have mixed all these pieces to create something that was not in a Lego manual? I was completely blind to the fact that my son was doing what kids do, using his imagination to create something, without following any rules or instructions, just creating something that he liked. He was being creative. I soon realized my mistake, apologized and suggested him to continue building this car anyway he wanted, I told him how much I liked the idea of him creating something with Legos that did not look nothing like the models from which these pieces came from. He smiled.

In most schools our kids are taught to follow directions and to memorize things… they get used to an environment where uniformity is the rule and any sign of creativity is usually seemed as disruptive and it is discouraged rapidly.

That needs to change.

While at home, let kids use their imagination, let them be creative and try not to formalize the way they learn or interact, it is not easy but it is worth trying to offer them a better chance at not loosing their creativity and imagination as they transition into adulthood.

This is something you can also try achieving at work, everybody talks about innovation and creativity, and at the same time most companies don’t have an open mind about new services, products or internal procedures… innovation is something that can only be achieved by taking some risks and accepting change. It is very discouraging to work in environments where everything and everybody looks and acts in the same way or very similar. A place where showing personality and individualism is not allowed or it is discouraged by Human Resources departments usually in the name of wanting to have a “professional” environment.

Be different, be creative, be you. You are not a Robot.