We will not hire jerks

We are in the midst of interviewing for a web developer position, which is fitting for the 0x100th day of the year, Programmer’s Day.

Louis and I have interviewed maybe a hundred people together, and yesterday, for the first time, we interviewed somebody who I would consider a jerk.  I think it’s clear that he demonstrated a lack of respect and concern for others, but I will spare you the details.

There’s an easy, gut-level reaction answer to this.  No hire.  Personality aside, he wasn’t even the technically strongest candidate.  But there’s a harder question; what if he was?  Would we turn away the next Steve Jobs if he rubbed us the wrong way?

  1. There is a difference between fighting for an idea and being a jerk.  We treat team members as peers, and foster a culture where they can tell us when we’re wrong.  More than half of the company’s good ideas come from employees.  We value being outspoken and opinionated, but also being nice.
  2. I don’t want to work with a jerk.  If he can’t keep it together for a one hour interview, how bad might it get later?
  3. One of our strongest assets is our camaraderie.  We took an anonymous employee survey a little while ago, and everybody overwhelmingly responded that they liked and respected the team, and that they thought Louis and I cared about them as people.  One bad apple could start a downward spiral.
  4. Happiness leads to productivity and creativity.  Even if a jerk is super productive, would that compensate for the negative affect on everybody else?  Unlikely.

Salespeople need to have some mainstream appeal, but most good developers are a little quirky.  We love quirks, and we will not hire jerks.  If you work at Archon, breathe easy.

We are in the midst of interviewing for a web developer position, which is fitting for the 0x100th day of the year, Programmer’s Day. Louis and I have interviewed maybe a hundred people together, and yesterday, for the first time,… Continue reading ‘We will not hire jerks’

3 Comments

Ranked the 49th Fastest Growing Company in Canada

I am so proud to report that our company has been ranked the 49th fastest growing company in Canada according to PROFIT Magazine’s PROFIT HOT 50 list.

This will not be possible without all the awesome people in our company and people who helped us along the way.  I’ll like to thank (in no particular order) Siobhan, Prabak, Sunny, Matt, Ned, Stephen, Amy, Tony, Jeff, Maria, Teresa, Belinda, Gabriel, Steve, Imran, Peter, Jonathan, Christine, Sari for making this happen.  Every one of you contributed in making this happen.

Most importantly, thank you to all the users of inFlow who have supported us all these years.  We will continue on making great products for businesses and stay true to our thinking!

I am so proud to report that our company has been ranked the 49th fastest growing company in Canada according to PROFIT Magazine’s PROFIT HOT 50 list. This will not be possible without all the awesome people in our company and… Continue reading ‘Ranked the 49th Fastest Growing Company in Canada’

2 Comments

How to drop a column with a default value constraint in SQL Server

It’s frustrated me a few times how difficult it is to drop a column in SQL Server when that column has a default value set on it.  You’ll get an error message like this:

Msg 5074, Level 16, State 1, Line 27
The object 'DF__TableName__ColumnName__04DCFCE9' is dependent on column 'ColumnName'.
Msg 4922, Level 16, State 9, Line 27
ALTER TABLE DROP COLUMN ColumnName failed because one or more objects access this column.

If you use SQL Server Management Studio, it takes care of this for you automatically, dropping the default constraint along with the column.  However, if you need to do it programmatically, it’s harder.  The name of the default constraint might have been automatically generated and hard to predict, so you need to look up the default constraint name first, and then drop the column.

Here’s a code snippet that’ll drop a column with a default constraint:


DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name FROM SYS.DEFAULT_CONSTRAINTS WHERE PARENT_OBJECT_ID = OBJECT_ID('__TableName__') AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns WHERE NAME = N'__ColumnName__' AND object_id = OBJECT_ID(N'__TableName__'))
IF @ConstraintName IS NOT NULL
EXEC('ALTER TABLE __TableName__ DROP CONSTRAINT ' + @ConstraintName)
IF EXISTS (SELECT * FROM syscolumns WHERE id=object_id('__TableName__') AND name='__ColumnName__')
EXEC('ALTER TABLE __TableName__ DROP COLUMN __ColumnName__')

Just replace __TableName__ and __ColumnName__ with the appropriate values.  You can safely run this even if the column has already been dropped.

Bonus:  Here’s the code to drop foreign keys and other types of constraints.


IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where TABLE_NAME = '__TableName__' AND COLUMN_NAME = '__ColumnName__')
BEGIN
SELECT @ConstraintName = CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where TABLE_NAME = '__TableName__' AND COLUMN_NAME = '__ColumnName__'
EXEC('ALTER TABLE __TableName__ DROP CONSTRAINT ' + @ConstraintName)
END

It’s frustrated me a few times how difficult it is to drop a column in SQL Server when that column has a default value set on it.  You’ll get an error message like this: Msg 5074, Level 16, State 1,… Continue reading ‘How to drop a column with a default value constraint in SQL Server’

10 Comments

Back to basic – Your startup should make money

It breaks my heart to read Tom Howard’s post on his struggles with his startup.

On many levels, I can relate to his story.  When Stephen and I started Archon a few years ago, we had no money and no funding.  We mostly muddled through our first two/three years with minimum-wage projects, Stephen’s scholarship fund, and my grandmother’s pension savings.  I still remember vividly of being afraid to attend gatherings with friends, seeing them making decent programmers money, and feeling like a failure when asked what was I up to.

But I’m not going to talk about all those struggles in this post.  I think most startup entrepreneurs will share the same “just-suck-it-up-and-keep-rolling” mentality.

What I want to write about is the current trend in startup as I see it, and a reminder that we should get back to the basic.

 

My partner, Stephen, had a brilliant observation on the recent craziness we see in the startup world:

“It’s not just the startup world.  Interest rates are low, gold prices are high, stocks and bonds aren’t yielding that well … in general because of demographic and other trends, there are too many people wanting to lend (and earn interest) and not enough people productively borrowing.  So it’s only natural that this spills over into the startup world.

I don’t see a major “correction” in the next decade.  The age of easy, predictable return on investments is over.  Lots of startups overvalued?  Yes.  Bubble?  No.”

To extend his thoughts, I think a multiple of factors have yielded the vibrant startup craze we see today:

  1. Big successes on seemingly simple apps: Twitter, Draw Something, Dropbox, Instagram, etc.
  2. Access to funds with just a PowerPoint deck, or a weekend-all-nighters prototype, or “my friend’s friend just got funded by doing …”
  3. Coding up something usable is quick and easy-to-learn with technologies such as Ruby on Rails, Django, Cake php, etc.
  4. You only need a few people – most of the time two to three only.
  5. Financial cost of doing a startup is low, and most people are willing to stay lean at the beginning.
  6. The idea of “if I solve this little problem/pain-point that so many people have, then I can make millions.  Look at Company X.  If things don’t work, I will just pivot.”  Keyword here is little.

The optimism is good and all.  Without it, we, as a society, won’t be able to take awesome photos, sync them across computers, and tweet them for the world to see.  Without it, we, as programmers, will all just be stuck at our bank jobs, wearing a tie and wondering why we haven’t hung ourselves with it yet.  Without it, we, as founders, will sleep even less at nights.

But realistically, most startups will fail.

 

When my older brother found his first startup, it was a bit before the dot-com bubble, back in the 90s.  They were well-funded, had a talented team, and a beautiful office space.  Heck, they even gave me my first internship!

But the problem was that they weren’t really making money.  They were building websites for other companies, doing cool little projects here and there, and generally just having fun.  When the dot-com busted, funding stopped, and they had to close shop.  It was very disheartening for me to learn the news, as I always thought my brother was invincible.

Lesson that I toke from his experience was: “a company has to make money”.

 

Zooming back to today, I think startups nowadays had learned from their predecessors, somewhat.  Hey, at least they didn’t have the whole Lean Startup and YC thing back then, right?

But I think the basic human psychology is still at play here.  As Warren Buffet said:

“… when your neighbor has made a lot of money by buying internet stocks, and your wife says that you’re smarter than he is and he’s richer than you are, so why aren’t you doing it.”

Similarly, some might think: “if Twitter didn’t bother thinking about monetizing in its early days and is still super successful now, then why should we think about monetizing that early?  Better to find the product/market fit first and build some traction from it.”

In my observation, quite a bit of startups are still going with this line of thinking.

Don’t get me wrong.  I think it’s perfectly fine to use investor’s money for developing the product before its launch.  And it is perfectly fine to live on investor’s money for a bit until things are picking up.

But what doesn’t sit well with me are startups with no real plans to make money on day one, and are just hoping the ill-thought-out freemium or half-baked ad-supported models will save their day, once they get enough users.    The key here is, of course, once they get enough users.

 

I think instead of wishing for the ideal case, people should first look at the baseline.  We should work backwards and ask: “how much money per month does it take for us to keep the team alive, so that we can all keep on working?”

After that, just do a simple math of calculating the average revenue per paying users, the number of paying users you need, the conversation rate within the industry, and, finally, how many active users you need per month to make all these numbers.  Once you have all these numbers, ask yourself honestly in the mirror: “Can I realistically make these numbers before the money burns out?”

All these might sound like common sense, and I’m sure it has been covered extensively in many other books/articles.  But with the recent string of big acquisitions and seemingly over-night successes, I just want to remind us that we should all focus on the basic first: “the company has to make money”.

It breaks my heart to read Tom Howard’s post on his struggles with his startup. On many levels, I can relate to his story.  When Stephen and I started Archon a few years ago, we had no money and no funding.  We… Continue reading ‘Back to basic – Your startup should make money’

1 Comment

We are hiring!

We are looking for another awesome web app programmer to join our dev team on the *secret stealth project*!

If you think you have some serious front-end chops (HTML/CSS/JS) and had done some Ruby on Rails code before, then join us on the fun!

For more details, take a look at the position on our career page.

We are looking for another awesome web app programmer to join our dev team on the *secret stealth project*! If you think you have some serious front-end chops (HTML/CSS/JS) and had done some Ruby on Rails code before, then join… Continue reading ‘We are hiring!’

1 Comment