Growing companies are often faced with many tough decisions on how to reinvest in their company to reach the next level.  One typical reinvestment comes in the form of upgrading or acquiring new IT infrastructure or systems.  This commonly takes the shape of a move from QuickBooks to GreatPlains or even SAP in the accounting department, and various other moves from Excel / Access to real integrated systems in other departments.  In any case, the business is faced with a decision.  The decision is sometimes easy (in the case of commodity decisions) and other times more difficult, as is the case with ‘Build vs. Buy’ decisions.

For this post I’m considering anything under a few thousand dollars to be a commodity decision.  Need a word processing or spreadsheet tools, go buy Office.  Need basic accounting function, go buy QuickBooks or one of the dozen other accounting packages.  I am talking about decisions that impact the core of your business…what sets you apart from your competition.

If you find yourself or your business finds itself facing a build vs. buy decision, how do you proceed?

First, identify that you are facing a build vs. buy decision.  More often than not there is an off-the-shelf product that does 80%+ of what you need.  Do your homework and find those products.  If you can get all your core and most of your desired functionality for a few hundred or couple thousand dollars…buy.

Faced with a true build vs. buy decision here is a list of items to keep in mind when making your decision:

  • Cost.  Roughly all aspects of this decision affect or are tied to cost in some way.  In general though, this includes both initial acquisition cost and on-going support cost.
  • Timing.  How fast do you need a solution (typically there is a cost in both hurrying a solution and prolonging a solution so don’t forget to factor that into your cost).  Buying and customizing tends to be faster, but also typically locks you into a single development service provider.  Determine their availability to deliver before pulling the trigger.
  • Intellectual Property (IP) Protection and Control.  If you are facing a build vs. buy decision it is most likely because your business has special needs.  This might be your competitive advantage in the market place.  If you buy and customize who owns that IP?  You or the company that owns the product who just customized it for you?  Losing your competitive advantage is bad enough, paying to have it sold to your competitors is worse.
  • Capabilities / Functionality.  While last on this list it is as equally important to keep capabilities and functionality on top of mind.  Where your company is today is probably different from where it will be in 5 years.  Does the software you are purchasing or building have the ability to grow with you, or will you be forced into a similar decision a few years down the road?  While building always gives you endless capabilities and functionality (you are not boxed in by what the software provider feels like adding) it comes at a cost.  Be sure to weigh those cost against the value they bring before jumping in.

Depending on your particular situation and need there are dozens of other factors to consider but the ones above are always part of any buy vs. build decision.

If you have questions or would like to add your own please feel free to leave a comment!

For nearly a decade now I have found myself in the shoes of a software consultant, ranging from the moonlighting developer to the architect guiding a team.  I have engaged on projects small to large, and everywhere in between.  While I have never been in the shoes as a client wanting to have a system or software developed, I feel as if I would be able to use my experiences to make the right decisions.  As such I have decided to share those thoughts here.

The following are 5 suggestions and guiding principles that I share with my clients when setting out on the path to develop a system or piece of software.

1. Know Where You Are.
• I did a post on this concept earlier you can find here.  The moral of the story is that before you set off on any journey, know where you are first.  This includes having a firm understanding of your current processes and capabilities, what works and what causes pain in your organization.

2. Define Your Process.
• What am I doing talking about process when the point of this post is saving money on software you ask?  It is simple.  Software is a tool.  It can be a tool to automate, a tool to generate, a tool to increase revenue, etc… If you do not have your process in place on how you expect to use the tool, how are you ever expecting to get the full benefit out of the tool?

3. Plan, Plan, Plan.
• This is the boring part.  The part that requires all parties to collaborate, dig through detail, make decisions, and yes…even that dirty word, “document”.  If you are working with a developer that cannot wait to start programming, without having all the requirements, or worse yet not including you on their plans…RUN! I have seen companies rush development to later be set back months because of the lack of upfront planning…not to mention the increased cost of fixing the mess they got themselves into.

4. Manage and Control
• It is your organization paying the bills; it is your organization that will ultimately have to live with the system or piece of software that is created.  You have a right and should demand to be kept up-to-date on a weekly basis, minimum.  There is no reason a paying client should ever be in the dark or have to chase a developer down to find out what is going on with a project.

5. Pay for the Right People.
• I know the economy is tough and everyone is looking for a way to save a penny.  My advice here is that the temptation to go cheap is always there and it should rarely, if ever, be taken.  You can outsource for $25/hour, pick up a local college student for $35/hour, and the average moonlighter for $45/hour. (depending on markets)  Remember that you get what you pay for and if you are not willing to pay in the short term for the right people you better be ready to pay in the long term to fix the messes lower level independent resources tend to leave behind.

There are probably more if I sat around and thought about it longer but those 5 items are the most common, and probably the most easily applied to any situation.  I hope that helps someone out there!

If you have comments or suggestions I would love to hear from you.  Just leave a comment below!

Quick tip to hopefully save someone out there a lot of head scratching….

My issue was in a VS 2010 project (A) that referenced another VS 2010 project (B).  The reference to B was not being recognized by any piece of project A, even though the reference was there in the list.  There was a long list of things I found online…everything from restarting Visual Studio to even a post from MS explaining that in some cases it is “by design”…

What finally resolved the issue was setting all the projects’ target frameworks to .NET Framework 4.  By default VS 2010 likes to set the target Framework to the 4.0 version of the Client Profile.  Apparently if you get one project referencing the CP and another the full version, then one referencing the other, it doesn’t play nicely.

AP Innovation ‘won’ a large deal last week.  The largest deal in the company’s young 1 1/2 years of existence.  A deal that will keep myself and 4 developers busy for over 6 consecutive months with opportunity for an additional 12-16 months more after that.  I say ‘won’ (with single quotes) on purpose though because this opportunity was landed without a single sales meeting, sales pitch or written proposal.

The project was ‘won’ on a trusting relationship.

Sadly I feel that the focus on relationships is often a lost or dying art.  It is much easier to tweet 20 times a day, send a text message, update my Facebook status and consider my “relationships” maintained.  While convenient tools for mass communication they do little to build the types of lasting relationships face time and a personal investment of time do.  I only hope that people never forget the importance of the relationship when dealing business.

Okay, Okay…I know Thanksgiving has come and gone and that I missed the ‘being thankful’ boat.  My only excuse is that I was so busy due to the things I’m thankful for I didn’t have time to be thankful for them.  But that is not an excuse as much as a reason on why this post did not come sooner.

There really is no order to what I am “most thankful” for except the first item.  And I’ll try to keep the list relatively condensed to save you the headache of reading long-winded explanations.

1. My relationship (faith) with God has grown strong over the course of 2010 for various reasons.  In the end I owe everything I am, have accomplished and reason I am thankful for so much in the below list to Him.

* My family.  …besides the “You have to include family in these types of list”, I am really close to my family and while we don’t live in the same city I get a tremendous amount of support from them in all aspects of my life.

* My girlfriend, Cristina.  After ending a bad relationship I needed to get out of I had all but lost hope in dating and was seriously considering a more committed relationship with my company for the foreseeable future.  Her support has helped me through the busy and stressful times like I could not have imagined just 6 months ago.

* Rob, my roommate, who with his fiance Ashley, has been a huge help through some of the most difficult and busy times this year.

* Indy…not the city, my dog.  If you do not have a dog you will not understand.  But there is something about having him around and coming home to him that always makes my day better and happier.

* The success of my company.  2010 has been a great year for AP Innovation and I’m very thankful for that.  The list of people, opportunities and situations that have made it all possible is too long for a single blog entry.  All I can say is that I am very blessed with some of the best strategic partners, clients and contractors you can find….anywhere.

* My friends.  Stretching back to high school all the way through college and now in the present.  No matter how busy we always get or how long we go between talking I seem to have bene lucky in getting a great group of friends that is always able to pick up right where we left off.

This list could probably go on to include my health, a running car, etc, etc…  But the important stuff, the things that really matter to me (not that my health doesn’t… :) ) are listed above.

Thank you to all that have made 2010 such a great year so far!

It amazes me how many companies out there, or worse yet process/software consulting firms, implement or make critical decisions in regards to their IT systems without knowing a thing about what their current state is.  How many times have you heard about large system implementations being scrapped because of missed requirements or the consultants weren’t aware of system ABC that has compatibility issues with what they are implementing?  How about those stories where the system is implemented but then realize that phases 2 and 3 are now impossible because phase 1 was implemented without foresight.  Those types of issues are avoidable by simply knowing where you are, where you are going and how you are going to get there.  The key is having and knowing your Current State.

I love analogies so let’s use one…

Imagine getting blindfolded, dropped off at an unknown location and being told to go to destination A…later you are told to also go to destination B, C and D…but let’s just focus on A.  The worse thing anyone could do is to just blindly start walking…I mean you might as well leave the blindfold on.  Sadly, this is what sometimes happens.  Teams or consultants are told that system XYZ needs to be implemented and away they go. 

The first thing anyone should do in the blindfold situation is find a point of reference.  I don’t care who you are…you can’t get anywhere without first knowing where you are.  Or…even better yet, ask for a map or artifacts that may point you in the right direction.  Translated back to the real world, this is typically found in the form of poor and un-updated documentation.  Every once in a while you luck out and your map (solid documentation) is already in place.  If it is not…then you shouldn’t start walking.  Take a moment to find your point of reference, even if that means spending some time in the trenches of documentation.

By understanding where you are, you are better equip to get to where you need to go.  Of course understanding where you are going and the path you are going to take is equally as valuable…and that is when you get into Future State Mapping and IT Road Map Planning.  Both are topics that I’ll be discussing in future post.

 

Do you know where your company is on the map?  Are you having trouble figuring out what system is talking to what system and where all your data ‘lives’?  Does every application update or change you make seem to break something else and you can’t figure out why?  It could be that you are in need of understanding your Current State.  If interested in learning more or getting a grasp on the unknown email me at matt.goebel@apinnovation.com or check out AP Innovation.

I’ve recently been running some simple, homemade, benchmarking test to compare the performance of the Advantage Local DB engine versus that of SQL Server CE.  What I found was surprising since both of these product offerings target the same market and both have considerably large companies (budgets) behind them.  If nothing else I have to be honest and say that I was expecting SQL Server CE to edge out Advantage, if not break even with it. 

He is the basic setup of the test:

Simple application with a timer, two threads and two counters.  When clicking the start button the application starts the timer and kicks off the two threads.  One thread is for Advantage and the other SQL Server CE.  In each thread a simple insert statement is executed against the respective database.  In both cases a connection is taken full cycle, being opened, executing the insert statement and then closing the connection.  Upon closing the connection the thread updates its respective counter and starts over, repeating the process for 60 seconds.  Each database has one table with 2 columns of equivalent data types.

Here is what I found…

I ran three basic test and in each test the performance of Advantage beat CE by nearly a 2:1 margin.

Test #1: One (1) instance of the application running for 60 seconds.  Advantage wins – 2.1 : 1

Test #2: Six (6) instances of the application running simultaneously for 60 seconds.  Using averages…  Advantage wins – 2.3 : 1

Test #3: One (1) instance of the application running for 60 seconds, with the DB files located on a different machine within the LAN.  Advantage wins 2 : 1

Test #4: Two (2) instances of the application running simultaneously for 60 seconds, with the DB files located on a different machine within the LAN.  Advantage wins 2 : 1  (However, this test gave both light weight databases a hard time and even caused exceptions to be thrown due to their architecture…I’m sure to properly run this test the beefier bigger brothers (full database engines / services) should be put to the test.)

Disclosure on the hardware I ran this on:  Lenovo T500, Intel Core 2 Duo @ 2.27GHz, 3GB RAM, and running a 64-bit version of Windows 7 Ultimate

Since starting AP Innovation I have been constantly meeting people.  Networking events, breakfasts, coffee, lunches, conferences, speaking engagements, you name it.  The main reason for this is the tried and true statement of “It is not WHAT you know in life, but WHO you know if life that will determine much of your success and direction”.  While there are many variations of that statement it all comes down to the simple truth that the vast majority of business is done via relationship and that no matter how skilled you are at something…no one is going to buy it if they don’t know you exist.

Well tonight while attending an event hosted by ESI Technology Advisors here in Indianapolis I heard a new twist on the old adage that got me thinking.  The twist was “that it is not about what you know or who you know, but who knows you”.  That got me thinking about a couple of things….

First, at a basic level, this is the ideal of any business owner or sales person.  If the right people know you and are passing you lead after lead and the business just naturally piles on without having to beat the pavement all the time…what a sweet set up.  Given deeper thought however there is a elegant and simple truth to the saying…

That is that it takes a relationship, a two way street, you knowing someone and them knowing you back to really thrive in business.  Just having a really impressive stack of business cards doesn’t cut.  So while you may ‘know’ a lot of people, chances are you are in the same boat as the person that really knows the ‘what’ if you aren’t building those two way street relationships that allows other people to know you.

From now on, for me at least, this is the upgraded statement to live by…  “It is not WHAT or WHO you know in life, but who knows YOU that will determine much of your success”

I know there are plenty of charts out there on mobile OS market share…and they all show Google’s Android OS dominating in recent months.  But here is a quick real-life (my story) example of why Google is killing MS in the mobile market, and not to mention the small business market.

My company, AP Innovation, used Small Business Office Live (the Windows Live business offering by Microsoft) for over a year, from the creation of the company until just recently.  In that time….

- I used Outlook Connector to get my email, calendar and contacts in Outlook…with subpar integration and performance…keep in mind that the integration is a MS product to MS product…

- My Blackberry Storm was only able to sync email…that is it, SBOL does not offer support for contacts or calendar.  A huge pain for running your own business and being on the go a lot.  Getting my calendar or contacts was nearly impossible on the go…something that is unacceptable in my mind these days.

- I got an email correspondence from MS maybe once or twice a month pushing a new product offering or updating me on changes.  Never anything personalized.

In comparison, I’ve been on Google Apps for a little over a week and in that time…

- The Google App Sync application for Outlook works better than the Outlook Connector did…a sad realization seeing as MS should be able to best integrate with its own products better than the competition.

- My new Droid X integrates seamlessly (I can’t stress that enough) with every aspect of my Google Apps for AP Innovation …it’s like a dream.

- 4 days after signing up I get a personal call from a member of the Google Apps staff asking me about my migration and how things are going…offering to help me with any issues I may have…talk about customer service!

Now to Microsoft’s defense (I am a huge MS fan still after all) I never did try their service with a Windows OS based phone like Windows 7, but sadly I believe I would have been in the same boat based on articles and post I’ve read online.

So Microsoft…please get your act together!

Quick tip I just discovered when trying to do quick and dirty existence checks on some data during a large data migration.  Instead of using the generic List<> method of Exist(), use a Dictionary<> object with its ContainsKey method.  This saves the List from performing a linear search each time and if you have large list or collections it can get very processor expensive.

Follow

Get every new post delivered to your Inbox.