创业认识

没有建立起壁垒就容易在竞争中失败,一定要反复思考项目核心壁垒是什么如何建立壁垒

互联网创业,特别是年轻创业者互联网创业,几乎商业模式本身没有壁垒,虽然在访谈中,所有创始人都提到了自己项目没有核心壁垒类似的描述导致失败,但后来我又接触了上百个互联网项目后,发现其实大多数商业模式是没有壁垒的,甚至说绝大部分商业开始都是没有壁垒的,是在后期如何建立壁垒形成商业的护城河,说到底在互联网创业里就是规模效应的壁垒,如何占领市场认知的壁垒,这是创业者需要反复思考的要点。

优考试是否要建立市场认知的壁垒?!

如果没有竞争,反而要思考是这个领域本身是不是就没有市场,在产品模式和功能无法创新太多的情况下,最应该思考的是如何在运营上走最快也可能最难走的路

在创业过程中,关键的节点要落实在纸上,或者就该自己做,例如京东自建物流等,不然几乎难以执行。创业是条孤独的路,在这条路上,能够完全信任的人少而又少,反过来说,在这个天下熙熙皆为利来与往的世界,如何加强所有连结,去绑定形成利益共同体,本来就是作为一个合格创业者要深刻认知的事项「依赖」在任何场景下都有代价,「共生血盟」才能顽强成长。

原文:30个CEO,烧了42亿,告诉我这9个真相 | TNBT原创

很多产品最后没有跑出来,或者没有大成,不是没有痛点需求,也不是没有广阔市场,而是不够具备稀缺性,导致无法形成良性的商业循环。

稀缺性,早期靠非共识,中期靠执行力,后期靠垄断性。

  • 先行者往往不被主流认可,这个时候只有他在供给这样的产品和服务,稀缺性是天然的。此时最重要的是不断验证和强化这个供给,用大白话说就是「能跑多快就跑多快」。
  • 随着市场慢慢增长,更多玩家也看到了商机冲了进来,稀缺性面临反向稀释,这一阶段保持半步领先就必须靠超强的执行力和少犯错误,行业老炮在这个时期就会比新贵更有优势。
  • 到了后期,市场心智已经占领,网络协同效应开始显现,数据智能反哺产品的高效产出拉开竞争距离,并做到长期垄断生态上下游最核心的资源。

不是所有的公司都可以成功跨越这三个阶段,于是他们不得不面对红海、价格战以及恶性竞争,劣币驱赶良币。从另外一方面看,能够顺利跨过这三个阶段的公司都有一个有趣的特点: 早期有一个创新力极强的创始人,中期有一个行业浸泡多年的合伙人,后期有一个懂得商业模式顶层设计和生态搭建的合伙人。稀缺性,都是由合适的时间合适的人,带来的。

Bloom Filters by Example

[原文] https://llimllib.github.io/bloomfilter-tutorial/

A Bloom filter is a data structure designed to tell you, rapidly and memory-efficiently, whether an element is present in a set.

The price paid for this efficiency is that a Bloom filter is a probabilistic data structure: it tells us that the element either definitely is not in the set or may be in the set.

The base data structure of a Bloom filter is a Bit Vector. Here’s a small one we’ll use to demonstrate:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Each empty cell in that table represents a bit, and the number below it its index. To add an element to the Bloom filter, we simply hash it a few times and set the bits in the bit vector at the index of those hashes to 1.

It’s easier to see what that means than explain it, so enter some strings and see how the bit vector changes. Fnv and Murmur are two simple hash functions:

Enter a string: 

fnv: 
murmur:

Your set: []

When you add a string, you can see that the bits at the index given by the hashes are set to 1. I’ve used the color green to show the newly added ones, but any colored cell is simply a 1.

To test for membership, you simply hash the string with the same hash functions, then see if those values are set in the bit vector. If they aren’t, you know that the element isn’t in the set. If they are, you only know that it might be, because another element or some combination of other elements could have set the same bits. Again, let’s demonstrate:

Test an element for membership: 

fnv: 
murmur:

Is the element in the set? no

Probability of a false positive: 0%

And that’s the basics of a bloom filter!

Advanced Topics

Before I write a bit more about Bloom filters, a disclaimer: I’ve never used them in production. Don’t take my word for it. All I intend to do is give you general ideas and pointers to where you can find out more.

In the following text, we will refer to a Bloom filter with k hashes, m bits in the filter, and n elements that have been inserted.

Hash Functions

The hash functions used in a Bloom filter should be independent and uniformly distributed. They should also be as fast as possible (cryptographic hashes such as sha1, though widely used therefore are not very good choices).

Examples of fast, simple hashes that are independent enough3 include murmur, the fnv series of hashes, and HashMix.

To see the difference that a faster-than-cryptographic hash function can make, check out this story of a ~800% speedup when switching a bloom filter implementation from md5 to murmur.

In a short survey of bloom filter implementations:

How big should I make my Bloom filter?

It’s a nice property of Bloom filters that you can modify the false positive rate of your filter. A larger filter will have less false positives, and a smaller one more.

Your false positive rate will be approximately (1-e-kn/m)k, so you can just plug the number n of elements you expect to insert, and try various values of k and m to configure your filter for your application.2

This leads to an obvious question:

How many hash functions should I use?

The more hash functions you have, the slower your bloom filter, and the quicker it fills up. If you have too few, however, you may suffer too many false positives.

Since you have to pick k when you create the filter, you’ll have to ballpark what range you expect n to be in. Once you have that, you still have to choose a potential m (the number of bits) and k (the number of hash functions).

It seems a difficult optimization problem, but fortunately, given an m and an n, we have a function to choose the optimal value of k(m/n)ln(2) 23

So, to choose the size of a bloom filter, we:

  1. Choose a ballpark value for n
  2. Choose a value for m
  3. Calculate the optimal value of k
  4. Calculate the error rate for our chosen values of nm, and k. If it’s unacceptable, return to step 2 and change m; otherwise we’re done.

How fast and space efficient is a Bloom filter?

Given a Bloom filter with m bits and k hashing functions, both insertion and membership testing are O(k). That is, each time you want to add an element to the set or check set membership, you just need to run the element through the k hash functions and add it to the set or check those bits.

The space advantages are more difficult to sum up; again it depends on the error rate you’re willing to tolerate. It also depends on the potential range of the elements to be inserted; if it is very limited, a deterministic bit vector can do better. If you can’t even ballpark estimate the number of elements to be inserted, you may be better off with a hash table or a scalable Bloom filter4.

What can I use them for?

I’ll link you to wiki instead of copying what they say. C. Titus Brown also has an excellent talk on an application of Bloom filters to bioinformatics.

References

1: Network Applications of Bloom Filters: A Survey, Broder and Mitzenmacher. An excellent overview.

2: Wikipedia, which has an excellent and comprehensive page on Bloom filters

3: Less Hashing, Same Performance, Kirsch and Mitzenmacher

4: Scalable Bloom Filters, Almeida et al

FOCUS ON YOUR OWN SHIT

My eyes crack open. 7am. Roll over. Grab my phone. Start scrolling…

Check Product Hunt. Ahh, shit. Someone just launched an app similar to my product (and we’re still in beta).

Scroll through Twitter. Shit! This person I’m jealous of just announced a another success.

Read Medium. Fuck. Someone wrote a post almost identical to what I wrote months ago and they’re getting more traction.

My envy grows large, my blood pressure goes up. I feel like I’m waking up in a heavy cloud; an agitated haze. Already on edge, and I haven’t even made toast yet.

Have you ever felt like this?

Stress is our body’s defense against bad news. It was useful when our ancestors were running around the jungle about to be eaten. It’s much less helpful now.

The problem is that the worry itself can harm you as much as the outcome you’re worried about. While you’re stressing over what might happen, your body is releasing adrenaline and cortisol as if you were actually in danger.

These hormones are what cause intense feelings: jealousy, anger, sadness, despair.

But even worse, they reduce your ability to make great stuff.Instead of putting your energy into creating, you’re obsessing about things you can’t change.


Here’s how to get out of that negative downward spiral:

Quit worrying about what everyone else is doing. Focus on how you’re helping people.

Agonizing over your competition doesn’t help you serve your customers better. Being jealous of your peers won’t improve your craft.

There’s only two things that will improve your situation:

  1. Concentrate on your users, audience, customers, fans.
    Figure out what they want. Develop a deep connection with them.
  2. Improve your skill, expertise, competence, product.
    How can you get better? How can you make your product better for the people who use it?

Focus on your own shit and ignore everything else.

[原文] https://justinjackson.ca/focus-on-your-own-shit

努力是没有用的

漫画家蔡志忠有一个演讲,题目叫做《努力是没有用的》。读完这份演讲稿,我觉得他说的有道理。

有些人非常勤奋,别人休息和娱乐的时候,都在工作学习。但是努力了一辈子,人生也没有显著的提升,就像报道里经常说的:”某某在平凡的岗位上,勤勤恳恳工作了一辈子”。

另一方面,很多成功者似乎也没有特别努力,就取得了许多成就,过上了好日子。蔡志忠以自己为例,他从小就喜欢画画,然后一直画,不知不觉就成了大漫画家,名利双收,从没有觉得过得很辛苦。

老师或父母老是说,努力就会走到巅峰—-才怪。如果这样,不是所有人都走上巅峰了吗?没有人开始不努力,为什么后来不努力,因为努力没有效果。”

人生不是走斜坡,你持续走就可以走到巅峰;人生像走阶梯,每一阶有每一阶的难点,学物理有物理的难点,学漫画有漫画的难点,你没有克服难点,再怎么努力都是原地跳。所以当你克服难点,你跳上去就不会下来了。

蔡志忠的核心观点就是黑体的那句话,成功的人生是台阶式向上,而不是一条水平线。努力只是说明你拼命在走,跟你能不能向上走,关系不大。那些努力却没有结果的人,根本原因就在于,他一直走在平面上,没有走到更高的台阶。

也就是说,垂直方向的努力更有意义,水平方向的努力意义不大。你把同一件事情勤奋地做上十遍,还是只会做这一件事;你做完这件事后,再去挑战更难的事情,就有机会学会做两件事。

初学者经常问我,前端开发应该学习哪一个框架?我的回答就是,你觉得哪一个框架比较容易,就用那个。因为它们都是解决同样的问题,你只要知道怎么解决就可以了,没必要深究哪一个解决得更好。对你更重要的是,要去解决更多的问题,而不是如何最好地解决一个问题。

只有通过解决更多的问题,人生才能摆脱水平运动,进入上升运动。当然,这里还有一个天赋和兴趣的问题,如果找到属于你的领域,不用特别努力就能上台阶;如果找不对领域,再努力也只能做水平运动。

成长的生存偏见

用户的习惯和期待比欣赏更能形成强大的护城河。 成功的产品将持续的成功直到遇到大的变化或者管理上的失误。 一旦大量的用户对某一产品形成固定的习惯和满足上的认知, 那么让他们去转向一个新产品将会变得非常艰难,即使这个更好的产品。

 

The best product doesn’t always win. The one everyone uses wins. Later we all tell ourselves a story about why and how that product was really the best all along in an impressive display of survivorship bias. In fact, the history of technology is littered with quantitatively superior products that lost in the marketplace because they weren’t well timed, well marketed, or well supported: VHS vs Betamax. Gasoline vsElectric. English vs Esperanto. Metric vs Imperial.

“Habit and user expectation remains a stronger moat than people appreciate.” – Ben Thompson

Winning products tend to continue to win until major disruption or mismanagement. The reason for that is simple: everyone else has to conform before they can compete. You become the de facto standard against which other things are measured. It is hard to differentiate for the better when people have already collectively endorsed a fiction that the best solution has already been found (and, what luck, it’s the one that won). Society is a dynamic part of product/market fit, and once a large number of humans have learned come to expect a certain behavior, there just isn’t enough value in learning a new system even if it is better. This isn’t just about switching costs between products but rather more fundamentally about interaction paradigms. Do you really think an app garden is the apex of all possible phone UIs? Is a vertical scrolling feed really the best way to stay up to date on friends? Does the QWERTY arrangement on a keyboard make any sense today?

This is the reason companies focus so much on growth. It isn’t just that growth signifies a fit with a market. But rather because growth actually makes the market fit stronger. Even when the product doesn’t involve network effects directly it still benefits from the habits and expectations of the population at large that accompany growth.

 

[ source: http://boz.com/articles/growth.html ]