Blog

The views expressed in this blog are strictly personal, and do not necessarily represent the views of Evident Software.

By Bill Nigh

It takes a special combination of character, personality, focus, energy and skill to make a CEO in the tumultuous world of IT, a world characterized by incredible pace of change, new synergies, entire sectors rising and falling within a few years, consolidation, predation, success and failure, all taking place on a very public and opinionated global stage.

Now consider the world of the IT startup, and just multiply that personal requirement set several fold.

Scott Barnett is just such a person. He has worked in sales and management positions, but has also scratched that entrepreneurial itch pretty well in this portion of his career arc.

Scott is a thoughful and very decent human being who exemplifies the best aspects of the American character. Here is a recent conversation with him.

Bill:
Scott, what attributes of a tech startup CEO can contribute to a winning formula for all stakeholders?

Scott:
Bill, the key for a tech startup CEO is searching for a business model, and you have to show infinite flexibility and outstanding communication.

I’m a huge fan of Steve Blank and his The Four Steps to the Epiphany. The most important thing is to realize that you do NOT have the answers – what you have is a strong set of assumptions, and a lot of tenacity. Take those things and iterate on your product with as many customers and prospects as you can – listen carefully, figure out what parts of what you have built are repeatable, build success, then scale. So many people start to scale before they are ready, and that’s the cause of many of the high tech startup failures out there.

In terms of managing and leading a team, I favor empowerment. Hire people smarter than you, give them latitude to do great things, be flexible, but firm, about what results you expect. A person who is empowered will be much more effective than somebody who is simply good at following orders. The CEO’s job is to define the path to go down and the results to achieve at the end of the day… and to provide the tools to the team so they can get that job done. Then, they should simply make sure everybody is going down the right road, making the appropriate course-corrections along the way. It’s also true that the CEO’s attitude will become the attitude of the entire company – so I try very hard to use calm and steady leadership, and show respect for every person within the organization – whether it be employees, partners, or customers. It’s most important to do this during times of duress – anybody can seem gracious when things are going well, it’s when things are stressful that a person’s true spirit comes out.

Bill:
I’ve personally experienced the empowerment with you in our last two engagements; ‘better to ask forgiveness than permission’, or words to that effect; the quote is attributed to several, including Admiral Grace Hopper. Please continue.

Scott: A tech startup CEO needs to look in the mirror and KNOW that they love it. Startups are so incredibly hard – you can do everything right and still come up short. There are thousands of roadblocks in the way of a startup. You have to have the personality to enjoy this type of roller coaster ride – the type that never stops! And of course, the typical refrain that it’s lonely at the top – no matter what decision a CEO makes, somebody thinks it’s the worse decision in the world. So, you are judged more so than anybody else. If you don’t like it, you’ll never learn how to do it – I truly believe this is nature vs. nurture – you either have the startup, entrepreneurial gene or you don’t.

Bill:
Do you feel that the tech startup CEO has to also be competent in sales, since the team is so small, you are such a public face and effective results-based communication is so crucial?

Scott:
A tech startup CEO should be well versed in all areas of the business. They obviously came from one specific area, but it is not appropriate to “delegate” a part of the business to somebody else. In other words, a startup CEO is a sales person, marketer, product manager, customer support, etc. This may sound a little bit counterintuitive to my previous answer where I suggest that people should be empowered, but it isn’t. The point is that empowerment and blindly handing over responsibility are two different things. The CEO needs to set the vision and direction of the overall company, especially in the incubation stage when you are still searching for a business model. Until the business model is known, there are too many factors and variables that need to be processed, and the CEO is ultimately responsible for this. So, they need to feel the pulse of every part of the business.

The shorter answer to your question is yes, a tech startup CEO needs to be comfortable being in sales. But that is not sufficient.

Bill:
Do you think that the CEO and the CTO of a startup have special and/or additional challenges in defining and maintaining a smooth and successful working relationship?

Scott:
I have always thought that startups are a three legged stool (in fact, I’ve blogged about this. Those three legs are product, sales/marketing and leadership. Just like a stool, if two of the legs are strong but one is weak, the chair will break. All three legs need to be “strong enough” to sustain the weight. The CEO needs to set the vision and culture, set the priorities and make sure they have a pulse on the overall business. The CTO needs to make sure the product is being built in a scalable and flexible way, leverage agile methodologies and not get too “proud” of their work, since customers will almost necessitate a pivot from whatever was original delivered functionality.

All members of the leadership team need to work well together, understand and agree on priorities, and execute flawlessly. One thing I typically say to management teams I’ve worked with is that you have the right (and obligation) to argue with me about direction and provide all the points that back up those arguments – but once a decision has been made, EVERYBODY lines up behind that decision and executes. Failure to do that will almost guarantee a failed company. There cannot be multiple people driving the bus and expect the bus to get to its destination.

Bill:
I want to thank you for taking the time to let us know a little bit more about you; just one more question, please: What advice do you have for those who want to be entrepreneurs?

Scott:
For those people that want to be entrepreneurs, I say “the easiest person to fool is yourself”. What I mean is that there are hundreds (if not thousands) of inputs that an entrepreneur must process in order to take their idea and turn it into reality. Most people have a pre-conceived notion of how things “should be”. They will turn all the data they are receiving through that channel and make it look the way they think it should look, to validate whatever assumptions they have.

I have found that the successful startups I have been at (and the ones you read about) the entrepreneurs question EVERYTHING. They do not pre-assume anything, and they take all the available input to question and challenge all that they know. It is the person that questions everything, that doesn’t assume anything, and that doesn’t fool themselves into thinking they are “right” about everything that has the most success. I’m planning another blog entry about this topic and how it pertains to sales as well, hopefully I can post that soon!

By Bill Nigh

ClearStone 5.0 is now in GA, with compelling new functionality and a long, clear growth path due to good architecture choices. The main architectural change, with significant implications: ClearStone 5.0 was re-architected with NoSQL DBs Cassandra and Neo4J.

There were several challenges we faced in re-architecting ClearStone, and we’re proud to have handled them in stride.

  1. We were accustomed to using an RDBMS for storage of application and server performance metrics. In an RDBMS, triggers are a bulletproof way of sensing change to data and having the option to take some action, such as sending notifications. While other NoSQL technologies offer an equivalent to triggers, Cassandra does not, so we had to come up with a way to emulate this functionality. (We and others have requested this feature from the Apache Cassandra project, so it may show up in the future). We changed ClearStone’s data model to accommodate this new reality.
  2. Neo4j presented a fascinating challenge. We store and model data as a series of connected nodes; Neo4j, with its very low impedance with the way we designed, made it look like it would be fairly easy. What is challenging is the wide open nature of Neo4j qua implementation of a graph db; you can define nodes and edges (relationships) anyway you want; they can have or not have properties, and can have different types of directionality. So the challenge was to figure out how we wanted to represent all the data without fully knowing in advance how we wanted to traverse all that and get correlations; that presented a challenge from the engineering standpoint of the model.
  3. Another design challenge: we are consuming arbitrary time series data structures. ODI (Open Data Interface), our RESTful API for instrumenting most any IT resource, opens up the product to accept any data from any IT resource; because of this open API, we can’t know in advance what data model will characterize data being instrumented, so we needed maximum possible flexibility. An RDBMS would not only require a formal schema but an attendant requirement to normalize everything, or at least start with that.  Cassandra combines that needed flexibility with high accessibility; Cassandra’s column family implementation is “very forgiving”, as Ivan Ho, Evident’s CTO has said; columns can be added on the fly. (Another feature of Cassandra was especially persuasive: in prior versions of ClearStone, due to its use of RDBMS, there was a discontinuity of the data; a different application was used for history. Cassandra solved that problem, allowing display of current and historical data.)
  4. Cassandra has no query language; all access is through its API; (Lucene is used to query Neo4j, in contrast, one of several methods of retrieval). Using a globally unique key assigned during its inception in Neo4j, we can retrieve needed Cassandra metric, event and entity information.

Future versions will benefit from the flexibility we architected into the product with these NoSQL DBs, as will our customers; expect to see additional Management Packs over the next few weeks; when we ‘sprint’, we take it literally :)

By Bill Nigh

Recently, I posted a tip from one of our veterans about embedding Cassandra within Tomcat for testing, including a suggestion to not do so in production, mainly for performance reasons.

This post generated a comment from a reader named Morten:

“I have actually been considering using Cassandra embedded with Tomcat 7 to run a full stack in the same process, so I am real interested in knowing more about the reason for the strong discouragement of not doing this? Are there any tests, profiling results, or similar behind this?”

I passed the question to Ching-Cheng Chen, and here is the information he furnished:

It probably highly depends on what your application is doing. If your application is very light and uses very few resources, then you might be able to live with that. However, if your application is also performing some heavy logic especially the type of logic that causes lots of heap usage, you really want to avoid embedded Cassandra in your application.

We don’t have any profiling to specifically prove this; however, we have been seeing way different GC behaviors. Our application logic creates many “temporary” objects, with a life cycle long enough to survive a few minor GCs.

If you check Cassandra’s default GC setting, it sets MaxTenuringThreshold as 1. The idea behind that setting is probably that everything that survives one minor GC most likely is meant for cache, so promote them into old gen ASAP. (I pressed Ching-Cheng for clarification of ‘old gen’, and he responded: “It’s a Java GC term; heap memory for Java is kind of divided into multiple ‘regions’: old gen/tenured, eden space, young gen, survivor space, etc. etc. Newly created data is generally put in young gen first and that data is candidate for minor GC. Long lived data will promote to old gen/tenured eventually and no longer will be processed during minor GC but will be checked during major GC. http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html“)

Anyway, this is how you can see how the GC setting for Cassandra and the application has a conflict. He observed that if we set MaxTenuringThreshold to 1 (as Cassandra’s default setting), the old gen fills up too fast and we constantly have to stop-the-world GC for a few seconds.

If we set the MaxTenuingThreshold higher, then we see way more data being copied to survivor space and more time spent on minor GC.

We then tried to decouple Cassandra with 2 JVMs; the JVM running Cassandra used the default Cassandra GC setting and the application JVM didn’t set the MaxTenuringThreshold (I think the default is 31 or 32?). Neither JVM had any stop-the-world GC anymore.

The bottom line is that if you are satisfied with the performance after you embed Cassandra, then go for it, but most likely you will get better performance by decoupling Cassandra from your application.