#
WebSocket是一种比HTTP协议更加高效的网络传输协议,它有效地减少了HTTP头中的冗余信息和网络延时,能够提供客户端-服务器和服务器-客户端的双通道实时通信,同时具有很好的安全机制。基于WebSocket的URL通常以WS://...开头,类似于HTTPS,安全的WebSocket连接URL通常以WSS://...开头。要实现WebSocket通信,需要客户端浏览器支持WebSocket,服务器端也必须支持WebSocket。
WebSocket还具有广播功能,当有多个监听者连接时,广播服务器发送的消息都可被接收到。
2.浏览器支持检测
function loadDemo()
{
if (window.WebSocket)
{
document.getElementById("support").innerHTML = "HTML5 WebSocket is supported in your browser.";
} else
{
document.getElementById("support").innerHTML = "HTML5 WebSocket is not supported in your browser.";
}
}
3.WebSocket对象
WebSocket在DOM中是window对象的子对象,它具有:
•WebSocket(url)构造函数。
•readyState。只读属性,其值可以是CONNECTING(0),OPEN(1),CLOSED(3)。
•boolean send(in DOMString data)和void close()两个方法,分别用于发送消息和关闭WebSocket连接
•onopen, onmessage, 和onclosee三个事件属性,分别对open, message和close三个WebSocket事件。
3.使用WebSocket的步骤
//建立连接
url = "ws://localhost:8080/echo";
w = new WebSocket(url);
//事件监听
w.onopen = function() {
log("open"); w.send("thank you for accepting this websocket request");
}
w.onmessage = function(e) {
log(e.data);
}
w.onclose = function(e) {
log("closed");
}
//发送消息
document.getElementById("sendButton").onclick = function() {
w.send(document.getElementById("inputMessage").value);
}
//关闭连接。一般情况下不关闭,以保持实时通信
w.close();
在HTML5的Canvas上绘制椭圆的几种方法
概述
HTML5中的Canvas并没有直接提供绘制椭圆的方法,下面是对几种绘制方法的总结。各种方法各有优缺,视情况选用。各方法的参数相同:
context为Canvas的2D绘图环境对象,
x为椭圆中心横坐标,
y为椭圆中心纵坐标,
a为椭圆横半轴长,
b为椭圆纵半轴长。
参数方程法
该方法利用椭圆的参数方程来绘制椭圆
//-----------用参数方程绘制椭圆---------------------
//函数的参数x,y为椭圆中心;a,b分别为椭圆横半轴、
//纵半轴长度,不可同时为0
//该方法的缺点是,当lineWidth较宽,椭圆较扁时
//椭圆内部长轴端较为尖锐,不平滑,效率较低
function ParamEllipse(context, x, y, a, b)
{
//max是等于1除以长轴值a和b中的较大者
//i每次循环增加1/max,表示度数的增加
//这样可以使得每次循环所绘制的路径(弧线)接近1像素
var step = (a > b) ? 1 / a : 1 / b;
context.beginPath();
context.moveTo(x + a, y); //从椭圆的左端点开始绘制
for (var i = 0; i < 2 * Math.PI; i += step)
{
//参数方程为x = a * cos(i), y = b * sin(i),
//参数为i,表示度数(弧度)
context.lineTo(x + a * Math.cos(i), y + b * Math.sin(i));
}
context.closePath();
context.stroke();
};
均匀压缩法
这种方法利用了数学中的均匀压缩原理将圆进行均匀压缩为椭圆,理论上为能够得到标准的椭圆.下面的代码会出现线宽不一致的问题,解决办法看5楼simonleung的评论。
//------------均匀压缩法绘制椭圆--------------------
//其方法是用arc方法绘制圆,结合scale进行
//横轴或纵轴方向缩放(均匀压缩)
//这种方法绘制的椭圆的边离长轴端越近越粗,长轴端点的线宽是正常值
//边离短轴越近、椭圆越扁越细,甚至产生间断,这是scale导致的结果
//这种缺点某些时候是优点,比如在表现环的立体效果(行星光环)时
//对于参数a或b为0的情况,这种方法不适用
function EvenCompEllipse(context, x, y, a, b)
{
context.save();
//选择a、b中的较大者作为arc方法的半径参数
var r = (a > b) ? a : b;
var ratioX = a / r; //横轴缩放比率
var ratioY = b / r; //纵轴缩放比率
context.scale(ratioX, ratioY); //进行缩放(均匀压缩)
context.beginPath();
//从椭圆的左端点开始逆时针绘制
context.moveTo((x + a) / ratioX, y / ratioY);
context.arc(x / ratioX, y / ratioY, r, 0, 2 * Math.PI);
context.closePath();
context.stroke();
context.restore();
};
三次贝塞尔曲线法一
三次贝塞尔曲线绘制椭圆在实际绘制时是一种近似,在理论上也是一种近似。 但因为其效率较高,在计算机矢量图形学中,常用于绘制椭圆,但是具体的理论我不是很清楚。 近似程度在于两个控制点位置的选取。这种方法的控制点位置是我自己试验得出,精度还可以.
//---------使用三次贝塞尔曲线模拟椭圆1---------------------
//此方法也会产生当lineWidth较宽,椭圆较扁时,
//长轴端较尖锐,不平滑的现象
function BezierEllipse1(context, x, y, a, b)
{
//关键是bezierCurveTo中两个控制点的设置
//0.5和0.6是两个关键系数(在本函数中为试验而得)
var ox = 0.5 * a,
oy = 0.6 * b;
context.save();
context.translate(x, y);
context.beginPath();
//从椭圆纵轴下端开始逆时针方向绘制
context.moveTo(0, b);
context.bezierCurveTo(ox, b, a, oy, a, 0);
context.bezierCurveTo(a, -oy, ox, -b, 0, -b);
context.bezierCurveTo(-ox, -b, -a, -oy, -a, 0);
context.bezierCurveTo(-a, oy, -ox, b, 0, b);
context.closePath();
context.stroke();
context.restore();
};
三次贝塞尔曲线法二
这种方法是从StackOverFlow中一个帖子的回复中改变而来,精度较高,也是通常用来绘制椭圆的方法.
//---------使用三次贝塞尔曲线模拟椭圆2---------------------
//此方法也会产生当lineWidth较宽,椭圆较扁时
//,长轴端较尖锐,不平滑的现象
//这种方法比前一个贝塞尔方法精确度高,但效率稍差
function BezierEllipse2(ctx, x, y, a, b)
{
var k = .5522848,
ox = a * k, // 水平控制点偏移量
oy = b * k; // 垂直控制点偏移量
ctx.beginPath();
//从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线
ctx.moveTo(x - a, y);
ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);
ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);
ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);
ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);
ctx.closePath();
ctx.stroke();
};
光栅法
这种方法可以根据Canvas能够操作像素的特点,利用图形学中的基本算法来绘制椭圆。 例如中点画椭圆算法等。
其中一个例子是园友“豆豆狗”的一篇博文“HTML5 Canvas 提高班(一) —— 光栅图形学(1)中点画圆算法”。这种方法由于比较“原始”,灵活性大,效率高,精度高,但要想实现一个有使用价值的绘制椭圆的函数,比较复杂。比如,要当线宽改变时,算法就复杂一些。虽然是画圆的算法,但画椭圆的算法与之类似,可以参考下。
总结
基本上所有的方法都不可能达到100%精确,因为受显示器分辨率的限制。
其实最好的方法应该是arc()+scale()。canvas绘图库KineticJS就是用的这种方法。
在其他绘图软件中,不像HTML5的canvas那样提供固有的arc()+scale()方法,通常用贝塞尔曲线模拟近似椭圆,无论是几条贝塞尔曲线都是近似而已。关于用贝塞尔曲线模拟椭圆,可以参考这份资料:Drawing an elliptical arc using polylines, quadratic or cubic Bezier curves。
由于arc()+scale()是浏览器已经实现的方法,理论上精度最高,所以从效率、精确度和简单易用程度上来讲,都是最佳的。
在用arc()+scale()绘制完椭圆后,context.stroke()和 context.restore()两个方法调用的先后顺序不同,产生的结果会很有意思的。通常应该先restore()再stroke()。
Demo
下面是除光栅法之外,几个绘制椭圆函数的演示,演示代码如下:
<div id="CanvasWrap" style=" background:#fff; width: 600px; height: 600px; border: 1px solid black;"></div>
<script type="text/javascript">// <![CDATA[
var canvas,
context;
var div = document.getElementById("CanvasWrap");
div.innerHTML = "";
canvas = document.createElement("canvas");
canvas.style.width = "600px"
canvas.style.height = "600px"
canvas.width = 600;
canvas.height = 600;
context = canvas.getContext("2d");
div.appendChild(canvas);
function execDraw()
{
//解决Chrome下的线宽小于等于1的问题
context.lineWidth = 1.1;
context.strokeStyle="black"
ParamEllipse(context, 130, 80, 50, 50); //圆
ParamEllipse(context, 130, 80, 100, 20); //椭圆
EvenCompEllipse(context, 130, 200, 50, 50); //圆
EvenCompEllipse(context, 130, 200, 100, 20); //椭圆
BezierEllipse1(context, 470, 80, 50, 50); //圆
BezierEllipse1(context, 470, 80, 100, 20); //椭圆
BezierEllipse2(context, 470, 200, 50, 50); //圆
BezierEllipse2(context, 470, 200, 100, 20); //椭圆
//检测相似性(重合的程度)
ParamEllipse(context, 300, 450, 250, 50);
context.strokeStyle = "yellow";
BezierEllipse1(context, 300, 450, 250, 50);
context.strokeStyle = "blue";
BezierEllipse2(context, 300, 450, 250, 50);
};
function clearCavnas()
{
context.clearRect(0, 0, 600, 600);
};
// ]]></script>
<p>
<br />
<button onclick="execDraw();" type="button">执行</button>
<button onclick="clearCanvas();" type="button">清理</button>
</p>
注意,要成功运行代码,需要支持HTML5的Canvas的浏览器。
本文转载至:http://www.cnblogs.com/shn11160/archive/2012/08/27/2658057.html
客户端跳转与服务器端跳转的区别
客户端跳转时用HttPservletResopse对象的sendRedirect函数实现,服务器端跳转是使用RequestDispather对象的forward方法实现的。这两者之间的区别主要体现在三个方面:
1. 使用服务器端跳转时,客户浏览器的地址栏并不会显示目标地址的URL,而是用客户端跳转时,地址栏当中会显示目标资源的URL;
2. 服务器端跳转是由客户端发送一个请求,请求一个服务器资源——如JSP和Servlet——,这个资源又将请求转到另一个服务器资源,然后再给客户端发送一个响应,也就是说服务器端跳转是客户端发送一次请求,服务器端给出一次响应;
客户端跳转的流程则不同。客户端同样是发送一个请求给服务器端资源,这个服务器资源会首先给客户端一个响应,客户端再根据这个响应当中所包含的地址,再次向服务器端发送一个请求,也就是说客户端跳转是两次请求,两次响应;
3. 在进行客户端跳转和服务器端跳转时,都需要指定目标资源的URL,如果这个路径以“/”开始。在客户端跳转当中“/”代表的是应用服务器根目录,而在服务器端跳转当中代表的是应用程序根目录。
page = 页面级别
request = 请求级别(与服务器端跳转配合使用)
session = 会话级别(客户端跳转(服务器端跳转也可,但是客户端跳转更加突出了session的作用范围))
application = 应用级别
客户端跳转:服务器端将请求结果返回给客户端,客户端向服务器发出另一次请求。在客户端跳转过程中是两次不同的请求。在地址栏中显示的是最后一次请求地址。
客户端跳转可以进行站外跳转。
1、链接跳转:<a href=””></a>
2、表单提交
3、Response.sendRedirect(“3.jsp”);
4、<mata http-equiv=”refresh”, content=”3;2.jsp”/>
5、response.setHeader(“refresh”,” 3;2.jsp”);
6、客户端跳转“/”代表服务器跟路径(localhost:8080)
7、客户端跳转“.”代表当前工程项目根路径(http://localhost:8080/addressbook)
服务器端跳转(容器内跳转):能够自动的在服务器内部进行跳转,这种跳转对用户来说是透明的。两次跳转时同一个request,在地址栏中显示的事第一次页面地址。
只能进行站点内跳转。
1、<jsp:forward page=””/> --写在jsp页面内的跳转
2、pageContext.forward(); --写在jsp页面内的跳转
3、 request.getRequestDispatcher("1.jsp").forward(request,response);
4、 服务器端跳转“/”代表当前请求根路径(http://localhost:8080/addressbooktest/GoServlet)
5、 服务器端跳转“.”代表当前请求根路径(http://localhost:8080/addressbooktest/GoServlet)
JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn512m -Xss256K -XX:PermSize=120M -XX:NewSize=512m -XX:MaxNewSize=512m -XX:MaxPermSize=120m -XX:ParallelGCThreads=15 -XX:MaxTenuringThreshold=5 -XX:ParallelCMSThreads=15 -XX:+UseConcMarkSweepGC -XX:+UseCMSCom
包含分页的JDBC工具类
package com.shxt.tool;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* @Author:何云龙
* @Version:JDBC封装1.1 2012-11-29 下午06:38:55
* @Description:jdbc的封装
*/
public class DBUtil {
private String url = "jdbc:mysql://localhost:3306/sduentdb";
private String userName = "root";
private String passWord = "root";
private Connection conn = null;
private Statement st = null;
private PreparedStatement ps = null;
private ResultSet rs=null;
// 加载驱动,只加载一次即可
static {
try {
// System.out.println("加载驱动正在进行");
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("加载驱动遇到异常");
e.printStackTrace();
}
}
public Connection getConnection() {
// 创建连接
try {
conn = DriverManager.getConnection(url, userName, passWord);
return conn;
} catch (SQLException e) {
System.out.println("创建连接出现异常!!");
e.printStackTrace();
}
return null;
}
public int update(String sql) {
// row是指受影响的行数
int row = -1;
try {
// 当前连接如果是空或者被关闭,需要重新创建一个连接
if (conn == null || conn.isClosed()) {
conn = getConnection();
}
st = conn.createStatement();
row = st.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭资源
release();
}
return row;
}
public int update(String sql, Object[] obj) {
int row = -1;
// 当前连接如果是空或者被关闭,需要重新创建一个连接
try {
if (conn == null || conn.isClosed()) {
conn = getConnection();
}
ps = conn.prepareStatement(sql);
// 参数结构数据对象
ParameterMetaData pmd = ps.getParameterMetaData();
int varCount = pmd.getParameterCount();
// 给sql语句中的问号?附上值
for (int i = 0; i < varCount; i++) {
ps.setObject(i + 1, obj[i]);
}
row = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭资源
release();
}
return row;
}
public ArrayList<Map<String, Object>> queryToList(String sql) {
ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
// 当前连接如果是空或者被关闭,需要重新创建一个连接
try {
if (conn == null || conn.isClosed()) {
conn = getConnection();
}
st = conn.createStatement();
rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int col = rsmd.getColumnCount();
while (rs.next()) {
Map<String, Object> map = new HashMap<String, Object>();
for (int i = 1; i <= col; i++) {
map.put(rsmd.getColumnName(i),
rs.getObject(rsmd.getColumnName(i)));
}
list.add(map);
}
// System.out.println(list);
return list;
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭资源
release();
}
return null;
}
public ArrayList<Map<String, Object>> queryToList(String sql,String[] str) {
ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
// 当前连接如果是空或者被关闭,需要重新创建一个连接
try {
if (conn == null || conn.isClosed()) {
conn = getConnection();
}
ps = conn.prepareStatement(sql);
// 参数结构数据对象
ParameterMetaData pmd = ps.getParameterMetaData();
int varCount = pmd.getParameterCount();
// 给sql语句中的问号?附上值
for (int i = 0; i < varCount; i++) {
ps.setString(i + 1, str[i]);
}
rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int col = rsmd.getColumnCount();
while (rs.next()) {
Map<String, Object> map = new HashMap<String, Object>();
for (int i = 1; i <= col; i++) {
map.put(rsmd.getColumnName(i),
rs.getObject(rsmd.getColumnName(i)));
}
list.add(map);
}
return list;
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭资源
release();
}
return null;
}
private int pageSize;//页容量
private int rowsCount;//总记录数
private int start;//开始位置
private int end;//结束位置
private int pageNow;//当前页
public static int pageCount;//总页数
public ArrayList<Map<String, Object>> getPage(int pageSize,int pageNow,String sql){
rowsCount=queryToList(sql).size();//获取到总记录数
pageCount=rowsCount%pageSize==0?rowsCount/pageSize:(rowsCount/pageSize+1);//获取到总页数
start=pageNow*pageSize-pageSize;//开始位置
String sqlPage="select * from ("+sql+") as t limit "+start+" , "+pageSize;
ArrayList<Map<String, Object>> list=queryToList(sqlPage);
return list;
}
//关闭资源 释放资源
public void release(){
try {
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(st!=null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(ps!=null){
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
怎么样在30岁前年薪超过50万(转载自网易斩建通)
靳建通有不少朋友发邮件给我,向我请教如何学习.NET,又或者是想拜我为师,长期进行交流学习。很遗憾,由于时间有限,这些邮件我都没有回复。但我确实想帮一帮这些朋友们,所以我觉得还是写一篇文章,将我这些年的经历像讲故事一样告诉大家。如果大家能有所启发,又或者有所进步,那我也算是聊以慰藉、得偿所愿了。靳建通
我是1982年12月8日出生的,靳建通到今年整整30岁了。古人说“三十而立”,我想不论从思想上还是财富上,我应该都算是勉强达到了吧。这篇文章的标题是“如何在30岁前年薪超过30万”,其实只是一个噱头罢了,尽管我确实达到了这么多靳建通,但这不是我所在意的,这篇文章主要是谈谈我的一些历程而已。
小学、初中(1989~1998)
我从小就很贪玩,虽也称不上孩子王,但只要涉及娱乐项目(街机、丢沙包、踢毽子、拍洋片、跳大绳),从来不会少了我的身影。在这个阶段,靳建通我最感谢的是我的父亲和班主任,他们对我管教的非常严,挨打、下跪是常有的事,所以学习成绩还算保持的不错。小学毕业时候,年级第2名(共4个班,每个班30多个学生),初中毕业时年级第62名(共11个班,每个班45个学生)。
高中(1998~2001)
我的初中和高中是同一所学校,陕西省西安市黄河中学,在当地算不错的学校,也就是大人们常念叨的省重点。上了高中以后,我的个头已经超过了父亲,他也不再像从前那样管教我;而由于班上学生很多,又有一些刺头,老师也就顾不上关注我了。但我的贪玩却是一如既往,可能好多人大学时候才接触电脑,可我高一时候就开始去电脑厅通宵上夜机了(借口是:去某某家学习)。靳建通那时可不是编什么程序,而是打游戏。就这样,到了高一下学期期末,我在班里排40多名(共50多人),年级150名靠后(共4个班,220多人)。
上了高二以后,我算是有所反省,收敛了一些,在读书上多花了点心思。靳建通到了高三临近高考前,我的成绩保持在年级30名左右。按照往年的水平,这个名次刚刚够进西安交通大学。于是,我就报考了这所大学。可能是老天对我的惩罚吧,事后老师告诉我们,我们这一届是黄河中学近10年来最烂的一届,所以进入西安交通大学的名次也提升到了年级前20名。于是,我滑到了一所二流学校――西安理工大学。
大学(2001~2005)
至少在那个时候,我还没有那么高的觉悟,不知道珍惜时间。再加上高中阶段的压抑得以释放,所以大学四年基本上是放羊式的。一般来说,一门课程我只上两堂课,第一堂和最后一堂。上第一堂纯粹是给老师面子,上最后一堂则是想看看会不会透露一些必考点。省出的时间基本上泡在网吧,又或者是追求某个MM了。于是,大学的挂科几乎是接连不断,到了大四下学期还有巨恶心无比的、靳建通从大一补考到大四的《工科化学》没过。不过,好在最后一次清考过了,顺利拿到了毕业证和学位证。
大学实在是没什么可圈可点之处,我想大多数人可能和我一样也就这么过来了。让我感到欣慰和庆幸的是:大学期间我考了驾照,过了四六级,而且六级考了82分。
后大学时代(2005下半年)
大学毕业以后,平时比较努力的同学都找到了工作,好一些的进了华为、中兴、靳建通大唐电信等比较有名的公司。像我这样的,简历投出去都是没音讯的,所以我自然想到了很多人都想到的一招――考研。可我的考研完全是一个笑话:我和一个初高中一起玩大的哥们儿在网吧旁边的城中村租了一个房间,结结实实打了半年的网游。
我的学生时代就这样结束了,说了上面这么多,其实想说的意思就一个:我和很多人一样不肖,甚至更差。但这些都不要紧,只要从现在开始努力,你的人生一样可以开始转变。靳建通
西安上半期(2006~2007年中)
我想在大学时代干的还算不错的一件事就是考过了六级,托它的福,我找到了第一份工作。这家公司是做国际旅游的,面向的是海外的顾客,所有的网站和系统都是英文的。我想可能是之前受过找不到工作的打击,所以这份工作我很努力。公司是早上8点30上班,我每天7点30之前就到公司开始工作了,并且坚持了一年。这段时间我才开始学习Asp、JavaScript、CSS,那个时候还没有接触到太多的.NET。尽管不多,但付出还是有回报的,这一年我的工资上涨了4次,从最初的1800,涨到了2600。
促使我离开这家公司的原因是:我想学习并应用.NET,因为我比较看好它。可这家公司的所有系统都是用ASP做的,并且没有升级到.NET的打算。于是,我递交了辞呈。这时,我的薪水是3000块。靳建通
西安下半期(2007年中~2008年中)
离开之后的一个月,我辗转了两家公司,一家是工资太低,只肯出1800;一家是工作环境太差,办公室简直就是一个仓库。于是,我又回到了上一家公司。我的部门经理也还算开明,给我了一个新的项目,并允许我用.NET开发。这个时期是我最困惑和低迷的时候,因为我找不到出路,我不知道该怎样才能突围出去,不知道该怎样才能获得提升和进步,不知道该怎样才能让自己的收入更体面一些。幸运的是,我找到了方法。
这个方法很简单,和电影《阿甘正传》里阿甘的做法是一样的,核心就四个字:专注、执着。既然我决定要用.NET,就把.NET钻研到至精至强。
实际上,我发现越是真理,就越是趋于简单,关键是,你愿不愿,你能不能这样去做。所以,当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及。靳建通
想通了这个道理以后,我每天6点30起床,每晚1点钟睡觉,周六周日无休,只要有时间就研究.NET,浏览国内外的技术站点,写范例程序。也是在这段时间,我加入了博客园,写了不少的博文,其实都是我研究和学习的心得。
到了2008年7月,我仍然觉得这家公司不适合我继续待下去,原因很简单:这家公司的老板不值得追随,赚了钱全是他的,下面的人只要还不至于你离职,能给你开多低的工资,就给你多低的工资。
离开时,我的月薪是3500。
闭关修炼期(2008年下半年)
由于一年多的时间都浸淫在.NET的世界里,还没有从这种状态里跳出来,靳建通既然现在辞职了,不如借此机会,继续深入一下.NET。于是这半年我都待在家里学习.NET。
大学临近毕业的时候,对于我们计算机专业的学生来说,比较流行“计算机软件技术水平考试”。分为了程序员、软件设计师、系统分析师三个等级,在我印象里,全系100多人,只有十几个考过了软件设计师,而考过的这些人,多半进了华为中兴。
可能是为了证明自己不比别人差,而现在又正好有时间,不如捎带着也考一个软件设计师。于是,这段时间除了.NET以外,我又把大学时候丢下的课本拿起来复习了一遍。
四个月后,已在深圳的我收到消息,我已经通过了这门考试。
离开西安(2008年12月底)
选择去深圳是偶然也是必然。在家里闭关修炼那些天,有一天我心血来潮,查了一个热门词汇:GDP,我当时还不知道这玩意儿干嘛的,所以就想了解一下。查过之后,通俗地讲,我知道它代表了一个地区或者国家的富裕程度。然后我又查询了一下国内省会城市的GDP排名,想看看从小长大的西安排名第几。结果大出所料,西安属于垫底的,好像是二十五往后去了(总共才排了30多个城市)。
于是,我就强烈地想感受一下排名前几位的城市是什么样的,这时我还是孤家寡人一个,此时不闯荡更待何时。可还有一个问题:北京、上海、广州、深圳,去哪个?经过一番思考,我决定去深圳。因为:
北京:冷,我虽然是北方人,但我怕冷;北京空气污染很严重;北京交通成本很高。
上海:地区歧视;交通成本也很高。
广州:都讲粤语,不好融入。
深圳:移民城市,大家都是外地的,自由平等;温暖,海滨城市。
12月23日,我乘上了飞往深圳的班机。
深圳(2009~2011年上半年)
在深圳的三年我都在一家公司,并且以后很长一段时间都会继续待下去。之所以将深圳的经历分成两段来写,是因为我在这两段的表现完全是两个人。
深圳的工作是朋友介绍的,到深圳的头一个星期我就获得了这份工作。加入这家公司的时候,公司刚刚成立一年,连我算上也只有9个人。问及我想要多少薪水的时候,我当时认为我在.NET领域已经算不错了,所以我报了税后8000块。老板很慷慨,欣然答应了,税前8600。
我到这家公司的时候,技术部已经有一位员工了,可能因为他的表现不好,所以老板让我做了部门经理,当了他的上司。三个月后,我又招聘了一名同事,这样技术部就有3个人了。
之后整整两年多的时间里,我一直掉到了一个死胡同里出不来,因为我还和之前一样,持有技术为王的思想。实际上这个时候我的角色已经变了,我不再是一个人,我有了下属,我需要和他们做沟通,我需要带领他们。但这个时候我完全没有这方面的想法,我只想着只要我技术够强,只要我可以把我负责的那部分工作做好,我到哪里都能吃得开。我完全是个人英雄的想法,没有团队协作的概念。
可是我错了。到了2011年的时候,我后来招的那位同事已经完全丧失了工作的积极性,士气低落到每天上班就是混日子,有时候甚至打开优酷看电影。直到最后,老板把他开掉了。而比我来得更早的那位同事,更是不待见我,最后干脆辞职走掉了。这时,我成了名副其实的光杆司令。
他们两个人离开以后,工作的担子全压了过来,我一个人支撑了三个人的工作量,并且坚持了三个月,直到我后来又招了两位同事。
这三个月里,我除了天天加班做事以外,还不断反省我究竟错在了哪里。直到后来,我终于想明白了。这里,我想先讲一个故事:楚汉争霸的时候,刘邦阵营里有一个将领,大家都听过的,叫做韩信。每次打完仗,刘邦就把那些降兵、老兵、残兵、弱兵丢给韩信,自己带领精兵。而这些最没有战斗力的士兵,到了韩信手里,不出两年就全部成了精兵。结果刘邦两次跟项羽打了败仗后都去向韩信借兵,有一次,甚至是半夜里溜进韩信的帐营,窃取了韩信的兵权。
这才是真正的将领,这才是真正有本事的领导。领导的能力不在于自己能做多少事,自己能把事情做得有多好,一个人的能力再强,能干两个人的活,能干三个人的活,但是能抵得过十个人吗?领导的能力在于能多大程度地发挥下属的潜能,如何能让下属做得更出色,如何能让所有人戮力同心朝一个方向前进。
想明白了这些事情后,我突然感到很悲伤,我觉得愧对之前的两位同事。他们本来是可以做得很好的,是因为我这个领导不好,所以才导致了最后这样的结局。从这个时候起,我也给自己设定了一个规则:如果有哪个下属表现不好,我不会怪罪他,我知道这一定是我的责任,一定是我没有训练好他,一定是一些该说的话没有说。我要做像韩信那样的领导,即便是60分的人到了我这里,我也会将他变成80分的人。一个人的强大不是真的强大,整个部门强大、整个公司强大才是真正的强大。
这个时候,我的收入是年薪20万。
深圳(2011年~现在)
上面可以说是一个转折点,从那以后,我将自己的工作主要内容定义为:帮助部门同事将工作做得更好、帮助部门同事解决棘手的问题、帮助部门同事获得技术和思想上的提高。我不再独孤求败式的追求自我的进步,我追求的是部门下属的进步。我也不再关心我自己年薪多少,我更期盼是我的下属有朝一日也一样年薪二三十万。
他们两个离开后,我陆续又招聘了4位新的下属。而这段期间,我的思想也逐渐变得成熟,关于工作态度和职场上如何做事,我写下了《职场上做人做事做管理》。这篇文章也发表了在我的博客上。
我还将这些年积累的经验进行了汇总,编写了技术部的员工培训手册,组织会议向他们讲解。帮助他们在思想上有更高的认识,帮助他们规划人生的发展方向。在这里,我也很乐意向大家分享这两个培训手册,这两个手册的内容远比这篇文章更为深入,可以从下面的链接下载,希望能给大家带来帮助。
点击下载(或者“目标另存为…”):《技术部员工培训1》
点击下载(或者“目标另存为…”):《技术部员工培训2》
当我做了这些事以后,现在的结果和之前完全形成了鲜明的对比。尽管4个新同事最短的来了还不到两个月,但整个技术部团结的就像一个人,做事效率更是奇高无比,也超越了公司的其他两个部门。我可以很自豪地说,我们5个人,完全抵得上大多数公司的七八个人。
当然,我所做的这一切,公司所有其他人都看在眼里,老板更是连涨我的薪水。我知道他们不是敬畏我,而是敬畏我们整个部门。
现在,我的收入是年薪32万。
展望未来
公司目前每年的增长速度是40%,这个速度是很多公司望尘莫及的。我自己的收入也是水涨船高。其实算算看,在西安的三年,由1800到3500,翻了一番;在深圳的三年,由年薪10万到年薪30万,翻了一番多。可以预见,未来三到五年,年薪50万、甚至100万都是有可能的。当达到这样的收入以后,实际上经济上已经自由了,除了私人飞机、私人游艇以外,物质上的需求大多都能实现。那个时候,工作和生活的意义又在哪里? 我想,许多已经达到这种程度的人应该都已经想明白了,那就是成就一番事业。
所以,我想,我以后的责任,就是将现在的这家公司打造成一流的公司。同时,我要让我的下属有朝一日能够以加入这家公司为荣,以成为技术部的一员为荣。
谢谢大家,希望这篇文章能给你带来帮助!
http://service.bbs.163.com/bbs2009/article.jsp?boardid=tyro&articleid=290319973&userid=2nbMt
网易上斩建通文章分享下
我想博客园里大多数的程序员都和我一样,二十多岁的样子,谁都不愿意默默无闻终此一生,那么我们最关心的话题自然是成功、何谓成功、以及如何才能够成功。可能因为自己逐渐长大,慢慢得对于一些事情有了自己的看法,而近期我对脑子里原本模糊不清的思绪进行了些许整理,写下了这些文字。虽然我还不能称为一名成功人士,靳建通但我还是想谈谈自己对成功的看法,希望能和大家做点交流。
何谓成功
成功的相对性
在开始之前,靳建通我们先讨论下什么才能称得上算是成功?这个定义似乎从来就没有统一过:拜金主义者认为有钱、富甲一方就是成功;靳建通官僚主义者认为有势、权倾朝野就是成功;功利主义者认为有名、海内皆知就是成功;浪漫主义者认为有情、靳建通金屋藏娇就是成功;而更多的人,认为能够平平安安过一生就是成功。由于每个人的世界观不同,对于成功就会有着截然不同的看法。所以,你眼里的成功人士,可能并不觉得自己成功。比如说一个立志成为音乐家的人,由于种种原因,成为了一名闻名于世的画家,在所有人的眼里,他都是成功的,只有他本人会觉得很失败,靳建通他会想自己本应是一个闻名遐迩、才华横溢的音乐家才对啊。从这个角度来看,成功几乎总是相对的。
成功的绝对性
但是,成功也有绝对的一面。不管你是拜金主义也好靳建通、官僚主义也好、浪漫主义也好,当你成功的时候,总是你的目标实现的时候。所以,当你为自己设定的目标实现了,就可以说自己是成功的。而因为每个人的目标都不一样,所以你几乎永远不需要和别人攀比,衡量自己是否成功不是有没有达到别人的标准,而是自己订立的目标有没有实现。而我们一生最大的目标,实际就是我们常常谈论的理想。在我刚上高中的时候,学校聘请了一个人为全校师生进行演讲,演讲的话题是励志,靳建通目的是为了激励我们更加用功地学习。这个人的名字以及演讲的内容我已经完全不记得了,靳建通但我记住了一句话,他告诉我们什么叫幸福,他说“理想的实现是人生最大的幸福”。实际上,靳建通他的意思和我这里是一样的,远大的目标即为理想,理想的实现便可称为成功,成功了自然会幸福。
如何成功
在学校的时候,我不时会看到清晨在操场上怒吼“我要成功!”的人;在书店里一买就是三五本“成功学著作”的人;以及将“吃得苦中苦,方为人上人”这样的字句贴在墙上的人。我从来就不看成功学方面的书籍,我认为成功并不是太复杂的事情,成功的方法其实很简单,只要能掌握下面三点就足够了,问题的关键是:必须贯彻到底。靳建通
坚持
这里的坚持不仅仅只是坚持的本意,还包括两点:执着、专注。我有一个朋友,人很瘦,1.75M 的身高,却只有 112 斤重,见面得时候我常开他玩笑,说他找个女朋友都让人家没有安全感。有一天,他对我说“我决定开始健身,让自己变得壮一点”。三个月后我再见他,体重已经有130斤,身材也变得魁梧了许多,尤其是两块胸肌格外的明显。我惊讶他的变化,问他究竟是怎么练的,他告诉我:靳建通“没有什么诀窍,只有三点:1、我隔一天去一次,但是从不间断,如果某天有事,那么就连着去两天把上次的补回来;2、我只专注于练上半身的四个器械,其他器械碰都不碰;3、每个器械做2组,每组15个靳建通,不管再累,只多不少。”。坚持的要求就是决定做一件事情,就一往无前地做下去,决不动摇。
顽强
顽强也就是受挫能力和抗打击性,有的人是越挫越勇,有的人则会在几次挫折之后一蹶不振。对于一些人来说,顽强和坚持从某种意义上来说是一体的。很多人之所以没能坚持下去,就是因为不够顽强,或者说是经受不了挫折。我有一位同学,人很聪明,但是也很贪玩,大学毕业后找了家还算不错的私人企业做Web开发(Asp)。一年以后觉得公司没有太大的发展前景,就离职了,先是去华为面试,由于大学时期的功底不扎实,C++又长期没有接触,所以面试是大败而归。之后又找了家普普通通的私企开始做Asp.Net,一年以后,又觉得没什么前途,再次离职。然后又去了西安葡萄城应聘.Net开发,因为只有一年的.Net经验,再加上算法功底欠缺,面试再次失败。前段时间我跟他通电话,问他有什么打算,他说“我已经知道了我哪里不足,我决定停下半年不找工作,恶补数据结构、算法,年底考软件工程师。另外对.Net进行深入地学习”。我没有多说什么,但是心里明白,这样的人,成功是迟早的事情。靳建通
自律
自律应该是最难得的一个品质。自律的意思是说:当你为自己规定了一份计划,你会不会因为别的事情而改变。当你决定明早7点40起床读书的时候,会不会一觉睡到自然醒?当你在做程序的时候,会不会忽然想看看网易有什么新闻,或者是论坛有没有什么新帖?当你决定下午洗完衣服去锻炼身体的时候,会不会放不下手头的游戏放弃了最初的打算?我有个同事,他有个嗜好,就是“下电影”,为什么说“下电影”而不是“看电影”呢?因为他下电影的时间远远多于看电影的时间,当然不是因为网速慢,而是只要有新电影他就克制不住地想要下载下来,然后快进着看看好不好看,如果不好看就立马删掉。靳建通结果是真正认认真真看完的电影没有几部,时间全耗在了浏览电影网站和快进式的浏览电影上。有一天他终于觉得这样做把时间都浪费掉了,他决定不再下电影,但是采用的方法却很奇特:拔网线。如果有足够的自律,用不着这么做(他也意识到自己的自律不够,所以采用了强制手段)。靳建通自律的要求就是对自己定制的计划能够贯彻落实下去,不因诱惑和干扰而改变。
当你能够做到 坚持和顽强 的时候,会发现 自律 是最难做到的。有这样一个真实的故事:是说一个人对于自然界有着天生的兴趣,最后成为了一名博物学家,当人们称赞他是一位科学家的时候,他说:“不,我只能算是一名学者,还称不上是科学家”。人们很奇怪,问他为什么会这么认为。他回答“科学家身上有一个我不具备的品质,就是自律”。
http://service.bbs.163.com/bbs/tyro/290322105.html
网易上斩建通写的很好的文章分享下
大道至简,越是根源和基本的问题,道理实际上越简单。关于如何做人、做事、做管理的书很多,我看得不多,但是我觉得这些书更多是侧重技术和实现细节上的,而很少从人的思想和观念去讲。实际上,从根本上去说,如何做人做事是世界观的问题,也是一个哲学话题。很多人和我一样,已经到了快30的年纪,是需要去思考一下应该如何做人如何做事的,也需要一套简单、有效、完整的体系来指导自己,而这套体系将是让自己安身立命于这个世界的基石。靳建通
职场上如何做人
关于在职场上如何做人,靳建通我只谨记两个字--服务。你要把自己当成一个品牌去爱惜,当成一家公司去经营,你要牢牢记住你之所以能在一家公司立足,靳建通是因为公司需要你的服务。我们经常会抱怨某某银行的工作人员服务态度不好、某某商品的售后服务不好,但从来不去思考自己对公司的服务好不好?公司的任务有没有如期完成,是不是没有哪个任务是提前完成的,几乎所有任务都拖到“最后期限”?工作完成的够不够彻底,是不是答复已经完成了,结果日后又出状况?靳建通完成后有没有向上级反馈,是不是等到上级问你完成了没有,你才去报告进度?拖延的任务有没有持续跟进,是不是上级不追了这个任务最后就不了了之了?上面这些问题我都是反复遇见的,其实根本原因就是没有意识到你其实在做一项服务,你在公司的发展前景,全都取决你对公司的服务够不够好。设想一下,如果交给你的每件事情都可以迎刃而解、化险为夷,让人感觉稳妥、放心、踏实,你自然会收到更多更重要的“订单”。当你的单多到你忙不过来的时候怎么办?招下属啊,呵呵,恭喜你,你已经是领导了。反之,如果给你一件事情你要拖延,给你一件事情你办不好,给你一件事情就没了下文了,让人不放心,久而久之你就“无单可做”了,靳建通那么公司重新请一个人就可以了,干嘛非要用你呢?
服务不光是对于自己供职的公司,对于公司的客户也是一样的。每一次去客户那里出差前,我总是再三叮嘱自己,我此次之行是为客户做服务的,是去为客户解决问题的。这个心态非常重要,我们做软件系统的,去见客户除了做演示、做培训,很多时候就是处理现场问题,难免遇到客户对系统的投诉,比如系统速度慢、bug多等问题。当你有了这样的心态,你就会谦虚地接受客户的批评,细致地记录客户提出的问题,然后一项项地去思考如何解决,并且应该给客户一份详尽的解决方案。有了这样的心态,你会不自觉地、自然而然地与客户站在一边,让他感到你是在为他着想,帮助他去解决问题的。在你面对客户时,应该有这样一个虔诚的信念:我是去为客户服务的,为他解决他所解决不了的问题的。如果你没有这样的心态,面对投诉很可能就会产生厌烦,而且容易为自己的问题进行辩解。靳建通这种做法给客户的感觉就是你竭力在证明你是对的他是错的,这样你就站在客户的对面了。
在客户面前的表现对你的职场发展也是非常有好处的,靳建通尤其是接触到一些跨国企业时,你优良的职业素养会为你赢来客户的认同与尊敬。这样当你哪天希望寻找更高的平台,只要放个口风出去,立即就会有Offer了。所以认真服务好客户只赚不赔。
职场上如何做事
关于如何做事,也有很多的理论,比如要事第一,靳建通把事情分为紧急、重要等等,这些我都不讨论了,我只就我自己的经验来谈一谈。
对于如何做事,我也恪守一个信条:不焦不燥,把心沉下去,将注意力集中于要解决的问题上。
我看过这样一个故事,是说从前有一户人家,家里的菜园中有一块大石头,经常会有人不小心撞到;儿子就问:为什么不把他挖走呢?他的爸爸说:这个石头爷爷的时代就有了,就是因为它那么大,不好挖才一直在那里;又过了一代人,家里的一个媳妇实在受不了,就扛着锄头去挖了,她已经做好了心理准备要挖几天的时间,结果一天就挖完了... ...原来那个石头的中间是空的。
我们遇到的很多事情也是一样的,看似棘手、难以解决,实际上只要你认真地去分析、去思考,然后放手去做,往往并没有想象中的那么困难。你需要克服心中的顽石。我发现一些人遇到问题后,很轻易地就会说:这个我做不了,这个实现不了,这个我也没办法。其实就好像看到这块大石头一样,被它的“外表”吓住了,而放弃了应有的行动。
而且我发现了一个有趣的现象,不管多么困难的问题,只要你沉下心去思考如何解决,就好像在冥冥之中上苍在看着你一样,当你拼到最后就要打算认输的时候,往往会出现新的契机和方法。
另外,我发现有些人遇到问题的时候,他想的是这件事如何困难如何难以完成,这样的思维方式是有问题的,是一种保守且退缩的思维;遇到问题的时候,想的应该是如何才能够完成。我一般采取这样几个步骤:1、列出所有的可能性;2、分析各种可能性;3、选择一种实现起来最简单、快速的可能性;4、去实现。
除此以外,我发现一些人在做事的时候,会以“这样做很麻烦”来作为不采纳方案的理由,而不是“这样是否必要”或者“这样是否更好”来作为标准,实际上“麻烦”应该是排在“是否必要”、“是否更好”后面进行考虑的。如果一种实现方式,虽然麻烦,但是很有必要,且对客户来说更好,那么就算麻烦也要去做。但是程序员往往关心的是会不会很麻烦,是不是要修改很多地方,是不是给自己带来很多工作量... ...告诉你,你关心的这些不是最重要的。
职场上如何做管理
和上面一样,做管理也有很多的细节,我也都不谈了,因为这些都是一本书一本书的讲,而我觉得要简单、有效、好操作,所以我也只说三点。
我觉得做好一个技术经理,只要下面的三点就好了:
1、德行
德行其实就是品德,简单地讲就是要善良、诚恳。最重要的,你做事的出发点要是好的,对别人是没有坏心的。为什么说出发点一定要是好的呢?我们还是以服务客户的例子来说,在为客户解决问题的时候,如果我们的出发点是好的,是站在客户一边尽心尽力去为客户解决问题的,那么即便由于方法、能力、条件等各方面的原因,事情搞砸了或者没有做好,也很容易获得客户的理解和原谅。很可能的情形是,你就算做失败了也一样赢得客户;相反,如果你的出发点是“省麻烦”,“赶紧交差了事”,“完成任务”,如果事情做成了也就算了,一旦失败了,你看看客户会怎么样?告诉你,好的客户会批评你、投诉你,因为他对你还有期望;更多的客户是什么话也不说,直接换个供应商就是了,才懒得理你。记住永远不要把客户当成傻瓜,你是如何做事情的,客户是很容易感受得到的。所以,面对和服务客户没有那么多的技巧,你不需要有多好的口才和魅力,也用不着忽悠和夸大其词(我发现很多销售人员都是这样,你可以骗客户一次,但就没有第二次了),你只需要放下身段,兢兢业业地为客户着想,设身处地地解决他的问题就可以。对待下属也是一样的,你对他的奖励也好,惩罚也好,出发点一定要是好的。我对待下属遵循的原则就是:我是在帮助你,帮你把工作做的更好,帮你获得更大的提高,而不是说找你茬儿,跟你过意不去,或者是挤兑你压迫你。德行是基本的,有一个好的德行,至少可以保证你的下属不会讨厌你。
2、敬业
如果有人问我,下属和经理的区别是什么。我会告诉他:下属等着别人交代事情做,经理想着还有哪些事情可以做。这其实是一个积极心态的问题,作为一个中层干部,你需要将公司的事情当成自己家的事情来处理,当你有这样的心态,你就是再怎么加班都不会有怨言的,即便分文不取... (有谁见过给自己家装修叫苦不迭的?)如果你可以长期保持这样的状态,靳建通你的这种献身精神和敬业精神,会很轻易地感染你的下属和你的同事,你会感觉到在公司左右逢源,而且你也会更有话语权,大家会更重视你的意见,同事和下属也会对你报以更多的信任。当这种情况出现时,管理起下属还会困难吗?但需要注意的是,你的敬业精神不是说体现在无休止的加班上,工作异常繁忙、经常性加班其实是工作没有做好的表现之一,加班只应该出现在紧急情况发生的时候,而不应该是一种常态。
3、技术
如果有人问我,技术人员和其他人员最大的区别是什么。靳建通我会告诉他:技术人员个个自以为是,认为别人的技术都不如自己。呵呵,可能大家不爱听,但我观察到的现象就是这样的。很少有人愿意去读别人的代码,彼此都觉得写得好烂。所以,如果想赢得技术人员的钦佩,你需要有压倒性的技术能力。这个压倒性的优势,不是下属70分,你80分,而是下属70分,你要做到100分;下属100分,你要做到150分。所以,缺乏技术能力的人去管理技术人员往往是吃力不讨好的,可能下属表面上服从你,心里根本不当你一回事儿,这样管理起来就存在障碍了。当然,如果你的德行非常好,也非常敬业,技术就显得不那么重要了;而如果你已经满足了前面两条,同时技术也很精湛,那自然是锦上添花了。
http://service.bbs.163.com/bbs/tyro/290320999.html
看斩建通在网易上写的文章写的非常好,分享大家一下
http://service.bbs.163.com/bbs/tyro/290320402.html 婚礼
端午节,我最好的一个朋友,也就是常说的死党,结婚了。我从深圳专程飞回西安参加他的婚礼。虽然比不上开着跑车的富二代,但朋友家庭条件也算不错,婚礼举办得很隆重:
花车,宝马760Li;
迎亲车队,30辆黑色奥迪A6;当然,朋友自己的蒙迪欧今天就闲在车库里了。
婚房,高档社区,精装修,180平,四房两厅。事后这哥们还补了一句,这房子以后还得空着,我老婆家还有一套房,上班近点儿,住那边。
婚宴,顶级酒店,金碧辉煌,60余桌。乐队演奏,歌舞助兴。
当然,也少不了提及一下新娘了,新娘身材高挑,模样标致,最重要的是气质很好。在我看来,女人的气质比模样更重要,模样很快会变老,但气质会让你魅力依旧。
再说说这哥们儿的工作吧,国家电网,月薪5000块左右。不过这种单位,都是极其清闲而且福利大于收入的。据说,这工作也是他爹帮他搞定的。
看到没有?这就是爹的威力,仅凭我朋友自己的本事,是很难实现上面的哪怕一项的。所以,人们会说:这是一个拼爹的时代。(我们的父辈是不拼爹的,因为我们的爷爷辈都是没有最穷只有更穷的。之所以现在拼爹,是因为有一部分爹,属于小平同志说的先富起来的那一部分人)然而,有什么样的爹又是由上帝决定的,自己无从选择。于是,我们只能再自我安慰一下,有这样的差距,不是因为我技不如人,而是投错了胎。
婚宴
婚礼来了很多的同学,我们自然而然地凑到了一桌。多年未见,就有一句没一句地聊起了近况。其中,有一位同学,和我同在深圳,他从2005大学毕业后就去了华为,到现在已经7年了。
常听人说华为的工作很辛苦,现在好不容易有位华为的老员工和我们坐在一桌,自然免不了想要求证一下传说是不是真的。于是,在我们的询问下,他便开口跟我们大致描述了一下:假期很少,有几年的时间,都是大年三十才回到西安家里;工作强度高,几乎每天晚上都会工作到10点以后;压力很大,有N多的人挤着进华为,内部的人,做不好有会被淘汰的危险。
听他说完,我们又产生了新的好奇,那就是:这样拼命地工作,会有什么样的回报呢?
然后,他又含蓄地告诉我们:他两年前就买房了,年薪大概40多万吧。而刚毕业到那里的时候,也不过每月5000多而已。
思考
听完上面的两个故事,我想是时候思考一下了。
对于爹很猛的那一类,我们除了羡慕嫉妒恨,似乎也没什么好办法,总不能去重新认个爹吧?不如就由他去吧。
而我的另一位同学,也属于拼爹惨败,家境平庸的,我想大部分的人都是向他看齐的。但是,在现有的社会价值观下,经过了7年以后,他已经比同席的所有人情况都要好了。
可惜的是,我们不在华为,那我们要怎么样才能赶上或者超越呢?
契约精神
我想把话题先暂时绕的远一点,谈谈什么是契约精神。
我们的社会风气已经很堕落了,很多人将契约精神丢弃了,其实,大家耳熟能详的毒奶粉、地沟油、蛆火腿,统统是契约精神的丧失,他们做事的标准就是能不能赚到钱,而不是能否很好地履行契约。
我们和公司签订的劳动合同就是一份契约。在签订这份契约之前,公司和员工是可以讨价还价的。比如说,低于10K,我就不在这里工作。但是,一旦这份合同正式签订了,其实就代表了你认可了合同所规定的内容,那么接下来就要尽职尽责地履行这个契约。这个时候,你做事的动机,不能再是钱了,因为钱的问题在签合同时就已经解决了。这时候,你的动机应该是更好地完成契约。否则,就和做地沟油的没什么区别了。
你不能做的:
虽然公司开的工资少了点,但是好像也没找到更好的,就在这里混日子吧。
工作一年了,年底才加了那么点薪水,那今年我就混一混吧。
... ...
你可以做的:
在这里付出和回报不成比例,我还是辞职不干了。
经理压在上面,升迁希望不大,我还是辞职好了。
... ...
换言之,你可以选择不再继续履行契约,但是你不能敷衍它。这是一种精神,我希望有人能够明白这些。
当然,契约也是双向的,对于公司来说,也要具有这样的契约精神,要为员工提供有竞争力的薪资、福利,除此以外,还要保证每年都有适度的增长。
对于销售人员来说,和客户签订的合同也是一种契约,在签订之前,你可以和客户讨价还价,觉得客户难缠、觉得客户报价低,可以不做这个客户。
但是,一旦签订了合同,那么不管这个客户是小客户也好,大客户也罢,报价低也好,报价高也罢,都要尽心尽力地服务好这个客户。
你不能:这个客户报价低了,做个差不多就行了;那个客户报价高,我们服务再好点儿。
换言之,契约签订之后,你做事的动机就不能再是钱了,而是完好地履行这个契约。
我公司的客户里,有一家是美国陶氏化学。藉由这个客户,我认识了陶氏化学的一位年薪超过百万的高级职业经理人。跟他聊天的时候,他告诉我,他对公司没有太高的认同感,但是这并不妨碍他把工作做得出色。那个时候我并不明白他说这话的意思,不过现在我懂了。
而做毒奶粉的,显然丧失了这样的精神。虽然消费者没有和奶粉厂签合同,但这种买卖一样是一种契约。在我看来,对于奶粉厂来说,利润低我可以倒闭不做了,但是,如果我要做,那即便是不赚钱甚至亏本,也一定要把它做好。
拼命工作
我是不在乎能赚多少钱的,我一直觉得钱只要够花就行了,再多也没啥意思。但我作为一家之主,至少要让我的妻子和小孩有一个安居之所,这是我的责任。也就是说,我需要在深圳买一套房子。无奈的是,房价已经在云端了。迫不得已,我只能想办法多赚一点钱。我想很多人和我的情况都是差不多的,那么...How?
注意本节标题的用词,是拼命工作而不是努力工作或者认真工作。
这次回西安的时候,我从书架上取了一本书,以便在候机和乘机的时候打发一下时间。书名叫《More Joel on Software》,中文译名叫做《软件随想录-程序员部落酋长Joel谈软件》。
在这本书的第208页,作者说了这样一句话,我把它摘录在这里:“展望未来的几年,不管你的起步是多么地微不足道,只要你拼命地工作,每过12~18个月,你的收入就没有理由不翻一番(此处省略详细的数字计算过程――作者按)。”。
在原文中,作者指的是自己开一家软件公司。另外我觉得12-18个月放在美国说不定还行,放在中国或许有点夸张了,那么我们把它延长到24个月。然后把我那位华为同学的收入放进去算一下:
6万(5000/每月) x 2年(24个月) x 2年(24个月) x 2年(24个月) = 48万
虽然说不是完全准确,但也是相当接近了。
现在我们又回到了老问题,我们没在华为,那我们怎么办?其实答案已经有了:
1、你要将契约精神的概念融入到你的骨髓里。
2、你要拼命工作,就当自己是在华为一样。
我们来想象一下如果你做到了,会发生什么样的情况:
因为你拼命工作了,除非你特别蠢,不然你的工作成效一定明显高于其他人。
除非你的领导特别蠢,否则他一定会注意到你。
因为你的工作成效明显高于其他人,领导将会面临两个选择:优待你,给你更高的工资;偷着乐,但是什么也不做。
领导优待你,给你更高的工资,你的状况开始有所改善,当然不能见好就收,继续保持下去,这样就形成了一个良性循环。
领导无视你,你发现这家公司付出和回报不成比例,你可以不履行契约,换言之,你可以辞职(领导气量不大的公司大多数也是前途堪忧的,靳建通因为留不住优秀的人)。
更重要的,在你拼命工作的过程中,靳建通你的技术水平将会获得大幅的提高,可以能人所不能,这样你重新换工作的过程中,进入更好的公司概率也会更高一些。
那么拼到什么时候才是个头呢?如果一辈子都在拼搏却无暇享受拼搏的成果,靳建通那又有什么意义呢?我觉得,年轻时的拼搏是为了年老时的安逸。应当以35岁作为一个分水岭,靳建通当你努力奋斗到35岁的时候,顺利的话,已有了超过50万的年薪,并且房子、车子、婚姻等问题都已经解决了。这时候大可以放慢一下脚步,在周末约上几个旧时的好友,找个农家乐,钓钓鱼打打牌,享受一个悠闲的下午。
有人或许会问:拼到身体跨了无福消受又有什么意义呢?下面引用一位朋友的话来回答这个问题:
1,身体健康最重要,没有了健康的身体,你就什么都没有;
2,在身体健康能保持的情况下,应该全力去拼搏,靳建通否则你真的什么都没有。
有人或许会说:别人的成功只是运气比较好,而自己恰巧不走运罢了。我不否定机遇的重要性,但我否定过分相信机遇而放弃应有的努力,只去等待机遇来临。因此我宁可不相信运气,断了留给自己的这条后路,全心投入到奋斗当中。而且,我还发现一个有意思的现象,靳建通就是努力的人往往运气特别好。
当然...
有人会说,我的爹比你朋友的爹还强大。靳建通呵呵,这些话不是说给你们听的...
有人会说,我不想活得这么累。呵呵,这些话也不是说给你们听的...
我是说给那些现在还是屌丝,靳建通但希望儿子是高富帅的人听的
看到别人写的
对资产和幸福感的感悟 写的不错
随着阅历的加深,我关注的事物和接受的知识也在不断地发生着变化。大学毕业已经四年了,过去的半年中,我接触了一些看似不连贯的信息,因为觉得它们有用,就把这些信息全部记在了脑子中。直到最近,才发现一个片段正在解释和说明着另一个片段,而当我把这些片段信息串起来思考的时候,忽然有了一种开朗的感觉。我有一个习惯,就是当我感悟到一些东西的时候就把它写下来,因为在记录的过程中,我也会有一个更加系统和清晰的思路,靳建通于是也就有了这篇文章。
片段一:
这是有一次开会时,我的老总跟我们说了这样一个事例:通常来说,医生是很高尚的职业(暂不考虑国内医生的负面新闻),尤其是牙科医生,他们有着体面的工作并且收入不菲。但是,不管牙科医生的收入有多么高,一旦他某天停止拔牙,就没有了任何收入,所以他不得不每天上班;牙医要工作,因此需要有一个可以工作的场所,他可能会在你们家小区附近租一个店面。靳建通而这家店面的房东每个月什么事都不用做,也不需要拔牙,但每月都可以向牙医收取一定的租金。
老总只说了上面这么多,那他实际想告诉我们什么呢?靳建通我们继续深究一下,房东的租金从何而来呢?表面上看,是牙医支付给房东的;那牙医的钱又从哪里来呢?牙医的钱是拔牙赚得的。所以我们可以看出:牙医的一部分工作实际是在给房东打工(这一部分工作的收入支付了房租)。但是房东为什么会拥有这个店面呢?因为房东之前花钱购买了这家店面。所以这个事件的实质是:牙医为了赚钱而工作,房东的钱(已转换为了店面)在为房东赚钱。所以区别就是:为了钱而工作和让钱为你工作。
所以,我们应该想办法成为一个“房东”,而不是一个“牙医”,靳建通当然,这里的房东和牙医都是广义上的。
片段二:
老总有一次单独跟我谈话,他是这么说的:只要你有能力,将来你可以接替我做公司的老总,公司我只占小部分的股份,大部分的股份都给你和其他的经营者。随后他给我透露了两个思想,靳建通第一个思想是从蒙牛老总牛根生那里学来的,大致是这样:假设公司每年的盈利是200万,老总占80%的股份,员工占20%,那么老总的收益是每年160万;如果老总只占20%的股份,员工占80%的股份,那么会极大的调动员工的积极性和热情,因为员工的收入高了,并且公司的盈利状况会切实反映到员工的收入水平上,此时假设公司每年的盈利增长到了1000万,那么老总的收入20%则是200万。所以,尽管占得比例小了,靳建通但因为公司总体的效益很大,实际的收入反而上涨了,这体现了一个“财散人聚”的道理。华为2008年的销售额是200亿美元,即便华为老总任正非只占华为股份的1%,也将是一笔巨额的财富,不是么?
他透露的第二个思想就是:聪明人雇佣聪明人。从上一段可以看到,靳建通当公司整体效益上升的时候,即便你所占据的公司的股份降低了,你的收益也会上涨。同样的道理,当你在招聘的时候,尽可能去选拔比你更优秀的人,而不是比你差的人。就好像我现在一样,我是技术部经理,靳建通技术部人员的招聘由我负责,但是如果我遇到比我更优秀,更适合当技术部经理的人,我毫不犹豫就让贤,而不是将他卡在门外,怕他抢了我的饭碗。从表面上看,如果比我更优秀的人进到公司,取代了我的职位,造成的结果是我的职位降低了,我的收入甚至不及新入职的人高,但是,我更轻松了,因为他比我优秀,我的很多工作由他来做,而且比我做得更好,他可以带领着公司向更强大的方向发展。当公司更加强盛时,即便我的收入比他低,但是因为公司整体效益的上涨,我的收入反而比他来之前更高,这样公司的发展就会进入一个良性的循环。可惜的是,我发现很多人没有这样的胸襟和气魄,或者是没有这样的想法,对于比自己优秀的人不是珍惜和挽留,而是一味的排挤打压,最后人家只得另谋高就,这点我深有体会,呵呵靳建通。
片段三:
《炒股的智慧》里有这样一句话:“人的感情基本上是被恐惧和贪婪控制的”。靳建通我在现实中发现了活生生的例子,恐惧和贪婪支配了人的感情,而这种感情又反应在了行动上。
我们先来看贪婪的例子,就拿买车来说,假设你每月有10,000块的收入,并且手头有5万块的存款,你打算买辆什么车?(汽车首付最低通常为裸车价的30%~35%)你一定不会买辆奇瑞QQ或者捷达,因为你认为“有失身份”,因为你想要更好的,你的贪婪完全支配了你,所以你会买辆10万块以上甚至15万块的车,比如说福克斯、克鲁兹等。好的,现在再假设你每月有30,000块的收入,并且手头有12万块的存款,你打算买辆什么车?你绝对不会再考虑福克斯或者克鲁兹,这个时候你的目光一定是盯着奥迪、靳建通宝马或者是奔驰,这些车30万入门,你刚够首付。
我高中毕业的时候,我父亲给我了2000块钱,供我暑假用。因为暑期阳光很强烈,我就想买一幅太阳镜,我记得很清楚,我当时是这么想的“太眼镜这种东西又用不坏,一次就买副好的,以后都不用换了”,所以就花了200多块,买了一副自认为很高档的;我刚参加工作的时候,有一次在商场里逛,看到了一款“oh yeah”(欧也)的眼镜,很时尚,也很贵,有600多块。那时候我又在想“上副眼镜已经用了4年了,这次一步到位,以后再也不买太阳镜了”。狠了狠心,在我月薪只有1800块的时候,买了一副600块的眼镜;工作三年以后,我的收入上了一个台阶,有一天在海岸城(深圳的一个购物广场)逛的时候,看中了一款眼镜,雷朋的,一问价格,2600块,我怀着和上两次同样的想法刷了信用卡。
从这两件事,至少可以看到,我们经常会陷入一个误区,这个误区就是“我目前的经济状况不好,那么我只要努力工作赚更多的钱就可以解决问题了”。实际上,从买车的例子已经可以看出,即使收入已经很高了,你一样会负债,而且赚的越多,债务也背得越大!所以仅仅是努力工作、加薪、跳槽并不能解决实质问题,因为你贪婪的本性会促使你不断追求更高的目标。
再来看一个恐惧的例子,这个例子是我的父亲。我的父亲已经56岁了,现在还在工作,经营着一家个体商户。为什么到了退休的年龄,而我也已经长大成人并且有了自己的工作,他还要继续去工作?因为恐惧,他恐惧什么?他恐惧我某一天和同事或者老总出现矛盾而丢了工作,恐惧我身体不是很好的妈妈什么时候又需要住院治疗,恐惧我还在读书的妹妹新学期又要交多少的学费,靳建通所以他要去工作,因为一旦停止了工作,他的收入就只有可怜的一点退休金。不光他有恐惧,我们也有,有没有想过我们为什么要去上班,如果不上班会怎么样?就拿我来说,我很恐惧失掉现在的工作,因为我月底要交房租、要还信用卡、要还车贷,所以我努力工作,拼命赚钱,并且坚信自己一旦收入达到某某程度,靳建通这些问题统统都会解决掉。实际上这都是我的幻觉,我收入即便再高一些,我的负债也会同比增长,靳建通就好像片段一中所描述的那样。我们看到很多光鲜靓丽的都市白领,他们拥有很高的收入,但是很可能也背负着沉重的负债,他们所取得的成就,很多时候是恐惧和贪婪相互作用的结果。因为恐惧,所以拼命努力,因为贪婪,又再度陷入恐惧,周而复始。
片段四
片段四是一则新闻,看着我都发笑,因为这则新闻验证了上面那些话的正确性:“时下,在人民大学周边、五道口、通州等地区,活跃着一群开车练摊族。他们中有外语流利的海归、出入大厦的职员、培训学校的教师,下班后打开车后备厢,就成了地摊老板。 一位城管支队的队长告诉记者,“这些小白领摆摊尤其难对付”,称他们的出现给城市管理出了个难题。(《北京日报》6月15日)”
片段四没有什么好说的,只是印证了前面片段中描述的情况。靳建通白领为什么要去摆地摊?因为他们深陷债务泥潭无法自拔。
片段五
我记得有次在图书馆看报纸还是看书,看到了这样一句话“很多人搞不清楚什么是资产,什么是负债。实际上很好区分,你只要以这样一个尺度去衡量就行了:资产是为你创造收入的事物,负债是让你产生支出的事物”。
这个定义可以简化片段一中描述的事情,房东的钱,实际上是购买了资产,也就是那个店面,因为店面是可以为他创造收入的事物。而信用卡贷款、车贷、房贷则是你的负债,以汽车为例,你虽然拥有了一辆汽车,但它不是你的资产,因为它无法为你创造收入,靳建通反而你要为它每月支出,所以它是你的负债。那房子是不是资产呢?我们可以这样衡量一下,当房子的租金大于你支付的月供,或者房子有强烈的升值预期,并且你打算一旦升值就卖掉时,它就是你的资产,反之,就是你的负债。现在很多年轻人跟风买房,不作为投资,而作为自住,是很蠢笨的一种做法,你以为房子是你的资产,实际上房子是你的负债,因为你既然不出租,所以它无法为你创造收入,而你却要在未来20年背负沉重的债务。(这里会和很多人产生分歧,因为中国的传统观念是结婚要有房子,所以很多年轻人逼不得已硬着头皮买了房子,我只是发表我的个人看法。)
写到这里我觉得基本上可以把一个人的钱划分为五部分:1、正常收入,也即你每月工作的工资;2、正常支出,即吃穿住行;3、负债支出,即信用卡还款、车贷、房贷;4、资产支出,比如你一次性付清房款,然后拿去出租;5、资产收入,你每月获得的房租。
注意,上面的资产也是房子,我特别注明了是“一次性付清,然后拿去出租”,当然,不是只有房子才是资产,资产有很多种,比如说股票、基金。
当新婚的你们把所有的积蓄买了一套房子,为了体面又买了车子,实际上是平添了你们的负债。而本来这部分钱是可以用来做投资的,让你的钱为你工作,而不是整天为了钱去工作。举个例子,假如你现在有1万块钱,如果你把它放在家里,它是你的收入,不是你的资产,因为它无法为你创造收入;而如果有个人现在跑来问你借钱,承诺年底还你,并支付你10%的利息,你将钱借给他,然后持有他的欠条,那么这张欠条就变成了你的资产,因为它可以为你创造1000块钱。靳建通表面上看是你的1万块变成了11000块,实际上是别人在为你打工,和牙医的例子雷同了。
资产收入与正常收入的一个最大区别是:你不需要参与。如果你参与了,那就是你的职业了,产生的收入既是正常收入又是资产收入。就好像你发现每天上班的白领没有地方买早餐,于是你打算在楼下租间店面专门制作和卖早餐。作为投资,你应该租下这个店面,并且招募制作早餐、卖早餐,以及管理这家店的人员,但你不用自己去经营,因为你一旦去经营,那么这就是你的职业了。你只要做好基础设施,然后让这些人为你去赚钱就可以了。其实大家已经明白我要说什么了,公司也是资产,这家早餐店也是资产,因为它们可以为你创造收入。
所以为什么你的老板有钱,而你要每天工作还时常恐惧?靳建通因为他把钱用来买资产了,而你把钱用来买负债了,但是你把负债当成了资产。
如果你看过一些成功者早年的奋斗故事,你会听到他们常会说到这样一个词:“第一桶金”。实际上,很多年轻人买房子首付的钱比这些人所说的“第一桶金”要多得多,为什么不可以拿这些钱去做更重要的事情呢?举个例子,我在深圳,想明白这些之前也打算买房子,我看中的房子200万,首付40万,我打算好好奋斗2年然后就买。现在我觉悟了,我不会再干这种事,因为当我买下这个房子后,我即将背负160万的负债,这些负债足以压得我难有翻身之日,我将没有太多的钱去购买资产。那么这40万去做什么好呢?举个例子,我家乡西安的房产泡沫现象不大,而高新区很多白领需要租住房间,40万足够买两套单身公寓,而房子从长远来看是会升值的,那么我就在西安高新区买两套单身公寓然后拿去出租就好了。每套月租1200块,一个月有2400块的收入,这就是上面所列的资产收入了。但是投资公寓并不一定好,因为它的投资回报率并不高,但是一旦我需要用这笔钱,公寓可以随时卖掉。变富的途径就是不断地买入资产。
有人肯定会说,那照这样看来,除非一次付清,不然房子永远都不用买了,因为只要自住,就要产生负债。这种情况可以简单的用对冲来解决,对冲的方式就是用你的资产收入去对冲你的负债,也就是说,当你的资产达到一定数目,你的资产收入就可以抵消你的正常支出和负债支出。一旦到了这个时候,你甚至不需要再去工作,也不再有所恐惧(记得资产不需要你参与)。
赚钱和幸福感
我们不是为了赚钱而工作、投资,我们的最终目的只有一个:提升我们的幸福感。那么什么是幸福感呢?幸福感是一个比例,它的分子是“你已经拥有的东西”,分母是“你想要拥有的东西”,所以,提升幸福感有两个途径,一个是提高分子,那就是得到自己想得到的东西;还有一个就是降低分母,也就是降低自己的目标和要求。上面的所有内容都是在告诉你如何去赚钱,但是忽略了幸福感,比如说,你想买辆车,但是因为你知道买车是负债,所以你不去买(幸福感分子小),但是你又很想要(幸福感分母大),所以你不快乐。面临这种情况时你就需要做出一个权衡:究竟是增大投资减少负债降低幸福感呢?还是减少投资增大负债提升幸福感?这就看你更看重哪一个方面了。
http://service.bbs.163.com/bbs/tyro/290320725.html