猎豹CEO傅盛:如何做好创业公司CEO?

创业的最大难度是太自由,而容易失去方向。但是,当给出一个固定性问题,或者说封闭式、有区间问题,难度会大幅度下降。如何做好一家创业公司的CEO,傅盛的答案是“能把创业情怀变成具体问题”,而且这个问题越具体越好。” 傅盛总结称,创业,要像做一道数学题一样。

首先,想清楚目标,然后立刻做。反复就一个封闭式问题,来回推演。一旦具备这样的能力,创业就开始变得简单。
其次,有解是最难的一件事情。那种你想清楚一个问题,执行就开始变得简单的过程,而不是一种强烈依赖于强大的执行的状态。
第三,目标应当简单、聚焦,且被验证。

作为一个创业者应当,在自己的思维里,能够把开放式问题变成封闭式问题;在这个过程中,不断根据变化极快的世界重构自己;大方向上,抓住具体机会,然后全力以赴。

李想16年的创业分享:做正确的事,不做容易的事

经验一:用户永远是最重要的
经验二:大势不好,再努力也没用(雷军 风口理论)
经验三:创业一定要找到能成“NO.1”的领域
经验四:把握用户的要素,需求和频率,以及信任感
经验五:团队管理,企业文化不应该需要解释
经验六:商业模式的建立,圈地—产品—运营—商业
经验七:升级商业模式,抓住三个特点

掌握你的用户和行为数据,只掌握用户是没有用的
第二个因素,必须掌控交易和服务质量
第三点,利用用户的行为数据和交易数据,用技术提升效率,形成这么一个闭环

经验八:提高转化率要理顺交易链条,把握核心环节

第一个竞争力,我们所有用户虽然能在网上买车,但是要电话咨询,而且几乎100%都要咨询
第二个是有明确需求的人
第三类的用户,我在两个车里不知道选哪一个,你给我一个建议,同时你帮我把这个车买了,这是解决基本需求

经验九:产品服务决定销量,品牌决定利润率
经验十:创始人需要具备的五项特质

学习能力是第一重要的
第二个要有自信
第三个通俗一点的叫出好题,说白了,要把战略方向先搞的特别清楚,因为越简单有效清晰的战略,会让团队的效率大幅度提升。
第四点,要坚持,如果不坚持,什么都白搭了
最后一个要分享利益,懂得跟团队去分享利益

大部分创业者都被自己坑了(滴滴打车)

第一个坑,是你自己, 要对商业有自己的价值判断,这是创业者必备的素质
第二个坑,只要努力就会有结果,创业很多时候就是踩中了运气的节点
第三个坑,创业项目越垂直胜算越大
第四个坑,创业者必须经验丰富,真正推动大家向前冲的是你的愿景,实现愿景的瓶颈是你的悟性
第五个坑,你必须得有团队, 创业本身是孤独的旅程,和团队无关,创业者都拥有能享受孤独的贵族气质

你不是必须得有团队,而是必须得有好团队。所以有隐患的团队不如没有团队,单打独斗一阵思路会更清晰。
碰到心动的合伙人,你问问他们,他们最想要什么?不是在你这里,而是对生活、对人生要什么。然后想想自己怎么给他们想要的。

创业者说:5个问题找到能和你一起创业的人

  • 告诉我一项你正在努力提高的技能: 都想要“能够不断提高自己能力并帮助其他人提高的领导者”
  • 谁是你的理想工作伙伴: 换句话说,请形容一下谁的技能和优势能够补你之短,考察的是自我认识能力。
  • 你是否曾解决过职责范围之外的事;当时的工作情景是怎样的
  • 你平时的工作安排是什么样子:了解80-20法则,即一份工作最关键的职责实际上非常少,需要人们迅速完成重要工作,不能浪费时间
  • 你如何应对持续的、不可预测的变化

创业者所要思考的3个W (ArtPollo阿波罗艺术网)

who why how
简单做法:尽量回归原始社会,减少分工从而减少公司资源的交易,减少资源的浪费降低公司的机会成本。公司层级的数量永远和效率成反比。

Admin UIs of MongoDB

  • mongo shell
  • GUI-Style (some for administration, some for data viewing)
    • MongoDB Cloud Manager: deploying and managing MongoDB instanaces with monitoing and backup capabilities
    • mongo-express:open source, by node.js and express.js
    • Edda : log visualizer, (pip install edda), it takes logs as input and creates a timeline of notable events in the set
    • Fluentd: open source log management tool
    • HumongouS.io: web-based UI for MongoDB
    • mongobird: operations and administration management tool for MongoDB with dashboards, forecast warning, and various graphs.
    • mongoCMS: a MongoDB-backed content manager specifically developed to manage rich content applications such as blogs and other web data
    • NoSQL Manager for MongoDB: a desktop GUI tool
    • NoSQL Viewer:
    • JSON Studio: a suite of data access applications enabling easy access to data stored in MongoDB using a high-level interface
    • Mongo Management Studio (CE/EE)

Humongous, MongoDB = JSON +Index

MongoDB vs MySQL(Relational Database)

NoSQL vs RDBMS , Strengths vs weakness

  • RDBMS
    • relational database structure is easy to ensure data integrity and security (money related, BANK)
    • structured table, simple way of representing data or business models (view, index, SP, trigger)
    • SQL, easy to retrieve or query data
    • complex, multi-row transactions support
    • no ability to scale horizontally ( at least, for current rdbms product)
  • NoSQL

    Not to replace RDBMS, it fulfills different areas’ need (large website, User Generated Content)

    • no rely on object-relational mapping
    • support high transaction loads
    • no tables’ join opeation support

the goodness of MongoDB

  • Scenarios MongoDB specialized in

    • high read/write load
      • High Availability
      • Data grow quick and go big
      • Data location based
      • Flexible, Data Schema unstable
      • Scalable
  • use cases MongoDB is good at

    • Catalog
      • Content Management
      • Personalization
      • Single(360) View
      • Internet of Things
      • Mobile
      • Real-Time Analytics

Mongoose: elegant MongoDB object modeling for node.js.

Data Types

  • String, utf-8 encoded
  • Number, MongoDB support long and double, but mongoosejs does not
  • Boolean, true or false
  • Date (ISODate object, expires, min, max )
  • Buffer (.copy(target), .equals(other), .writer())
  • ObjectId ( var id = new mongoose.Types.ObjectId;)
  • Array ([] or schema; #$shift(), #remove(), .$pop(), .addToSet([args…]), .indexOf(obj), inspect(), .nonAtomicPush([args…]) , .pop(), .pull([args…]), .push([args…]), .set(), .shift(), .sort(), .splice(), .toObject(options), .unshift() )
  • Mixed, (empty object {} or Schema.Types.Mixed )
  • custom SchemaTypes

Schema

Schema define data structure.

define schema early, just after require mongoose
easy to update schema even though data exit and no offline or down time

1
2
3
4
5
6
7
8
9
10
11
//define account schema, any website need the account information, even if an anonymous account
var accountSchema = new mongoose.Schema({
email: {type: String, unique: true},
password: String,
name: String,
createdOn: {type: Date, default: Date.now},
updatedOn: Date,
lastLogin: Date,
location: [],
...
});

Model

  • Model is comiled version of Schema, Schema + Model = Class of OOP
  • An instance of model maps to a document in a database of MongoDB
  • Collection coorespond to table of RDBMS,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//build Account model by default connection / class Account
mongoose.model('Account', accountSchema, 'accounts');
// or by specific connection
//connection1.model('Account', accountSchema);

//Instance, an instance of a model refers to a document
var myAccount = new Account({
email: 'myemailaddress@xxx.com',
password: 'pwd',
name: 'myName'
});

// or js code
myAccount.name = 'myNewName';

for code above, Model name is Account, Collection name is “accounts”.

Mongoose: elegant *MongoDB object modeling for node.js.

Installation

1
$npm instll mongoose -g

Connection to MongoDB

best practice

  • opening connection at application start
  • a connection equals a database
  • mongoose model reply on connection being defined
1
2
3
4
5
6
7
8
9
10
// refer mongoos
var mongoose = require("mongoose");

// open a connection to a specific server.db
var connectionString = "mongodb://locahost:27017/testDB";
mongoose.connect(connectionString); //default connection

var connection1 = mongoose.coFateConnection
var connectionString2 = "mongodb://locahost:27017/DB2";
var connection2 = mongoose.createConnection(connectionString2);

Format of connection string / Simple options of connection
Format: mongodb://username:password@domain:port/db

1
2
3
4
5
6
//JSON objects, Options definition
var connectionOptions = {
'username': "db user name",
'password': "db pwd"
};
mongoose.connect(connectionString,connectionOptions);

Close connection

1
2
3
4
5
6
7
8
9
// to close default connection
mongoose.connection.close(callback);
var callback = function(){
console.log('Mongoose\'s connection is closed!');
};

//alternative way to close
connection1.close(callback);
connection2.close(callback);

Events of Connection

a bunch of events list

  • connecting
  • connected
  • open
  • disconnecting
  • disconnected
  • close
  • reconnected
  • error
  • fullsetup
1
2
3
4
5
// how to catch events
connection1.on('error',callback);
var callback = function(){
console.log('[EventName]Error occur!!')
};

Method of connection

  • open(connection_string, [database], [port], [options], [callback])
  • openSet(uris, [database], [options], [callback]), to open the connection to a replica set
  • close([callback])
  • collection(name, [options]), to retrieve a collection(create it if not cached)
  • model(name, [schema], [collection]), to define or retrieve a model
  • modelNames(), return an array of model names created on this connection