Objects and Classes (brief)

This is going to be a high level post about classes, objects and scope. So in Ruby a class is where you create objects and objects become instances of that class. In makes more sense in terms of an analogy. If you think of a class as a classroom you have student objects that are instances within that classroom.

The students have relationships to one another they might be the same age or be the same height, same gender, but they are all unique. If I created this classroom of students (students class) I would define it in ruby like this;

class Students

Always first letter capitalized. To create a new object (or student object) in this class I would call the new method on Students and would store this in a variable.

student1 = Student.new
student2 = Student.new

notice: student1 is something totally different from Student.

Last post I talked about the initialize method, that method defines the parameters that you can pass when calling .new on a class. So you could have default height, gender, age any number of parameters set for a new student or you could define them specifically for that instance of your class.

If you haven’t seen already an important thing to note about classes is inheritance. Some programming languages do this different but in Ruby to inherit the behaviours from another class you just define it at the same time you are defining your class.

class Students variable
instance variable -> @variable
class variable -> @@variable
global variable -> $variable.

So when you are defining the variable it is important to remember to use the correct prefix based on where you want to use it. A class variable has to be initialized when you create them and that variable will then exists for all objects that are crated within that class. For example @@size_of_feet if created in the Students class would be available for each instance or object within the class. Similarly we could define a variable that would only be used in one instance of that class like @favorite_hockey_player just for the boys object in the students class.


Every time you see

def some_one

‘some_one’ is a method. Methods let you store a block a code and execute it when you call the method name. You can also use  a method to pass arguments. If I said some_one(name) that would be an argument for the method. I could then say:

def some_one(name)
puts "Hello #{name}"

Which would allow me to do this.

=> Hello Kyle

I can also use a default for the method argument.

def some_one(name = "there")
puts "Hello @{name}"

Hello there

Those are really simple examples but there is no need to complicate things. A method stores some functionality that you can call later, it becomes more useful when you pass it arguments. In the Ruby documentation they give an example of a greeter method where they create a say_hi and say_bye method in that instance you could call a method depending on whether the user is coming or leaving the site. It’s common to group similar methods into a class, we don’t cover that here but there is a method called ‘initialize’ called inside of classes that is very important. You will see the initialize method a lot so it’s important you know what is happening.

The world initialize in english means to start something so think of it as the method that starts things off. An initialize method will hold methods that will happen automatically every time an instance of a class is created. This just means if we setting methods inside the class they will have the opportunity to use the default values that have been set or whatever the initialize method contains. I will give a quick example here before I finish explaining what initialize does to help try to make it clear.

class Greeter 
 def initialize(name = "world") 
  @name = name 
 def say_hi 
  puts "Hi #{@name}!"
 def say_bye 
  puts "Bye #{@name}, come back soon"

So what is happening is we are telling the computer that when we call the say_hi or say_bye method there should be parameters of a name passed. If there aren’t any parameters passed we will say world. If name didn’t have a default value it would just be (name) and below it we have created the instance variable @name which = the value of name. So if you did pass a name it could have been stored in that variable. Here’s how it looks in action.

>> class Greeter 
>>  def initialize(name = "world") 
>>   @name = name 
>>  end 
>>  def say_hi 
>>   puts "Hi #{@name}!"
>>  end 
>>  def say_bye 
>>   puts "Bye #{@name}, come back soon"
>>  end 
>> end
=> nil
>> b = Greeter.new()
=> #
>> b.say_hi
Hi world!
=> nil
>> c = Greeter.new("Kyle")
=> #
>> c.say_bye
Bye Kyle, come back soon
=> nil
>> d = Greeter.new("Kyle","John")
ArgumentError: wrong number of arguments (2 for 1)
	from (irb):16:in `initialize'
	from (irb):16:in `new'
	from (irb):16

I’m creating a new instance of the Greeter class. Every time I do that it’s running the initialize method which is allowing me to pass no parameters and still get Hi world! If I call the new method on greeter then pass “Kyle” I can use the variable I stored that parameter in to say Hi Kyle or in this case Bye Kyle, come back soon. Lastly you can see that it won’t accept more parameters than were defined.

There are a couple other things to know about initialize:
– How do we pass the arguments into initialize?… the .new method takes values it has and passes them into initialize.
– Once we start adding arguments to .new it always expects them… unless we set default values.

– If you are working with an object and what to know what methods have been defined on it you can call .instance_methods(false) … if you just called instance methods it would return all of the ones defined by ancestor classes.

Last thing we are going to mention about methods because you will see it so often is attr_accessor methods. There are three attr methods
attr_accessor – creates a getter a setter
attr_reader – creates a getter
attr_writer – creates a setter

The reason you wouldn’t just use accessor for everything is mostly because of performance you don’t need to have a bunch of methods in your program that will never be called.

Getter and setter methods.
above we created an instance variable of @name so that we could read the name we passed in the arguments but if we want to be able to write the name we need to do something that looks like this.

def name =(str) 
 @name = str 

That way our name is set to a string.

so by saying

def name 

We can read the name and the above lets us write the name. Creating these two types of methods happens so often that ruby gave use attr methods to speed up this process. I’m sure you can tell from my description above which one does which.

If I want to create them all I have to do is call them.

attr_accessor :name (does everything I did above) getter and setter both finished and the instance variable is still available for use so I could also make other methods within my class like.

def greeting 
 "Hello #{@name}" 

Then I can do a bunch of different things once I call .new on the class. I can set that instance to a variable g, set the name with:
g.name = “Ron” … then call my new greeting method
g.greeting => “Hello Ron”

Hope that helps clarify some things I will probably be back to make changes to these posts but in the meantime check out the Ruby documentation if anything I say doesn’t make sense.

What’s Stopping Your Career From Being Outsourced?

If I wanted to I could outsource my latest stats assignment to an MBA graduate in India, who also holds their CPA, CFA and is incredibly proficient in excel, for roughly $6.00 an hour. Sure they might not have perfect English, but they’re MBA’s..working for $6.00 an hour! Almost all businesses are aware of this option and many big corporations are taking advantage of it. Luckily there is still one thing on your side; innovation. The ability to make heuristic decisions is something you won’t get overseas. These types of decisions coupled with creativity, common sense and problem solving are the factors that’s keeping a large number of jobs in North America.

If companies are aware this then why are so few taking the steps to create a culture which encourages innovation? More importantly, what are the things we should seek out in companies that will help us become innovative and stay relevant in an increasingly outsourced global workplace?

Encourages Innovation Checklist:

-Self-Governance (Autonomy)

In a perfect innovative world an employee would have autonomy over their task, their time, their technique and their team. The principle of the four T’s is taken from Daniel Pink’s book Drive.

  • Task: Many businesses are starting to set aside time designated specifically for innovation. This may be an afternoon a week or a day a week, it’s different depending on the organization. The concept is; to spend your time working on anything that interests you. Facebook has hackathons and Twitter has hacker weeks. These are both a form of have autonomy over task. These short time periods have produced some important products and led to bug fixes in both companies. This goes to show that when people are doing what they are interested in, on average productivity goes up.
  • Time: Not only do people work more efficiently on projects that interest them but when they are working during the hours that they are individually most productive the results are incredible. Not everyone peaks mentally between the hours of 9 and 5. Knowing this, a company that allows it’s employees to work flexible hours is already way ahead when it comes to encouraging innovation.
  • Technique: A popular technique among the most innovative companies in the world is the idea of “lean production”. Eric Ries describes this process with detail in his book “The Lean Startup” The model has three simple parts; build, measure and learn, where the amount of learning being done is what your growth is based on. A company using this strategy is clearly focused on solving problems wherever they may be created instead of pushing them down the production line for someone else to deal with. These types of techniques mixed with a good team of people are key ingredients for creativity and innovation to flourish.
  • Team: Again, to use Facebook as an example again, a common corporate policy is letting new hires place themselves on a team of their choice. This way they don’t feel like they’ve been dropped into an uncomfortable situation, and they are hopefully excited to get started from day one. It is common to be in these small work teams for the duration of projects which could last months or years so the ability to pick the team you will be working with is a huge factor in employee satisfaction.

-Results Orientated Workplace.

Being able to focus on the end goal and not necessarily logged hours is another benefit of a being part of a forward thinking organization. Most large companies find comfort in seeing people at the office whether they are being productive or not, where as companies who place an emphasis on innovation prefer to focus more on results instead of man hours. This type of atmosphere allows for creativity, and encourages employees to find the best possible solution to the issue instead of showing up to work because you have to or you will get fired.

-How they structure rewards.

Contrary to popular belief, money is not people’s number one motivator for picking a certain job. That being said it is easy to tell an “old-school” company apart from one with forward thinking beliefs based on their reward system. This would be an interesting question to ask in an interview because it also gives away the competency and management style of the leaders who are conducting the interview. The most innovative cultures are not built around extrinsic rewards. This means that a positive behavior is met with a reward, usually monetary. In the best organizations they pay their employee’s enough to “take money off the table”. Meaning above industry average salaries to the point where people aren’t contemplating how much overtime they will have to work to make x amount of dollars. They also use the underlying goals and mission of the company to give people intrinsic benefits for being a part of the company. By using “carrots & sticks” as a reward/punishment policy, (Again taken from Drive by Daniel Pink) people lose their sense of intrinsic motivation while also diminishing performance and crushing creativity. Using this strategy can also actually encourage unethical behavior. A situation where these type of rewards proved to be a complete failure occurred when trying to reward teachers for educating their students. In this scenario teachers would receive monetary compensation if their classroom grades were, on average, above the norm. This led to cases of teachers blatantly helping the students cheat and just handing students grades that were signifcantly higher than actually earned. Jim Collins says in his book Good to Great, “Expending energy trying to motivate people is largely a waste of time”. This example proves it, if someone isn’t motivated by intrinsic factors then the motivation received from external benefits almost certainly has a shelf life.

-Do they encourage mastery?

If you are stepping into a career you are passionate about you probably have goals of eventually becoming a master of that profession. An important question to ask any employer is; what emphasis do they put on training their own employees to make them better at their jobs? Many companies have internal training programs as well as paid external workshops where they encourage employees to never stop advancing their careers. These types of incentives are not uncommon anymore and you should expect that if your employer wants to keep you around for a long time that they will be willing to invest in your future.

-They have a clear goal/purpose

Finally, you should consider whether or not the employer in question has a clear goal or purpose. Does the company have an all-encompassing reason for being in business beyond making a profit? Almost all companies that value innovation do. If they didn’t how would they entice people to work for them when they aren’t using extrinsic rewards to motivate people? For example, Apple has an overall goal of making life easier for their customers with beautifully designed products. Google wants to organize the world’s information and make it universally accessible and useful. Toms wants to put a pair of shoes on every child’s foot, and the list goes on. In these cases, going to work is more than just a job, you have a purpose and are working for something bigger than you. If you talk to successful people, many times the most satisfying moments of their life will be work-related and with that, their ability to create something of value or make an impact on people’s lives. This greater sense of purpose is a key element inherent of a   rewarding lifestyle.

Simply being aware of what the most innovative companies are doing to promote innovation will help you make a more enlightened choice when it comes to picking an employer to begin your careers with. You may prefer more structure, or think you do, but an innovative workplace has proven to be the most satisfying.

“It would be an impoverished life if you were not willing to value things and commit yourself to working towards them,” Daniel Pink.

Find Web Developers on oDesk

Recruiting Recruiters

The first post I made on this blog I briefly described the project I was working on at the time. That was in October and I was planning on launching by December, partially the reason that I haven’t posted here since that deadline. Either way, mid February and we’re finally “ready”. (Who said the first product had to be perfect?)

If your reading this you’ve likely been directed from an email from me and still have almost no idea what the site is about or what I’m trying to accomplish. So if you have five minutes to spare I will answer these questions for you and explain why I emailed you in the first place.

Brief Background

If you haven’t visited the site yet  (www.kareers.ca) we are focused on getting students and recent grads into entry-level careers. Prior to building the site we found there was a huge problem in this market. It was becoming increasingly difficult for graduates to find a career in their field and if they did it was usually with the first company that offered them a job. Two things were to blame for this situation; 1. Most employers were looking for an extensive amount of experience that graduates didn’t have. Without this experience and no way to show off their skills beyond a resume they were forced to take whatever job they could find.  2. New entrants to the job market had no say in what type of company they wanted to work for, they were simply happy to have a job at all. Because there was no “market” for the best entry-level talent, a strong graduate would have no leverage to find the best job possible.

Our solution to this issue is based on the idea of using video to show or teach what you know instead of just making claims on a resume. The video gives job seekers the ability to stand out in ways that were never before possible. We feel that the entry-level market is the perfect place to take video resumes mainstream because these candidates don’t have the experience to fall back on. Having the opportunity to show off their skills in a video instead of having to rely on family contacts and the sheer number of resumes sent out is a huge advantage over anyone waiting for something to “come up”. It also gives the employer a better idea of who their applicants are so  if they were to get called in for an interview they would know that employer is actually interested in hiring them.

The second and most important part of of our solution (where you come in) is our model of “for students by students”. We want Kareers to represent a community of students who have the same values and beliefs as us, not just another job site. This is especially true when it comes to education (See our homepage). We know that our demographic is a lot more capable in the workforce than we get credit for. We are so confident in this we want to give individual campuses the opportunity to run as a student ran franchise for Kareers. In business school we are presented with case study after case study of what to do in situations however it is rare to actually get the opportunity to make important, strategic decisions within a real company.

How you can help. 

There are three things that you could potentially do for us. First, there is a citywide manager position that we are currently hiring for Canada wide. Second, we plan to have campus rep’s running “franchises” in each post secondary institution. Finally if you are not interested or have other commitments we would greatly appreciate you suggesting this opportunity to a capable friend.

What’s in it for you?

As a city-wide manager – This person oversees the team’s of campus reps and citywide strategy for the company. The business model of our company is to sell job posts and the ability to view the profiles on our site. We initially plan to populate the job results with free postings however when selling the posts we plan to pay large commissions to our sales reps who are part of the on campus teams. As a citywide manager, however, you would get a percentage of every sale made from every campus you oversee. On top of this we want to offer a more traditional recruitment option for the exceptional student talent we represent. We plan to charge this out on a percentage of base salary. Again we offer a large percentage based commission from this placement which you would be entitled to.

As a campus rep – We eventually want to grow these teams to a large number of people so they can all participate in decision making and various parts of the business process. The positions among campus reps will vary from marketing and advertising to sales and HR. The sales people will directly benefit from commissions however the majority of each sale will stay within the “franchise” giving the team operating income to make monetary decisions on other facets of the business. To determine who initially occupy’s these positions on each campus we have added a “reffered by” section to our sign up process. Students who are interested in being campus reps can direct people to sign up on behalf of a team name, the team that gets the most signups for their school holds the inaugural position.

The benefits of being a campus rep include:  You would obviously get in-field business experience making important decisions on behalf of the company – You will have direct access to employers we work with and the best jobs in your area. (We want to build an awesome place to work but focus on helping even our employee’s achieve their career goals) – There is an opportunity to earn a real income while gaining experience – You are part of an awesome community and will have the power to find your deserving friends awesome jobs too.

If you are interested in hearing more about our efforts or either of these positions please email me- broc [at] kareers.ca. If not maybe you have a friend in mind who would be? The introduction would be greatly appreciated.


Dying in limbo, Inception style.

You would have to of seen the Leonardo DiCaprio movie Inception to understand the title. To be honest the movie was so confusing I’m probably not the best person to explain it to you. The just of it was being in limbo means you could never make it back to real life and were inevitably doomed. The movie isn’t great but it’s an awesome business analogy.

Being in business limbo means you aren’t necessarily failing, or you don’t know you are, but you also aren’t winning either. It’s the state where your too nervous to check your stats or implement any sort of metrics because you know they aren’t great. Your well aware of this but you push forward doing what you were doing anyway because it’s less painful. Maybe you even “try harder” with your current strategy.. ah that’s the key, why didn’t you think of that earlier!

Quoting Eric Ries from his book The Lean Startup, “If you cannot fail, you cannot learn”. Ignoring the facts or not having any facts to ignore in the first place isn’t doing you any good. Very few people get it right the first time or don’t pivot their businesses at all while they are growing. There is no shame in altering your course if you find out something isn’t working. Need some proof? The founder of Sony started out making rice cookers. Western Union originally boycotted the thought of a telephone becoming mainstream. Bill Gates’ first company called Traf-O-data, focused on collecting traffic data and creating detailed reports for engineers, ultimately failed. Ironically Jack Dorsey (founder of twitter) was also fascinated by the flow of traffic and spawn the idea for twitter from this. You don’t need to be reminded how all of these stories ended up.

Personally I would chalk up businesses or ideas that go into limbo to a lack of passion. Telling a grown man that his business isn’t going to work out unless he is passionate about it is like a 14 year old boy telling a girl that likes him it will never work out. She hears those words and thinks to herself, “he must like me”. Likewise, the business man hears the advice and thinks to himself, “yah for most people, not me”. The reason I know this is because I was one of those people. Somehow I thought that I would be different that the million other people selling software online or who has an idea for a niche social network. While I don’t deny that networking is extremely important and success can be found even if the site doesn’t scale I realized I don’t really care to tweet about and comment on blogs about principles of networking all day. Meeting people is awesome, talking about the best ways to do it all day, not so much. The key was I realized this quickly, I didn’t keep banging my head against the wall hoping one day something would click and all of a sudden I would love it.

A number of companies share this idea, some have even made it mantra’s to live by; “fail fast and fail often”. When used effectively your company stays in-tune to the needs of your customers and is always learning and adapting. This relates to a question I recently read on twitter for a startup enthusiast (I forget who). The question was; What is the best way to deal with arguments between cofounders? Answer: If the basis of the argument could be solved or identified with metrics they should look to this first. A test that had physical results was the most effective way of backing up an argument and would usually settle things. If not, they would usually both have to compromise.

The reason this answer is so interesting is because most people don’t do it. They sit around arguing hypothetical solutions. Even worse, when asked how a new feature is working will give vague answers like, “pretty good, people seem to like it”. That shouldn’t be a satisfying answer for you. In this scenario how do you know where you can further improve on the feature? You don’t. It’s all guessing games. You aren’t failing here because of ignorance not because of anything positive. Again, if you can’t fail how do you learn???

A popular excuse companies have for not using social media is they don’t want people posting negative comments on their Facebook wall. If your company sucks or a customer had a bad experience they will find a way to get their voice heard whether you have a Facebook page or not. The only difference is, if you aren’t using social media you are ignorant to the problem. Wouldn’t you rather be aware of whats going on so you can offer solutions and try to mend relationships? I’d hope so.

Don’t limbo!



Talk is Cheap

It seems everything I read these days has one underlying message: stop talking about it and go build it. Clearly a lot easier said than done or everyone would be selling books and not reading them. The most ironic thing is some of my friends will talk to me about ideas they have and I’ll give them the same advice. It’s good advice but without ever having launched something myself I was being a bit of a hypocrite. I talked in my first post Career Hacking: Step 1 about the long term project I’m working on, I even said I would be launching it this month. Needless to say that isn’t happening, the date has gotten pushed back to January (another two months ish).

This brings me to the reason for this post. I tend to talk about doing stuff a lot, or used to, now I try and wait until I have something to show before I talk about it. But even still, I realized I shouldn’t be offering the “go do it” advice when I haven’t pulled the trigger myself. I have good intentions believe me. You know what’s a lot easier than actually doing something? Reading somebody tell you that you should do something. I don’t know whether it’s a human instinct to look for that encouragement or whether it’s procrastination but I’m a victim of it either way. I’ve watched Gary Vaynerchuk inspire audiences to the point of them cheering, I’ve read Mark Cuban talk about learning through failure on the job instead of in a classroom, I’ve even read James Altucher talk about acting on ideas (among many other things) yet I was still a virgin to launching anything other than this blog.

Enough of that. I’m about to go on a launching spree. But in my new fashion I’ll only talk about what I’m actually doing today. A little synopsis: I started thinking about what kind of product I could get out quickly a few weeks ago while lying in bed (I have a broken leg… that’s another story). Ideas aren’t the problem, It was making it simple enough that I wouldn’t have to deal with extensive outsourcing etc… since I can’t code. A blog post I had read a while back called The 9 Skills Needed to be a Super Connector  (ironically enough it’s by james altucher and has a picture of mark cuban in the heading) sparked my creativity. I loved the thought of being a super connector, I know some friends who are bar managers who have 5000 Facebook friends and it seems pretty fun. A page of jot notes later and I thought a business version of eharmony with me playing matchmaker was a good enough idea…. no joke. The beauty of actually starting something is you get to quickly see if it was a good idea or not. Implement, test, either pivot or move on to something else. If you can get the “product” out with next to nothing invested what’s the harm in trying out an idea? Nothing. The hypothesis behind this idea is that A. more businesses would get started if you linked people together who had similar ideas/passions B. people in general want to meet new people, especially for business purposes and with a third party intermediary the stigma of the initial introduction is taken away.

In my head it seems rational and with this new strategy I’ll be able to find out without spending thousands of dollars and wasting months of time. The product is painfully simple. It’s a premium wordpress theme with a facebook plugin. Domains were a little bit of an issue but I liked the idea of incorporating the suffix to the url so I called it youherand.me. Obviously you can’t just make a site live and people will magically find their way to it, unless you have some amazing SEO I guess. But i don’t. I’m forced to use twitter and basically any other way of finding people I think might be interested.

Getting something to mass market these days doesn’t seem that hard, especially with something like this because there is very little  resistance to signing up. My plan is to use guerilla marketing but not in the sense of spamming telephone poles with flyers. Guerrilla marketing has taken on a whole new meaning, maybe it should even be changed to Owl (they have good hearing) marketing because the goal is to listen for every conversation that is going on about your product/service/industry and be a part of it. These conversations could be on Twitter, Facebook, LinkedIn or focus groups other places on the web, it doesn’t matter where it just matters you are a part of it. Not having time to interact with all these conversations is the number one complaint I hear from businesses. I don’t doubt that you are busy but like @Garyvee says; if the phone rings in your office your probably going to answer it, ignoring these conversations online would be like trying to run a business by constantly ignoring your customers.

Continuing with the do don’t tell mantra, I’ll be using mostly Twitter to start joining these conversations. The twitter account for this site is @youherme so if your calling my bluff you can see the ground work I’ll be putting in on that profile. Side note: the conversations won’t be completely open because If you just @ mention someone without them following you first it can be related to yelling at a stranger on the street, not very effective. My goal is to follow people who are talking about related topics such as networking, creating jobs etc and do quick research on the people who end up following me. I will then direct message them with something actually relevant to what they are doing and ask them to check out my site.

Before you can really judge whether something will catch on at least a few thousand people need to check it out. If the people who sign up have a positive referral ratio to their friends, you have something. If not it probably will never be mainstream. In this case having millions of users isn’t crucial and the service could be beneficial no matter how few of users however the more the better.

Let the sweat equity begin.

How to embrace entrepreneurs as employees

I had just finished placing the order of all the supplies that would fill the Proshop that summer. It was my first week on the job as Proshop manager. The golf course was more or less a dump but I loved golfing so I figured why not spend my summer hitting balls on the driving range and getting paid for it. My boss wanted me to fill up the shop with “the usual stuff” and an inordinate amount or head covers. No budget. No past records. No prior knowledge. Just whatever I thought was necessary.

I used my best judgement based on the demographics of the members but come middle of the season anyone could tell I was clearly off point. The give aways were untouched Prov1’s (expensive golf ball) and the obvious shortage of animal head covers. The owner would run comparison reports of last years sales to that current year and be furious every time. My coworker and I tried to explain that there weren’t even the same products in the shop not to mention there were multiple rainout weekends which clearly affected sales. He didn’t want to hear it and because of that I almost got fired.

At the time I knew he was a bad manager but I never took the time to think about what actions he could have taken to set me up for success. I ended up taking the blame and chalked up the shortage of sales to a learning experience that everyone in that position would of had to go through. This is exactly the excuse that Eric Ries tells you to avoid in his book “The Lean Startup”. This personal example doesn’t have anything to do with Startups but the principles can be used in existing businesses as well. His model for Startups is simply build, measure, learn where the amount of learning being done is what your growth is based on, not user statistics. The idea is to go through this process as fast as possible with small changes each time. In this type growth model everyone is affected by the progress of each new task because they each see it all the way through, no matter what their job title.

This idea of lean production has been taken straight from the Toyota manufacturing plant. Their employees don’t pass problems on down the production line to make it look like they’re making progress. If anyone see’s a defect on a car they have the ability to shut down the whole line. The problem is addressed then and there even if it means holding everyone else up. Their philosophy is “we’re ok with having every possible problem happen exactly one time, having a problem repeat itself is unacceptable.”

The real reason this book reminded me of my golf course experience was because of his major point of how important it is to always be testing and learning. When you input a change and you have no way of knowing how it has affected your customers decisions what good was it? Your product may look better but is it more functional? …In comes batch theory. The smaller the batches the more efficient the testing. In the chart below each letter represents a batch.  There is a limit of 3 open batches in each bucket at any given time. This format of implementing new changes forces you to build in metrics for validating hypothesis before starting new ones. Remember each change should come with a hypothesis of the positive effect it will have on the customer, basically whether or not this was a good idea to do in the first place. The metrics involved can be as easy as split testing (running the product with the new change to half your customers and leaving the old product to the other half, measuring the results)

Backlog In Progress Built Validated

In my example I was ordering products, from a Canadian supplier, to fill the entire Proshop. The demand for products was low and  the turnover rate was only twice a season. In retrospect this was an absurd process, it’s not like the products would take weeks to arrive or we were paying huge amounts for shipping. This one big order could have easily been cut down into smaller batches with the ability to measure and learn about the customer needs before placing the next order.

In a retail sense this process might seem obvious, however in web business it is an all too common mistake. People build products for an unknown customer all the time. They either don’t know who their customer is or the customer doesn’t know they need the product. Because these companies don’t practice this lean development process they haven’t done any testing to prove their hypothesis about whether their customers want the product or not, therefore the product usually fails. Eric encourages companies to build minimum viable products (MVP’s) which have the least features possible to accurately test the hypothesis. This product might not look good or function great but after testing your idea is either validated or it isn’t. People worry about tarnishing their brand by releasing a bad product but the reality is not that many people will see it anyway but if this still bothers you, you could launch under a different name. Based on the success of the MVP your team can then make an educated decision on whether to preservere with the original idea or pivot. There is no shame in pivoting your business in new business if it means it can be viable. There is shame however in keeping the company in limbo where your neither dying nor growing at the rate you had intended. If you are constantly testing ideas and seeing how customers respond you should never find yourself in this situation because you have the data to know when something isn’t working and to continue in that path would be a waste of time and energy.

The idea of testing an MVP  before developing a prototype or a ready to launch product is a mistake I’ve made myself. Even before reading this book I had realized that the easiest way to know if there was a market present was to get out on the street, talk to potential customers, make a basic product and charge from day one. This seems like such an easy concept but when you have ideas that you think are great in your head part of you doesn’t want to be realistic and even have the opportunity to hear that no one wants your product. This a huge mistake because you just keep your head down wasting time and money on something that is destined for failure. If you cannot fail you cannot learn. I encourage people to fail fast and fail often because if you aren’t learning you aren’t growing. The hardest part is taking my own advice.