Capturing and Extending Algorithms with the Template Method

When you think of the word algorithm what comes to your mind? Most people think they are something super complex like high frequency stock trading, Google’s Page Rank, or Facebook relevance algorithm.

These algorithms are all very complex and have taken years to create and tune, but the definition of algorithm might surprise you: The definition of algorithm is the following:

Algorithm – a step-by-step procedure for solving a problem or accomplishing some end.

Merriam-Webster

Millions of Algorithms

We all follow algorithms everyday, our lives are a composite of millions of algorithms. My typical morning algorithm involves the following step-by-step procedure:

  1. Wake up
  2. Workout
  3. Eat Breakfast
  4. Drive to work

Sometimes my morning algorithm needs to change. If I am late for work I usually follow my late morning algorithm which looks something more like this:

  1. Wake up
  2. Workout
  3. Quick Breakfast
  4. Drive to work

Just like humans computers sometimes need to be able to adapt their algorithms on the fly. One of the best ways to encapsulate these changes in behavior is using the Template Method Design Pattern.

Template Method to the Rescue

If I were to create my morning routine in some ruby code it would look like this


class MorningAlgorithm
# This method is used to encapsulate the algorithm's general process.
# Notice this method is not concerned how the methods are accomplished
def execute
wake_up
workout
eat_breakfast
drive_to_work
end
def wake_up
puts "Get up you lazy bum"
end
def workout
puts "1, 2, 3… That should work"
end
def eat_breakfast
puts "Mmm mmm tasty"
end
def drive_to_work
puts "Good morning crazy drivers!"
end
end
morning = MorningAlgorithm.new()
morning.execute

The high level steps are encapsulated in the execute method which handles the flow of the algorithm without knowing anything about the implementation of the eat_breakfast or drive_to_work.


# This gist is a continuation of a previous gist which defines the MorningAlgorithm class
# https://gist.github.com/jpotts18/1f4269c9e1f22c963a0d
class LateMorningAlgorith < MorningAlgorithm
def work_out
puts "Nope…"
end
def eat_breakfast
puts "Grab banana and go!"
end
end
late_morning = LateMorningAlgorithm.new
late_morning.execute
# The LateMorningAlgorithm.execute template method will call the following methods from the following classes
# wake_up – MorningAlgorithm
# work_out – LateMorningAlgorithm
# eat_breakfast – LateMorningAlgorithm
# drive_to_work – MorningAlgorithm

The templates method’s responsibility is to enforce behavior not implementation. Now lets take a look at what the late morning algorithm looks like.

  • MorningAlgorithm#wake_up
  • LateMorningAlgorithm#workout
  • LateMorningAlgorithm#eat_breakfast
  • MorningAlgorithm#drive_to_work

This is where the power lies! By using the template method you can encapsulate a lot of your base logic into a class and choose to override methods however you would like.

Real World Application

Let’s say that we need to gather a bunch of data over HTTP from two different datasources. One is an HTML table on a website and the other is a JSON API. The data sources will be different but the primary process is the same:

  1. Create a folder to store the data
  2. Download data and put it in the folder as raw text
  3. Read the data from the folder and parse data
  4. Write the parsed data to a CSV

If you didn’t understanding theTemplate Method you would simply start hacking together two completely unusable scrapers, but because you now know better now you would structure the classes something like this:


class WebScraper
def execute
create_folders
download_data
parse_data
write_output
end
def create_folder
# Make directory
end
def download_data
# Initialize Http client
end
def parse_data
# Find all rows in table and put them in a hash
end
def write_output
# Write hash to a CSV on filesystem
end
end
class HTMLWebScraper < WebScraper
def parse_data
# customize how to extract the data into a hash and
# let the superclass take care of the rest 🙂
end
end
class JSONWebScraper < WebScraper
def download_data
# initialize JSON client
# save data to filesystem
end
def parse_data
# read from file system
# custom JSON parsing code
# store results in hash
# let the super class take care of the rest 🙂
end
end
html_scraper = HTMLWebScraper.new
html_scraper.execute
json_scraper = JSONWebScraper.new
json_scraper.excute

view raw

web_scraper.rb

hosted with ❤ by GitHub

Now that you know about the template method pattern where have you seen it before? What are some cases where it isn’t good to use the template method?

Developers and Uncaptured Value

Many developers will preach a Rework-esque world of product development where you focus on keeping your feature set small and relentlessly curated until you understand perfectly the customers pain.

They might even go to the extreme of saying that if a customer wants something that doesn’t fit your product then they should be encouraged to leave.  Many developers subscribe to the notion that if you build the perfect software people will use it, fall in love, and never leave. Their general philosophy is that if you consistently focus on creating value the product will “sell itself”.

One prime example of this mentality is the App stores where developers spend thousands of hours developing apps for free with the hope that you will eventually suck it up and pay 99 cents. But the sad part of the story is that most of us won’t end up buying anything. 98% actually wont buy the app even though they might use it every day!

Because developers are so entrenched in creating value they don’t think about the importance of being able to capture the value. When the app doesn’t start making them money they immediately think that their must be something wrong with their app. But the problem is rarely the app. It is the fact that they have failed to explain and capture the value that they created.

I bet that if you were to ask someone at random the question, “who has made the biggest impact on technology in the last 10 years?”. The name would probably be Steve Jobs or Bill Gates. But I would argue that both of them were actually experts at capturing value than creating it. Jobs knew how to capture 2x the value of a Windows computer. Bill Gates knew how to capture value which he makes very apparent in his letter Open Letter to Hobbyists.

In the technology industry the most prolific names are not Linus Torvalds and Richard Stallman. I would argue that Linus and Richard have created more value than most developers can even imagine, but Bill’s and Steve’s bank accounts and media coverage would prove that they knew how to capture it.

So when you sit down to write your next application remember that creating value is one battle which requires great engineering ability, but explaining and capturing the value of technology is equally as important. In the long run the ability for you to capture value will allow you to create more value.

Which have you found more important, creating or capturing value?

Becoming a Father

I remember being in awe as Owen finally born. It was around 10:08 on Wednesday August 19th. He was covered in meconium and needed to be given to the NICU team as fast as possible. I was with him at a side table as they cleaned him off and suctioned out as much meconium as they could get. I remember taking pictures of him and feeling this incredible peaceful feeling. I couldn’t stop staring at him. Even being covered in his own meconium he was still the most beautiful and amazing thing that I had ever seen.

Once the NICU team did their initial suction they determined that he needed to have a CPAP but before they took Owen they gave Lindsey the chance to hold him. It was amazing to see Lindsey’s love for him. They looked deep into each other’s eyes like to long lost friends. Neither of them needed to say anything they were both content enough to just look into each others eyes. It was hard to hold back tears as I watched this. Owen was grunting a little bit as he breathed because he still had things in his lungs.

Eventually the NICU team took Owen from Lindsey and they continued to extract anything else from his lungs. I went with Owen to the NICU and I remember staring. I wanted to hold him so bad but I wasn’t able to because of the breathing tubes that he had. After around 20 minutes of forcing air down his lungs he was starting to stabilize more and they removed the tubes. I sat at the side of his bed and remember thinking how amazing it was to see him discovering this new world.

Owen had big beautiful eyes. He was very awake and alert from the beginning of his life. His large blue eyes were always scanning his environment and any new faces. He didn’t cry at all during the CPAP procedure. He whimpered a few times as they inserted or removed the tubes but other than that he was very content to take in as much as he could.

I was finally able to hold Owen after he was taken into the nursery. When I held him in my arms for the first time I wept. I felt so much responsibility, love, and trust. It was as if he was telling me that he knew I could do it and that he loved me. It was a feeling that made me want to be a better man to live up to that trust.

After being around Owen I have noticed the following characteristics.

  • He doesn’t seem to complain that much unless he is very uncomfortable. I think he gets his temperament from his mother.
  • I think he will be very intelligent. He is very quick to learn things. He knows how to take his protective mittens off after several days of wearing them.
  • I think he will really love his mother. They seem to have  a very special bond and he always looks for her whenever he hears her voice.
  • I am never good at playing the parts of faces game, but I think he has my eyes, hair, and Lindsey’s mouth, chin, chicken legs, and temperament.

What does innovation look like in 2015?

Recently I went to lunch with the president of a startup who was trying to recruit me away from my current team. I explained to him that I have a great team and I feel I can spend my time fixing problems and innovating. The word innovation struck a chord with him, and like a good recruiter he tried to explain to me how I could have more freedom to innovate in his environment than in my own. We talked for a while and went our separate ways.

Although the conversation and delicious hamburger have both passed, I have reflected on that conversation several times because I am still not exactly sure what an environment of innovation looks like. I decided to look into the past for a little bit of advice and my thoughts were drawn back to the conditions of the Renaissance.

The Resources

The Medici family was a rich banking family in Florence Italy. The Medici Bank was the most powerful financial institution in the 15th century. The Medici leveraged their social and economic power to rule Florence for almost 400 years.

The family’s incredible economic strength allowed them to focus on trying to fix bigger problems instead of trying to scrape out a living. Their social status meant that whatever they created would be seen by thousands and they could get an audience with whoever they want for attracting talent or business.

So what would be the equivalent of a Medici in 2015? Is it an angel investor? Is it a venture capital firm? A billion dollar check from Elon Musk? I don’t think that resources alone are enough to create an innovative environment. You have to have craftsmen.

The Craftsman

A mound of money, or a billion dollar check won’t miraculously turn into innovation. The Medici knew that to make any kind of legitimate change they needed talented people. They couldn’t just get people who were decent at their jobs, they needed to protect their name and status which meant that even the best would barely meet their expectations. So they actively searched for the most talented people in the world and brought them into their palace.

One of the young apprentices that the Medici was able to attract was teenager named Michelangelo. Michelangelo spent his formative years learning his craft at the Medici palace and surrounded himself with great tutors. He was extremely gifted and was placed in an environment where ideas and feedback flowed freely.

Michelangelo was raised with many members of the Medici family which gave him access to some of the future financial and social leaders of the world. If Michelangelo was only decent at his job, most likely he would have still been a successful artist as long as the Medici’s were in power.

What if Michelangelo had not been commissioned by the Medici family? He would have probably become a great portrait artist in a gallery somewhere in Italy. But without these unique factors the world would have missed out on some of the most prolific sculptures and paintings of all time.

What does a 2015 craftsmen look like? Is he a sweaty programmer in a coffee shop? Is he a seasoned veteran with 20 years of experience? Is it a software consulting company?

The Commission

After the Medici found the craftsmen they would give them a commission. Although it is not exactly clear what the details of a commission from the Medici family were, we can assume that Michelangelo’s rent and food was paid for since he was living in the palace, and his supplies and tools were most likely top notch since money was not an issue.

Michelangelo was placed in an environment where he could create to his hearts content and safely put all of his energy into his work. He didn’t have to worry about finding his next commission, because he knew as long as he focused on quality and being the best he could the Medici family would continue until they ran out of money — so basically forever.

Innovative Environments

So if we try to create an innovative environment in 2015 using the template of the past we would need the powerful social and economic connections, we need relentless craftsmen, and a commission with reasonable stipulations.

  • If the Medici didn’t have the money to solver bigger problems, the luck of finding Michelangelo, or the social status to award commissions for public buildings and churches the Sistine Chapel would be just another church.
  • If Michelangelo didn’t have the ability, mentorship, time, luck, tools, and resources he wouldn’t be one of the worlds most famous artists — or to eventually become teenage mutant ninja turtle.
  • If the commission had told Michelangelo every detail of the sculpture, set an unrealistic deadline, and not given the resources he needed he probably would have just not been interested.
  • Michelangelo focuses solely on his craft and produces only his best work
  • Michelangelo worked with some of the brightest minds in his field and has unprecedented access to the best tools and resources
  • Medici provide guidelines but trust Michelangelo’s decisions and expertise
  • Medici allow an unequivocal focus on quality which raised the standard on art throughout the world

Uninnovative Startups

Unfortunately most of the startups that I have worked with run into the following problems when it comes to innovation

  • Startups are forced to be short-sighted to provide investors with a 10x return in less than 5 years. What if investors looked for returns over 40 years? Instead of making a uber-insta-groupon for cats (you are under NDA now 😛 ), what if startups spent their time solving problems with a long-term impact instead of planning their exit strategies before they have profits.
  • Startups find low-cost, low-quality craftsmen and naively expect high-quality output.
  • Craftsmen are not given the best tools, mentorship, time, or mentors that they need to finish the job correctly
  • Craftsmen are given a precise commissions are not allowed to deviate from plan because they will run out of funding.
  • Startups isolate themselves and their craftsmen and bright minds, because they don’t want their idea to be stolen.
  • Startups commission work that is the minimum viable product but never want to scrap the original. Can you imagine what a minimum viable Sistine Chapel would look like. According to Michelangelo it would be unfinished. It sounds so ridiculous but most companies do this to try to minimize their costs, but what they don’t do is trust an expert craftsmen’s decisions

Conclusion

I believe that I have come up with the following list of things that are required to create an innovative environment:

  • Craftsmen are secure and free to throw themselves fully at their work and create to the best of their abilities. Please not that I didn’t say that craftsmen “feel” secure and free. I said that they “are”. They don’t have to worry about jockeying for equity, office politics, manipulative investors, financial instability, ridiculous deadlines, or isolation from others.
  • Commissions that provide a clear scope and vision while respecting expertise. True craftsmen don’t like having everything draw out for them then spend their time failing over and over until it is “good enough” to collect payment. They want to understand the vision and build something that is better than the investor or the craftsmen could have imagined at first.
  • Investors that acquire the right talent, create opportunities, and take a long-term approach. Investors with this type of vision are not in the business of tossing out a thousand seeds to see which would grow on its own. They focus their energy on a few seeds and make sure that they grow into giant redwoods.

These are my thoughts, but what do you think? What do you think it takes to make a innovative environment? How have you created an innovative environment for yourselves and those you work with?

Sources

http://en.wikipedia.org/wiki/Michelangelo_and_the_Medici
http://www.economist.com/node/347333
http://www.sparknotes.com/biography/michelangelo/section2.rhtml

http://en.wikipedia.org/wiki/Commission_%28art%29

http://en.wikipedia.org/wiki/Sistine_Chapel

Story Point Estimation in the Real World

When the initial team of developers at Ring Seven was asked how they want to report progress I heard all sorts of passionate push-back.  I heard things like software is impossible to measure, I don’t want to be micromanaged, hours are too cumbersome to report. I agreed with several of the problems with hours and decided to look for another alternative.

I pitched the idea of story points. A story point is assigning a level of complexity to a user story. A user story is a high-level explanation of the desired functionality that a user wants from the system. For example a user story would be like “As a User I want to login so that I can see my pets information”.

After the user story was written we would then think of all of the tasks that were associated with it like (1) set up the database, (2) write tests, (3) email verification for new accounts, (4) hash and salt passwords, and (5) Implement the UI. Then we would give the user story a point rating as either (1, 2, 3, 5, 8)

After explaining to developers the point system it seemed like something that they could get on board with. In the end story points are really just one level of abstraction above an hour-based estimate, but it allowed the developers to feel like they were not being monitored and in the end it just adds another variable to the total cost of a project calculation.

After several months of using the point system we have learned the following lessons:

  • Don’t give points to bugs or chores. While bugs and chores are essential to a business they should be seen as maintenance and costs of poor planning not improvements to the system. This helps focus engineering efforts and eliminates over-engineering.
  • Many of the engineers that pushed back very strongly against micromanaging are now asking for more granular reporting and for the ability to add sub-tasks to user stories. They now want what they hated, more micromanagement. 🙂
  • User stories need to be estimated by a team. This provides a level of consistency between a team and helps the individual realize the level of their contribution and the overall completion of the project.
  • A development task is not completed until it is in the clients hands. If a client can’t interact with his/her product over the web or on their smartphone, it is not finished. This has helped our team understand the need to be constantly merging and deploying.
  • No work is finished until it is reviewed and approved by the client. Frequent check-ins and sign-off are important to prevent scope creep and regression. Sign-offs gives you a point to of reference to return to with client and can act like a checkpoint to regroup.
  • If you have an 8 point story you need to break it down. Several of our stories that started out as 8’s ended up taking an entire weeks. If the project is small stories like this can really mess up the schedule and budget.

In the end, points and hours are really pretty synonymous but they allow developers to provide higher level estimation without getting to involved with all of the technicality. It also gives a simple weighting toward the more difficult tasks and helps business leaders understand how hard certain tasks are.

 

Life’s Golden Thread

You often think that you become who you are through the simple aggregation of days. As the days march on you grow in ability and capacity. While this is generally true, there are some days that stand apart. When you look back on your life and think about what really got you to where you are today you will not see thousands of hours or days. You will see a string of key events, decisions, and opportunities like a golden thread.

This golden thread weaves a tapestry of your life. It is sewn by you, your friends, your families, your colleagues, and even strangers. The golden thread has been following you since you were a child. It has been revealing innate abilities about your curiosity, discipline, assertiveness, benevolence, confidence, and many other traits.

Each time the thread appears throughout your life it is reveals who you are and the potential that you have. You need to reflect on the times when you last saw the golden thread and what that event, opportunity, or decision revealed about yourself. These defining moments can be negative or positive.

You are responsible for discovering our inner self and maximizing your potential. You are responsible for becoming the best “you” that you can. You have been given your own golden thread. What has it shown you?

Personally, I think back on several different occasions. The first occasion is when I was not accepted into BYU. I remember receiving my rejection letter from the university and going on a 6 mile anger run. I eventually broke down and just cried. I was so mad at myself and the fact that I had hurt my future. I resolved that I was going to work harder and I was going to prove to myself and everybody else that I deserved to be at that university.

After some setbacks, I eventually made it into BYU and was even able to earn an academic scholarship. In April of this year I will be graduating with my masters degree from the same university that rejected my application. The golden thread has passed through these different occasions and shown me that I am hardworking, semi-intelligent, and diligent.

I have seen the golden thread in my life. When have you seen it last? Leave comments below if you would like to share.

What I Have Learned From My Internship Search

The main reason universities want you to get an internship is so they can have high placement statistics. Don’t get me wrong, they want to help you. But at the end of the day, they want you to get a job. I want to give you advice about how to be the right candidate, get your dream internship, and gain the experience and self-discovery that you need.

I spent so much time trying to make myself appealing to recruiters, sharpening my skills, and working on my resume. But at the end of the day, none of that really mattered or helped me get the job that I wanted. I realized there are a couple really important things that you need to think about when you are looking for a job. I hope these pieces of advice help others who are looking for their path right now.

Be a person, not a resume.

In the process of trying to look good for recruiters, I came to realize that I was not being a person. I was putting on a mask I thought they would like so that I could get them to take a gamble on me. Over time I realized something very important.

Companies are not shopping for resume’s, they are shopping for people.

Recruiters are looking for a person they can get along with. Recruiters want someone they can trust. Recruiters want someone who is pleasant, has good communication skills, and knows how to work on a team. I don’t want to discount my education, but I feel like it was only a way to get my foot in the door. If you were the owner of a company, what kind of people would you want to hire? Would you only go after the 4.0 students? I wouldn’t mind if they had a 4.0, but I would want to know how they would be as a teammate.

So don’t sell your self short; you are a human being with a lifetime of experience and different knowledge, skills, and abilities that you can give to every company. Don’t reduce yourself to that piece of paper that is sitting on the desk. Remember this search goes both ways. When your recruiter asks if you have any questions that is your time to find out if you want to work for them. Ask your recruiter good and hard questions that make them think about why they are there and that help you know if they are being truthful.

If you don’t get the internship, your friends can help you get the job.

Most people don’t know, but during my junior year of college I was not able to find an internship. I struggled to get interviews and when I did, I was so nervous and worried that I usually ended up doing a really poor job of representing who I was. I looked everywhere for interviews. I was at every recruiting fair, event, and website. I uploaded my resume all over the internet and at the end of the summer I had little to show for it. When all my friends came back from their internships I realized.

Your reputation with others is what gets you a job.

All of my friends came back from their internships looking for people to recommend to their companies. I was able to talk to quite a few friends who introduced me to their recruiters. I had so many more quality interviews the next year because I was personally introduced and recommended to the recruiter. I went from barely finding a part-time job, to getting an interviews with all of my top 3 companies (Apple, Pariveda SolutionsAdobe) because I had good friends  who were willing to help me get and interview, and they knew they could recommend me. If you lose the interview you can still get the job. The only way you really lose is if you don’t have a good reputation and a friend at the companies you are interested in.

Look for skills and experience, not just an internship.

The summer after my failed internship hunt, I eventually found a summer job with a local company, named Gigg. I was supposed to be a junior web developer. Two weeks after I started the lead developer quit and I was stuck with 8,000 lines of code I didn’t know anything about, server administration on an operating system with no user interface (Linux), and no technical support for my company. I poured over books on MySQL, PHP, jQuery, and Linux books and I grew very quickly.

I gained more that summer than most of my peers because I learned what things I actually like in a job. I realized that I like web development, I love analytics, I dislike technical support, and I was interested in learning more about Linux. I also realized that development was something that I wanted to become very skilled at. I loved taking an idea and teaching a computer through logic how to fulfill the idea. I learned that discovering your interests while gaining experience is what an internship is all about.

Internships are about collecting experience and discovering your interests, their not about collecting big name brands.

When my friends came back from working at Pepsico, USAA, or “The Big 4” accounting firms, they still didn’t know what they wanted to do because the company didn’t give them a real project or a valuable experience. Many of my friends left more confused about their careers and interests when they returned from their internships.

Because I had discovered my interests, they led me through my next several jobs at different companies and private contract work. The next year when I decided to find an internship the main focus for me was not about what big name company I can get on my resume — it was about finding a place that would help me dive deeper into my interests. I was fortunate to intern with Pariveda Solutions which gave me a great look into the IT consulting industry. They also helped me learn more about what I wanted from a career and how to be a better software developer.

If there is something else you wish you would have known. Please post it in the comments below. Thanks for reading!

Most Important Personal Finance Ratios

Ratios are used frequently to evaluate the health of a business or investment.  Some of these same ratios can be on your own personal finance to help you understand quickly your financial state.  Here are several valuable rations.

Net Worth

Net worth is a comparison to determine how much your assets exceed liabilities.  Net Worth can be applied to evaluate the financial health of an individual or company. The formula for determining your net worth is simple:

Net Worth = Total Assets / Total Liabilities

So what is an asset and what is a liability? Robert Kiyosaki summarized the definition of an asset very simple. He said.

An asset can be anything as long as it has value, produces income or appreciates, and has a ready market. Assets put money IN your pocket. Conversely a liability is anything that takes money OUT of your pocket.

A consistent increase in net worth indicates good financial health; conversely, net worth may be depleted by annual operating losses or a substantial decrease in asset values relative to liabilities. There is no recommended Net Worth that an individual should have, but it should be increasing over time.

Current Ratio

Current Ratio determines whether a person can pay off all its short-term debt with the money it got from selling its assets. The formula for this ratio is:

Current Ratio = Current Assets / Current Liabilities

The word current may look strange to you. In this example, current means anything that you will have to pay in the next month. A simple way to think about this is if I were to take all of my money in savings or checking and pay off my debt how many times could I pay it off.  Typically a recommended ratio is that you should be able to pay for your liabilities at least 2 times.

Months Living Expense Covered

One way to look at wealth, is to ask how long could you live if you were to stop working right now? This is a real ratio that many people don’t think about until they lose their jobs. At that point they start looking through their finances and realize that they can only live for 1 month before they need to get a job. One of the first things that almost all financial advisor suggest is making sure that you have an emergency fund that covers 3 – 6 months of your expenses. This is the ratio that helps you do that.

Months Living Expense Covered Ratio = Monetary Assets / Monthly Living Expenses

Monetary assets means all assets that you can convert into cash within any given month.

Other Ratios to think about

Debt Ratio = Total liabilities/total assets
Long-term Debt Coverage Ratio = Income for living expenses (W-T)/Long-term debt payments
Savings ratio = savings / income for living expenses (W-T)
Gross Savings ratio = savings / gross income

Analysis of Pariveda Solutions HR Practices and Organizational Behavior

Pariveda’s main organizational behavior and human resource policies are centered around developing talent. Bruce Ballengee, the CEO of Pariveda Solutions, decided that the world did not need another consulting company, the world needed better leaders that were continually improving themselves, striving to lift one another, and reaching their goals. He focused Pariveda’s HR policies around developing principles that can be applied in any aspect of life to accomplish a goal. Based on this idea, Bruce’s goal is to develop good, talented people that can give back to the world, not just to the company.

Competing Values Conundrum

The company goal of talent development would naturally cause Pariveda to become a collaborative work environment, according to the Competing Values Framework which is discussed in Organizational Behavior Theory.

Collaborative environments focus on values. They are a community united by shared beliefs. Their purpose is to be a community and to gain knowledge. They practice building teams and developing communities, which they accomplish through training and mentorship. They focus on building trust, are helpful to each other, resolve conflicts, empower others, and encourage participation. They measure their success by employee satisfaction, employee turnover, training per employee, and competency peer reviews. These attributes closely describe Pariveda as a company.

But applying the Collaborative Model of the Competing Values Framework to Pariveda’s organizational behavior sometimes contradicts itself. Pariveda can not be a purely collaborative environment because it must also provide professional services to its’ clients. For example, one company, Dynotech, has been using Pariveda to augment its’ staff for years. Pariveda has provided great technical skill to their workforce, and Dynotech is happy to pay the fees; however, Dynotech will not allow Pariveda to use their management model inside of their organization.

Because Dynotech will not cooperate, many of Pariveda’s employees are not able to gain the experience necessary for promotion inside of Pariveda’s competency review process. This is a contradiction in Pariveda’s collaborative environment, because although Dynotech does follow Pariveda’s management model, Pariveda continues to maintain this account because it is a significant revenue source for the company. Ultimately, the clients provide the income for the company, and the revenue is what allows Pariveda to fosters its collaborative environment.

Unique Hiring Process

One of the key roles of HR in any organization is to procure the right talent. Pariveda claims to hire only the best and brightest by using a grueling selection process to ensure the quality of its’ hires. Pariveda has a selection process that diverges in two unique aspects.

Pariveda’s selection process starts with a behavioral fit interview and a general mental abilities test. These are used to test if a candidate can be trusted with clients and if a candidate demonstrates a capacity to learn.

The selection process deviates from the traditional selection process by using a personality test. The personality test is used to characterize the candidate based on four attributes. The four attributes are associated with letters — A, B, C, and D. “A” represents the range of a person’s independence to dependence. “B” represents the range of introversion to extroversion. “C” represents the range of attention to detail. “D” represents the range of pace of work. An example personality report is shown below.

Although personality tests are not found to predict job performance according to academic studies in HR, they can be used to understand a candidate’s natural inclinations that may not be apparent in an interview. Pariveda uses personality tests to provide a common language throughout their organization. This shared personality language allows people to realize the value of a person with specific traits to work efficiently with each other.

The last way that Pariveda selects for talent is by using case studies. Every candidate must complete a series of case studies that are used to determine the person’s skill level. The case studies are used to test the necessary knowledge, skills, and abilities (KSA) to be successful in the position. Academia indicates that testing the required skills for a position is the most accurate prediction of job performance. Parived has found this to be the most effective hiring method because candidates may lie in an interview, but case studies prove the person’s knowledge and skill through application.

As an employee progresses in the company, they use the same case studies to prove themselves worthy of promotion. The case studies become rights of passage that allow people of similar skill levels to understand and trust one another more deeply. In a collaborative environment it is important for people to be able to rely on each other. Pariveda uses case studies as a test to prove and reveal the ability of an individual to themselves and to their firm.

Planned Career Path

Academia has shown that career path management is very important to job satisfaction. Job seekers are not only looking for a good company, but also looking to see how the job will fit into their career goals. Career path management inside of HR departments is not typical. Some companies have different rotational programs where an employee can try different work to find their fit. However, most employees are responsible for their own career path.

One of the ways that Pariveda tries to answer this problem and attract new talent is through their carefully designed and planned career path. The CEO of Pariveda has compared joining Pariveda to an executive fast-track program. Along with the program, an Expectations Framework has been created to measure employee progression. Pariveda has also linked pay levels to mastery of certain aspects of the Expectations Framework. For example, all of the first level consultants will make the same starting salary. Moving from first level to second level consultant results in a 10% increase in pay. Moving between cohort levels (from a consultant to an associate) is a 20% increase in pay. By joining Pariveda, an employee is given a clear salary expectation and a clear career path.

One of the concerns that has been raised about the Expectations Framework is that it is something that is constantly evolving. As different skills and expectations are identified at different levels, these expectations are added to the Expectations Framework. Each new expectation adds another skill that must be completed to reach the next promotion for every employee. This causes some uneasiness among Pariveda employees because it is as if they are being measured with a sliding scale can be changed to control the speed of promotions inside the company.

Another problem that has been raised about the Expectations Framework is that it has not been tested from college hire to vice president. Because Pariveda is still a relatively young company, they have been forced to seek talent from other companies to fill their management team needs. So although the Expectation Framework has been applied acrossed the company, lower level employees are intently watching the first class of college hires and watching their progression to see if the Expectations Framework can be trusted. Thus far, no one has followed the actual career path from beginning to end, so it is unclear if the career path is as reliable as Pariveda claims it to be.

Conclusion

Pariveda Solutions is a successful company that is accomplishing its HR and Organizational goals of creating a talented workforce. Although it sometimes struggles to support a collaborative environment while maintaining satisfied clients, it provides employees with a clear salary expectation and planned promotions, and uses unique hiring strategies to create camaraderie and trust throughout the organization.

Pariveda Solutions Initial Review

My summer internship at Pariveda Solutions has three main goals. First, to gain an understanding of Pariveda Solutions as a company and potential full-time employer. Second, to become a better software developer through real experience. Third, to experience all that Houston has to offer as a future residence.

Pariveda Solutions has decided to restructure it’s internship program to improve their internship program. They have deemed this year as a “pilot” year for their internship program, and have asked for help and feedback along the way.

For this year’s internship Pariveda has decided to do a project for a non-profit organization in the community. Buffalo Bayou Partnership was selected as the best candidate for the internship. The Buffalo Bayou Partnership, also known as BBP, is responsible for a $40 million revitalization project for the Buffalo Bayou in downtown Houston. BBP plans to turn the Buffalo Bayou into the “Central Park” of Houston.

Pariveda will be helping the BBP by developing a mobile guide for the park’s visitors. Pariveda plans to mentor the interns through the software development process and distribute a mobile application in Android and iPhone to the public by the end of the summer. I will be involved in planning, analyzing, developing, and transitioning the application to BBP by the end of the summer.

The internship team consists of 5 interns, a project manager, and a vice president. This project falls under two of Pariveda’s core service lines– custom development and mobility.

Pariveda Solutions was created in 2006 by Bruce Ballengee. Bruce had already sold a successful consulting agency and was looking into different ideas that could help lower-income people to be able to rise above their circumstances and to become leaders. While he was searching for a more philanthropic business venture, he was approached by an old friend who asked him to start a new consultancy.

Bruce said he would join the team as long as it was “different”, meaning that it would have to take a different approach on the traditional consultancy. He wanted the new consultancy to be an employee owned company focused on developing talent, and have a transparent, collaborative company culture. Bruce felt that these different characteristics would create leaders that could help lift society and fulfill his philanthropic goals.

Pariveda has experienced steady growth since it inception and currently generates around $50 million in revenue per year. The first two offices were Dallas and Houston, with Dallas as it’s headquarters. In the last several years Pariveda has moved into Atlanta, Chicago, Los Angeles, New York, San Francisco, Seattle, and Washington D.C..

Pariveda has nine different “service lines” in their company. These lines include IT strategy, data, custom software, mobility, portals and collaboration, enterprise integration, cloud, customer relationship management, and user experience.

The strategy service line helps organizations align the business with the information technology capabilities. Pariveda’s data service line involves helping an organization collect, organize, distribute, and analyze information. The custom software service line includes software assessment, design, development, testing, deployment, and training, to improve company efficiency, and customer experience.

The mobility service line helps businesses understand how mobile computing and can be leveraged to benefit their company. The portals and collaboration service line helps improve how information is managed and streamlines the communication process in an organization. The enterprise integration service line helps clients obtain a holistic view of the information used to operate the business and identify connections for sharing across the organization.

The cloud service line helps clients build the right cloud solution that scales efficiently, operates reliably, and minimizes the time and effort that is required to maintain the infrastructure to bring value to an organization. The customer relationship management service line helps in managing customer information and interactions to improve customer margins, retention, and profitability. The user experience service line helps to create a cohesive, simplified solution to assist the client’s users to complete their tasks with greater ease and efficiency.

Pariveda’s business strategy is to be located in major cities with strong industries and to partner with industry leaders to provide IT services to them. This helps them be more trusted by companies and retain long-term clients and reduce employee burnout through excessive travel.

Their other strategy is to build the communities and people. They feel that through building their employees and their communities they will attract clients to their company because they are good leaders and they will have an impact on the community.

As part of Pariveda’s career development plan everyone is required to create career development points (CDP). These CDP’s are my goals that are to be accomplished during the internship. I have three goals.

My first goal is to learn more about continuous integration environments and how they can enable a development team to be more effective. I am also supposed to manage the source code repository and work on a good process for repository management. My second goal is to deepen my knowledge of software development best practices by reading a specific blog and discuss the readings with my mentor. My third goal is to deepen my knowledge about Pariveda’s value proposition to clients. I am supposed to understand Pariveda’s major service lines and frameworks.

By obtaining these three goals during my internship, I will be able to create my own learning value from this experience. Each of these goals will be broken down into smaller action items. I am planning on tracking my progress in the companies intranet and on my blog. By the end of the summer I hope to understand if Pariveda is a good fit for my career and family.