第一篇:什么是好的程序
什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快? 我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对 于速度快,只要编得多也就熟能生巧了。我认为好的程序员应该有以下几方面的素质:
1、有专研精神,勤学善问、举一反三。
2、积极向上的态度,有创造性思维。
3、与人积极交流沟通的能力,有团队精神。
4、谦虚谨慎,戒骄戒燥。
5、写出的代码质量高。包括:代码的稳定、易读、规范、易维护、专业。
这些都是程序员的修养,这里我想谈谈“编程修养”,也就是上述中的第5点。我觉得,如 果我要了解一个作者,我会看他所写的小说,如果我要了解一个画家,我会看他所画的图 画,如果我要了解一个工人,我会看他所做出来的产品,同样,如果我要了解一个程序员,我想首先我最想看的就是他的程序代码,程序代码可以看出一个程序员的素质和修养,程序就像一个作品,有素质有修养的程序员的作品必然是一图精美的图画,一首美妙的歌 曲,一本赏心悦目的小说。
我看过许多程序,没有注释,没有缩进,胡乱命名的变量名,等等,等等,我把这种人统 称为没有修养的程序,这种程序员,是在做创造性的工作吗?不,完全就是在搞破坏,他 们与其说是在编程,还不如说是在对源程序进行“加密”,这种程序员,见一个就应该开 除一个,因为他编的程序所创造的价值,远远小于需要在上面进行维护的价值。
程序员应该有程序员的修养,那怕再累,再没时间,也要对自己的程序负责。我宁可要那 种动作慢,技术一般,但有良好的写程序风格的程序员,也不要那种技术强、动作快的“ 搞破坏”的程序员。有句话叫“字如其人”,我想从程序上也能看出一个程序员的优劣。因为,程序是程序员的作品,作品的好坏直截关系到程序员的声誉和素质。而“修养”好 的程序员一定能做出好的程序和软件。
有个成语叫“独具匠心”,意思是做什么都要做得很专业,很用心,如果你要做一个“匠 ”,也就是造诣高深的人,那么,从一件很简单的作品上就能看出你有没有“匠”的特性,我觉得做一个程序员不难,但要做一个“程序匠”就不简单了。编程序很简单,但编出 有质量的程序就难了。
我在这里不讨论过深的技术,我只想在一些容易让人忽略的东西上说一说,虽然这些东西 可能很细微,但如果你不注意这些细微之处的话,那么他将会极大的影响你的整个软件质 量,以及整个软件程的实施,所谓“千里之堤,毁于蚁穴”。
“细微之处见真功”,真正能体现一个程序的功底恰恰在这些细微之处。
这就是程序员的——编程修养。我总结了在用C/C++语言(主要是C语言)进行程序写作上 的三十二个“修养”,通过这些,你可以写出质量高的程序,同时也会让看你程序的人渍 渍称道,那些看过你程序的人一定会说:“这个人的编程修养不错”。
01、版权和版本
02、缩进、空格、换行、空行、对齐
03、程序注释
04、函数的[in][out]参数
05、对系统调用的返回进行判断
06、if 语句对出错的处理
07、头文件中的#ifndef
08、在堆上分配内存
09、变量的初始化
10、h和c文件的使用
11、出错信息的处理
12、常用函数和循环语句中的被计算量
13、函数名和变量名的命名
14、函数的传值和传指针
15、修改别人程序的修养
16、把相同或近乎相同的代码形成函数和宏
17、表达式中的括号
18、函数参数中的const
19、函数的参数个数
20、函数的返回类型,不要省略
21、goto语句的使用
22、宏的使用
23、static的使用
24、函数中的代码尺寸
25、typedef的使用
26、为常量声明宏
27、不要为宏定义加分号
28、||和&&的语句执行顺序
29、尽量用for而不是while做循环
30、请sizeof类型而不是变量
31、不要忽略Warning
32、书写Debug版和Release版的程序
1、版权和版本
好的程序员会给自己的每个函数,每个文件,都注上版权和版本。对于C/C++的文件,文件头应该有类似这样的注释:
/************************************************************************ * * 文件名:network.c * * 文件描述:网络通讯函数集 * * 创建人: Hao Chen, 2003年2月3日 * * 版本号:1.0 * * 修改记录: * ************************************************************************/ 而对于函数来说,应该也有类似于这样的注释:
/*================== * * 函 数 名:XXX * * 参
数: *
* type name [IN] : descripts * * 功能描述: *
*..............* * 返 回 值:成功TRUE,失败FALSE * * 抛出异常: * * 作
者:ChenHao 2003/4/2 * ==================*/ 这样的描述可以让人对一个函数,一个文件有一个总体的认识,对代码的易读性和易维护 性有很大的好处。这是好的作品产生的开始。
2、缩进、空格、换行、空行、对齐
i)缩进应该是每个程序都会做的,只要学程序过程序就应该知道这个,但是我仍然看过不 缩进的程序,或是乱缩进的程序,如果你的公司还有写程序不缩进的程序员,请毫不犹豫 的开除他吧,并以破坏源码罪起诉他,还要他赔偿读过他程序的人的精神损失费。缩进,这是不成文规矩,我再重提一下吧,一个缩进一般是一个TAB键或是4个空格。(最好用TA B键)
ii)空格。空格能给程序代来什么损失吗?没有,有效的利用空格可以让你的程序读进来 更加赏心悦目。而不一堆表达式挤在一起。看看下面的代码: ha=(ha*128+*key++)%tabPtr->size;
ha =(ha * 128 + *key++)% tabPtr->size;
有空格和没有空格的感觉不一样吧。一般来说,语句中要在各个操作符间加空格,函 数调用时,要以各个参数间加空格。如下面这种加空格的和不加的: if((hProc=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid))==NULL){ } if((hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid))== NULL){ } iii)换行。不要把语句都写在一行上,这样很不好。如:
for(i=0;i
我拷,这种即无空格,又无换行的程序在写什么啊?加上空格和换行吧。
for(i=0;i if((a < '0' || a > '9')&& (a < 'a' || a > 'z')){ break; } } 好多了吧?有时候,函数参数多的时候,最好也换行,如: CreateProcess(NULL,cmdbuf,NULL,NULL,bInhH,dwCrtFlags,envbuf,NULL,&siStartInfo,&prInfo); 条件语句也应该在必要时换行: if(ch >= '0' || ch <= '9' || ch >= 'a' || ch <= 'z' || ch >= 'A' || ch <= 'Z')iv)空行。不要不加空行,空行可以区分不同的程序块,程序块间,最好加上空行。如: HANDLE hProcess; PROCESS_T procInfo; /* open the process handle */ if((hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid))== NULL) { return LSE_MISC_SYS; } memset(&procInfo, 0, sizeof(procInfo)); procInfo.idProc = pid; procInfo.hdProc = hProcess; procInfo.misc |= MSCAVA_PROC; return(0);v)对齐。用TAB键对齐你的一些变量的声明或注释,一样会让你的程序好看一些。如: typedef struct _pt_man_t_ { int numProc;/* Number of processes */ int maxProc;/* Max Number of processes */ int numEvnt;/* Number of events */ int maxEvnt;/* Max Number of events */ HANDLE* pHndEvnt;/* Array of events */ DWORD timeout;/* Time out interval */ HANDLE hPipe;/* Namedpipe */ TCHAR usr[MAXUSR];/* User name of the process */ int numMsg;/* Number of Message */ int Msg[MAXMSG];/* Space for intro process communicate */ } PT_MAN_T;怎么样?感觉不错吧。 这里主要讲述了如果写出让人赏心悦目的代码,好看的代码会让人的心情愉快,读起代码 也就不累,工整、整洁的程序代码,通常更让人欢迎,也更让人称道。现在的硬盘空间这 么大,不要让你的代码挤在一起,这样它们会抱怨你虐待它们的。好了,用“缩进、空格、换行、空行、对齐”装饰你的代码吧,让他们从没有秩序的土匪中变成一排排整齐有秩 序的正规部队吧。 3、程序注释 养成写程序注释的习惯,这是每个程序员所必须要做的工作。我看过那种几千行,却居然 没有一行注释的程序。这就如同在公路上驾车却没有路标一样。用不了多久,连自己都不 知道自己的意图了,还要花上几倍的时间才看明白,这种浪费别人和自己的时间的人,是 最为可耻的人。 是的,你也许会说,你会写注释,真的吗?注释的书写也能看出一个程序员的功底。一般 来说你需要至少写这些地方的注释:文件的注释、函数的注释、变量的注释、算法的注释、功能块的程序注释。主要就是记录你这段程序是干什么的?你的意图是什么?你这个变 量是用来做什么的?等等。 不要以为注释好写,有一些算法是很难说或写出来的,只能意会,我承认有这种情况的时 候,但你也要写出来,正好可以训练一下自己的表达能力。而表达能力正是那种闷头搞技 术的技术人员最缺的,你有再高的技术,如果你表达能力不行,你的技术将不能得到充分 的发挥。因为,这是一个团队的时代。好了,说几个注释的技术细节: i)对于行注释(“//”)比块注释(“/* */”)要好的说法,我并不是很同意。因为一 些老版本的C编译器并不支持行注释,所以为了你的程序的移植性,请你还是尽量使用块注 释。 ii)你也许会为块注释的不能嵌套而不爽,那么你可以用预编译来完成这个功能。使用“ #if 0”和“#endif”括起来的代码,将不被编译,而且还可以嵌套。 4、函数的[in][out]参数 我经常看到这样的程序: FuncName(char* str){ int len = strlen(str); .....} char* GetUserName(struct user* pUser){ return pUser->name;} 不!请不要这样做。 你应该先判断一下传进来的那个指针是不是为空。如果传进来的指针为空的话,那么,你 的一个大的系统就会因为这一个小的函数而崩溃。一种更好的技术是使用断言(assert),这里我就不多说这些技术细节了。当然,如果是在C++中,引用要比指针好得多,但你也 需要对各个参数进行检查。 写有参数的函数时,首要工作,就是要对传进来的所有参数进行合法性检查。而对于传出 的参数也应该进行检查,这个动作当然应该在函数的外部,也就是说,调用完一个函数后,应该对其传出的值进行检查。 当然,检查会浪费一点时间,但为了整个系统不至于出现“非法操作”或是“Core Dump” 的系统级的错误,多花这点时间还是很值得的。 5、对系统调用的返回进行判断 继续上一条,对于一些系统调用,比如打开文件,我经常看到,许多程序员对fopen返回的 指针不做任何判断,就直接使用了。然后发现文件的内容怎么也读出不,或是怎么也写不 进去。还是判断一下吧: fp = fopen(“log.txt”, “a”); if(fp == NULL){ printf(“Error: open file errorn”); return FALSE; } 其它还有许多啦,比如:socket返回的socket号,malloc返回的内存。请对这些系统调用 返回的东西进行判断。 6、if 语句对出错的处理 我看见你说了,这有什么好说的。还是先看一段程序代码吧。 if(ch >= '0' && ch <= '9'){ /* 正常处理代码 */ }else{ /* 输出错误信息 */ printf(“error......n”); return(FALSE); } 这种结构很不好,特别是如果“正常处理代码”很长时,对于这种情况,最好不要用else。先判断错误,如: if(ch < '0' || ch > '9'){ /* 输出错误信息 */ printf(“error......n”); return(FALSE); } /* 正常处理代码 */ ......这样的结构,不是很清楚吗?突出了错误的条件,让别人在使用你的函数的时候,第一眼 就能看到不合法的条件,于是就会更下意识的避免。 7、头文件中的#ifndef 千万不要忽略了头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两 个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: #ifndef <标识> #define <标识> ............#endif <标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划 线,如:stdio.h #ifndef _STDIO_H_ #define _STDIO_H_ ......#endif(BTW:预编译有多很有用的功能。你会用预编译吗?) 8、在堆上分配内存 可能许多人对内存分配上的“栈 stack”和“堆 heap”还不是很明白。包括一些科班出身 的人也不明白这两个概念。我不想过多的说这两个东西。简单的来讲,stack上分配的内存 系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里。stack一般是静态分配内存,heap上一般是动态分配内存。 由malloc系统函数分配的内存就是从堆上分配内存。从堆上分配的内存一定要自己释放。用free释放,不然就是术语——“内存泄露”(或是“内存漏洞”)—— Memory Leak。于是,系统的可分配内存会随malloc越来越少,直到系统崩溃。还是来看看“栈内存”和 “堆内存”的差别吧。 栈内存分配 char* AllocStrFromStack() { char pstr[100]; return pstr; } 堆内存分配 char* AllocStrFromHeap(int len) { char *pstr; if(len <= 0)return NULL; return(char*)malloc(len); } 对于第一个函数,那块pstr的内存在函数返回时就被系统释放了。于是所返回的char*什么 也没有。而对于第二个函数,是从堆上分配内存,所以哪怕是程序退出时,也不释放,所 以第二个函数的返回的内存没有问题,可以被使用。但一定要调用free释放,不然就是Me mory Leak! 在堆上分配内存很容易造成内存泄漏,这是C/C++的最大的“克星”,如果你的程序要稳定,那么就不要出现Memory Leak。所以,我还是要在这里千叮咛万嘱付,在使用malloc系统 函数(包括calloc,realloc)时千万要小心。 记得有一个UNIX上的服务应用程序,大约有几百的C文件编译而成,运行测试良好,等使用 时,每隔三个月系统就是down一次,搞得许多人焦头烂额,查不出问题所在。只好,每隔 两个月人工手动重启系统一次。出现这种问题就是Memery Leak在做怪了,在C/C++中这种 问题总是会发生,所以你一定要小心。一个Rational的检测工作——Purify,可以帮你测 试你的程序有没有内存泄漏。 我保证,做过许多C/C++的工程的程序员,都会对malloc或是new有些感冒。当你什么时候 在使用malloc和new时,有一种轻度的紧张和惶恐的感觉时,你就具备了这方面的修养了。对于malloc和free的操作有以下规则: 1)配对使用,有一个malloc,就应该有一个free。(C++中对应为new和delete) 2)尽量在同一层上使用,不要像上面那种,malloc在函数中,而free在函数外。最好在同 一调用层上使用这两个函数。 3)malloc分配的内存一定要初始化。free后的指针一定要设置为NULL。 注:虽然现在的操作系统(如:UNIX和Win2k/NT)都有进程内存跟踪机制,也就是如果你 有没有释放的内存,操作系统会帮你释放。但操作系统依然不会释放你程序中所有产生了 Memory Leak的内存,所以,最好还是你自己来做这个工作。(有的时候不知不觉就出现M emory Leak了,而且在几百万行的代码中找无异于海底捞针,Rational有一个工具叫Puri fy,可能很好的帮你检查程序中的Memory Leak) 9、变量的初始化 接上一条,变量一定要被初始化再使用。C/C++编译器在这个方面不会像JAVA一样帮你初始 化,这一切都需要你自己来,如果你使用了没有初始化的变量,结果未知。好的程序员从 来都会在使用变量前初始化变量的。如: 1)对malloc分配的内存进行memset清零操作。(可以使用calloc分配一块全零的内存) 2)对一些栈上分配的struct或数组进行初始化。(最好也是清零) 不过话又说回来了,初始化也会造成系统运行时间有一定的开销,所以,也不要对所有的 变量做初始化,这个也没有意义。好的程序员知道哪些变量需要初始化,哪些则不需要。如:以下这种情况,则不需要。 char *pstr;/* 一个字符串 */ pstr =(char*)malloc(50); if(pstr == NULL)exit(0); strcpy(pstr, “Hello Wrold”);但如果是下面一种情况,最好进行内存初始化。(指针是一个危险的东西,一定要初始化) char **pstr;/* 一个字符串数组 */ pstr =(char**)malloc(50); if(pstr == NULL)exit(0); /* 让数组中的指针都指向NULL */ memset(pstr, 0, 50*sizeof(char*)); 而对于全局变量,和静态变量,一定要声明时就初始化。因为你不知道它第一次会在哪里 被使用。所以使用前初始这些变量是比较不现实的,一定要在声明时就初始化它们。如: Links *plnk = NULL;/* 对于全局变量plnk初始化为NULL */ 10、h和c文件的使用 H文件和C文件怎么用呢?一般来说,H文件中是declare(声明),C文件中是define(定义)。因为C文件要编译成库文件(Windows下是.obj/.lib,UNIX下是.o/.a),如果别人要 使用你的函数,那么就要引用你的H文件,所以,H文件中一般是变量、宏定义、枚举、结 构和函数接口的声明,就像一个接口说明文件一样。而C文件则是实现细节。 H文件和C文件最大的用处就是声明和实现分开。这个特性应该是公认的了,但我仍然看到 有些人喜欢把函数写在H文件中,这种习惯很不好。(如果是C++话,对于其模板函数,在 VC中只有把实现和声明都写在一个文件中,因为VC不支持export关键字)。而且,如果在 H文件中写上函数的实现,你还得在makefile中把头文件的依赖关系也加上去,这个就会让 你的makefile很不规范。 最后,有一个最需要注意的地方就是:带初始化的全局变量不要放在H文件中!例如有一个处理错误信息的结构: char* errmsg[] = { /* 0 */ “No error”,/* 1 */ “Open file error”,/* 2 */ “Failed in sending/receiving a message”,/* 3 */ “Bad arguments”,/* 4 */ “Memeroy is not enough”,/* 5 */ “Service is down;try later”,/* 6 */ “Unknow information”,/* 7 */ “A socket operation has failed”,/* 8 */ “Permission denied”,/* 9 */ “Bad configuration file format”,/* 10 */ “Communication time out”,............};请不要把这个东西放在头文件中,因为如果你的这个头文件被5个函数库(.lib或是.a)所 用到,于是他就被链接在这5个.lib或.a中,而如果你的一个程序用到了这5个函数库中的 函数,并且这些函数都用到了这个出错信息数组。那么这份信息将有5个副本存在于你的执 行文件中。如果你的这个errmsg很大的话,而且你用到的函数库更多的话,你的执行文件 也会变得很大。 正确的写法应该把它写到C文件中,然后在各个需要用到errmsg的C文件头上加上 extern char* errmsg[];的外部声明,让编译器在链接时才去管他,这样一来,就只会有一个er rmsg存在于执行文件中,而且,这样做很利于封装。 我曾遇到过的最疯狂的事,就是在我的目标文件中,这个errmsg一共有112个副本,执行文 件有8M左右。当我把errmsg放到C文件中,并为一千多个C文件加上了extern的声明后,所 有的函数库文件尺寸都下降了20%左右,而我的执行文件只有5M了。一下子少了3M啊。[ 备注 ] 有朋友对我说,这个只是一个特例,因为,如果errmsg在执行文件中存在多个副本时,可 以加快程序运行速度,理由是errmsg的多个复本会让系统的内存换页降低,达到效率提升。像我们这里所说的errmsg只有一份,当某函数要用errmsg时,如果内存隔得比较远,会 产生换页,反而效率不高。 这个说法不无道理,但是一般而言,对于一个比较大的系统,errmsg是比较大的,所以产 生副本导致执行文件尺寸变大,不仅增加了系统装载时间,也会让一个程序在内存中占更 多的页面。而对于errmsg这样数据,一般来说,在系统运行时不会经常用到,所以还是产 生的内存换页也就不算频繁。权衡之下,还是只有一份errmsg的效率高。即便是像logmsg 这样频繁使用的的数据,操作系统的内存调度算法会让这样的频繁使用的页面常驻于内存,所以也就不会出现内存换页问题了。 、你有“同理心”吗? 什么叫“同理心”?说复杂点儿,同理心就是站在当事人的角度和位置上,客观地理解当事人的内心感受,且把这种理解传达给当事人的一种沟通交流方式。 说简单点儿,同理心就是“己所不欲,勿施于人”。将心比心,也就是设身处地去感受、去体谅他人。说白了,同理心就是“情商”。 具体点说:同理心就是,领导交办一项工作,你要读懂他的目的、看清他的用意。我经常遇到这样的情况:给团队成员安排工作时,一再询问“我说明白了吗”“有没有问题”,再三确认后,提交上来的东西仍然答非所问。所以我在接受任务时,总会向领导确认:你想要的是什么?你的目的是什么?了解这个以后,就可以站在他的角度,有效的帮他解决问题。 同理心就是,在激励员工时,点准他们的“兴奋点”,不揭“伤疤”。每个人都有认真工作的理由,家庭富裕的为了证明自己的能力,家境贫寒的为了改善自己的生活,吊儿郎当的爱面子怕丢工作。了解不同人的不同心理需求,才能调动大家的积极性。若是不问青红皂白,拿着鞭子大喊加油,只能是徒劳无功。 同理心就是,在与他人合作时,了解对方的需求和心理,潜移默化的说服对方,双方为了同一个目标而努力。想用强势压服别人,通常不好使。 二、听话,出活 7年前,我和北京交通台的潘久阳聊天,他说“什么叫好员工啊,好员工特简单,就四个字:听话、出活”。这话我一直记着,这是至理名言。 什么叫“听话”?有句老话叫“干活不由东,累死也无功”,谁是“东”啊?你的直属领导就是“东”,大部分时候,听他的话准没错儿。 有朋友说:我有能力,我比领导水平高,我就不听领导的!咱先不说到底谁水平高——既然他能当你领导,肯定有比你强的地方——咱就说水平和能力这事儿,什么叫“有能力”啊?领导用你,你就有能力。不用你,甭管您有再大的能力,都是白费。 根据我的经验,一般来说,领导都比你水平高,起码在一点上是这样:他比你信息更全面、判断的更准确。因为领导更容易接触到更高层,更了解更高层的意图,他知道的你不知道,你在自己的角度上认为“这么做对”,但领导在更高的层面,并不一定这么看。 还有朋友说我领导就是瞎指挥,明摆着不对,我干嘛要听他的?这是另外一个问题,咱们最后一条会谈到,如果你觉得现在的环境无法进步,就可以考虑离职了。 什么叫“出活”?就是领导给你的工作,你得按时完成并且汇报总结。如果这个工作要持续较长时间,那么你需要阶段性的给领导反馈。我们经常犯一个错误,领导安排的工作,他不问你也不说,黑不提白不提这事儿就算过去了。 过去了?哪儿那么容易啊!领导都记着呢,你等他问你的时候——“诶小陈,上次安排你做的那事儿怎么样了?”——他就已经在心里给你写上了标签:“不靠谱”。 一个“不靠谱”需要用十个“靠谱”来扭转,两个“不靠谱”就很难转变印象,三个“不靠谱”你就没有机会了。 “出活”还有一层含义,就是“超预期”。这个咱们在下一点聊。 三、要想人前显贵,必须背地里受罪 在公司里上班,大家的智商都差不多,谁也不比谁强多少,拼的都是努力和用心的程度。你下功夫了,就比别人做得好。哦,本来就不比别人聪明,别人下班你也下班、别人玩儿你也玩儿、别人搞对象你也泡马子,你凭什么比别人干得好? “要想人前显贵,必须背地里受罪”的道理并不难懂。就是真到受苦的时候就含糊了,有的人会说,我年纪轻轻的为什么不好好享受生活啊?这种想法很普遍,这本是一个价值观的问题,没什么可说的,一个人想怎么生活都对。但是有一些朋友是在追求理想和享受生活中纠结的,和这些朋友,是可以聊的。 马云曾经说过:我们追求的应是人生的大平衡,而不是一时一日的小平衡(大意如此)。新东方也有一句话说:怕吃苦吃苦一辈子,不怕苦吃苦半辈子。两句话大意相同,值得深思。 一件工作,你用心想了做了,领导一看就知道,你想糊弄,也是一看就知道,这个没侥幸。领导在判断这个问题的时候,标准很简单:我想到的,你都没想到,肯定没用心;我想到的,你想到了一部分,用心不够;我没想到的,你想到了,这是用心了——这就是“超预期”。如果你每次都能给你的老板一个超预期的结果,那你无疑就是一个好员工。 四、能忍多大事儿,就能成多大事儿 讲一个笑话:在电梯里,领导放了个屁,回头问秘书,谁放的?秘书忙答道:“不是我!”领导不说话,这事儿过去了。不久,秘书被调离,领导在谈起调离原因时说道:“屁大的委屈都受不了,还能做的了啥?” 在工作上想受到领导的赏识和重用,除了要有过硬的工作能力外,更重要的,要有足够的涵养(抗压力或者回血能力)。能受多大委屈,才能成多大事儿,这是一定的。为了考察你的“抗压力”,领导有时会故意试你,你可一定要经得住考验。 我自己也经历过类似的事情:有一天加班,晚上2点钟到家,收到老板的一封邮件,批评我工作不到位。我收到邮件后就很崩溃,还很委屈。于是当即奋笔疾书,回邮件!解释我是如何工作的,我做的如何有道理,我做的如何有效果……写了2000多字。 写完了,我好像冷静了一些,我就琢磨一个事儿:如果我是老板,我对一个员工工作不满意,于是我给他写了封邮件批评他,我想看到的是他洋洋洒洒的解释和辩解吗?显然不是啊。然后我就突然明白了,于是我把那2000多字都删了,简单回复了一句话,大意是:我会反思工作的问题,然后尽快整改。 两个月后我晋升了。在我的晋升仪式上,我对我老板说起这件事,他对我说,我知道你很委屈,我就是想看看你在面对委屈和压力时,会有怎样的反应,这体现了一个人的成熟程度。 多说一句,人们会感叹“钱难赚,屎难”,人人都想“站着把钱赚了”,我更相信他跪着的时候你没看见。我们总是强调“尊严”,比尔盖茨说过一句话:“没有人会在乎你的尊严,你只能在自我感觉良好之前取得尽可能多成就。” 对于比尔盖茨这样的天才姑且如此,况且我这样资质平庸的碌碌之辈呢? 五、总躲着领导,你就危险了 不少人躲着领导,尽量少跟领导说话、绕着领导走。因为跟领导近了事儿就多,不跟领导多接触,事儿少,多清闲。这是“一叶障目,不见泰山”。 如果你想在工作上取得一些成绩,我建议还是应该主动的多和领导沟通。领导在平时开会时说的多是大面儿上的话,真话、有用的话、有价值的话不一定说。这并不是他不想说,而是没机会说。 有心的员工会随时抽时间和领导沟通、增加私人交流的机会:一起吃饭、一起抽烟、一起上下班、甚至一起打球K歌……通过这样的机会,你可以了解领导对于你的看法、对于工作的观点,这些都有益于你调整自己的工作的方式。 有朋友担心这样做会引起领导反感,其实完全不会,领导们多是孤独的,如果他发现有一个员工虚心向他请教、积极分享工作的思考,他是非常高兴的。 有朋友说,我不想那么累,我就想混混日子。即便是这样,你最好也主动和领导沟通、主动汇报。你追着他,你是主动的一方,其实你不累;等到他追你的时候,你就被动了,最终就累死了。 老罗曾经讲过一个故事,说你进入单位,见到老板就低头过去、不理他,他当然也不理你。等到年终考核、或者裁员的时候,老板隐约记得有你这么个人,但不知道你的名字、更不知道你做了什么。老板会想:这是你的错,不是我的错。不开除你开除谁? 老板也是人,大家用人类的方式沟通,一切会变得简单很多。 六、帮助别人千万别吝啬 马云曾经说,成功就是成就自己帮助别人。这话没错。 如果你在一家公司工作,你发现你的工作不用任何人协助就能自己独立完成,那你多半是个打杂的。相反,你的工作需要越多人协作,就越复杂、越高级。在实际工作中我发现,我处在一个协作关系网中,如果没有别人的帮助,我就无法工作下去。 当你正在忙于某项工作时,有同事来向你“求助”,很多时候我们会很直接、甚至粗暴的拒绝,殊不知这样做正在给你今后的工作种下麻烦的种子。风水轮流转,在一家公司里,大家的工作互相交叉的几率很大,说不定你会用上谁,这些人脉关系需要平时去维护。今天你帮助了人家,说不定明天对方就会成为你的救命稻草,这非常可能。 有一天我正在疲于应付一个项目总结,这时有个其他部门的同事来找我聊合作的事儿,我并不认识他,我耐心的和他介绍了情况,并且真的形成了几次愉快的合作,半年后,我的晋升答辩会上,我发现他是我的答辩委员…… 七、目标再目标,量化再量化 没有目标的,都不叫工作;没有量化的,都不叫目标。 在接受一项工作时,先问目标是什么;在布置一项工作时,先交代目标是什么。这个不说清楚,都是扯淡。 不想成为蒙着眼睛拉磨的驴?那么除了清楚的知道自己的目标外,还得知道你的部门、你的公司的目标,最关键的,你需要知道,你的工作在总体目标中处在什么地位、扮演什么角色。如果你发现,你工作的目标和总体目标关系很小、甚至没有关系,那么你就很容易被拿掉。 辞退员工,或给员工绩效打分“不合格”是很令人头疼的,但其实这事儿并不难。关键就在于事先和每个员工一起制定量化的工作目标,并且随时提醒员工,他的工作是否达到了要求。没有达到量化指标,辞退或“不合格”是令所当然事儿,在数据面前,再矫情的人也无话可说。相反,如果谈感觉、聊希望,这事儿就没法办了。 八、找到解决问题的办法是我的义务 领导安排的工作,不能说“我做不了”、“我做不到”。 公司请我们来工作,是为了解决问题的,如果不能解决问题,我们就没有价值。工作推进中遇到困难,无法继续进行,这是很正常的事儿,我们需要做的是主动寻找答案和办法,哪怕你的办法不妥,那么就去问,但无论如何不能对你的领导说,我不会。 前天,我在公司里听见隔壁团队的领导安排同事定一个会议室,有公司工作经验的人都知道,会议室是很难订到的,弄不好还需要“托关系,走后门”。这个小同学可能是没有订到,于是和他的领导说“我没订到”,他的领导直接就急了,说:“那怎么办?需要我来订吗?” 这位领导发火是有道理的,这位小同学在发现自己订不到会议室后,应该做的是自己想办法解决问题——最简单的就是向老同事咨询。 解决问题的能力是员工最关键的能力,没有之一。在工作中遇到困难特别正常,在这时,我们有一项义务,就是找到解决问题的办法。 九、尽量不说“不是我,我没有” 绝大多数人在面对批评的时候,本能反应都是推卸责任,此时的口头禅就是“不是我”、“没有我”。我总觉得,很多时候,越成熟的人,就越少用本能反应面对问题,因为他们有更强的自控力。 尽量不说“不是我”、“没有我”这样的话,因为这些话毫无作用,领导听惯了这样的推卸之词,丝毫不会为之所动。此时如果能够主动承担责任,反而体现了一种担当。即便真是被冤枉了,当场辩解往往也不是最明智的选择,可以先保持沉默,私下找机会和领导进行沟通。这个详见第三条。 十、“言多必失”死得惨 在公司里,少说闲话,不说是非话,不做是非人。 你就相信一点:你说的每句话,你的老板都会知道。好话可能不一定,坏话则是一定的。 还是做个正直的人吧,这样最简单,也受益最大。正直人的原则是:批评当面说,赞美背后讲。 十一、知道什么时候离开 好多同事和朋友和我聊过离职的话题,我对朋友们的建议是,如果你因为觉得工作不爽,那就别离职,因为甭管到哪里,都会不爽:老板不喜欢、同事不可爱、工作太劳累、关系太复杂……我以我在多家大公司工作的经历担保:几乎所有我工作过的公司,令人不爽的事儿都是一样的。 那么什么时候离开呢?我想,有两种情况: 1、在这家公司,你已经没有上升的空间、无法学习到更多的东西了; 2、在这家公司,你已学到足够的知识,可以在新领域或新平台上一展身手了。 什么是好课 来源: 余敏君 时间:09-06-09 人气:106 1什 么是好课 读 《小学数学名师教学艺术》有感 《小学数学名师教学艺术》分别汇编了8位小学数学特级教师的教学艺术,包括对其课堂教学艺术的解读、对其经典课例的评析、他们自己对课堂教学的感悟等。 拜读了钱守旺老师的“感受数学课堂魅力”,给我们一线教师解答了什么是 “好课’的问题。 当新课程由传统的知识性教学转向现代的人文性教学之后,一节成功的课该有些什么特 点?钱守旺老师的回答是:“一节成功的数学课应该具备‘新’、‘趣’、‘活’、‘实’、‘美’”的特点。 关于“新”,钱守旺老师分析其内涵是“不步人后尘,不因循守旧,不照搬别人的教案,不复制别人的思路,努力把课讲出新意,在某些方面有所突破,能引起同行产生学习妨效的欲望”,并进而阐释课堂教学中求新的几种途径:理念新——即体现先进的教育教学思想,思路新——即体现构思新颖、实用高效的教学思路,手段新——即重视现代化教学手段的合理利用。 关于“趣”,钱守旺老师指出:“趣——就是激发学生的学习兴趣。”并从方法论意义提出 操作策略,“导入新课时引发学习兴趣”、“讲授新课时保持学习兴趣”、“巩固练习时提高学习兴趣”。 关于“活”,钱守旺老师有深入的认识:“‘活’表面上是课程内容活、经验活、情境活,实质上是师生双方的知识活、经验活、智力活、能力活、情感活、精神活、生命活。‘活’意味着师生双方潜能的开发、精神的唤醒、内心的敞亮、个性的张显和主体性的弘扬,意味着师生双方经验的共享、视界的融合与精神的感召。”并进而指出课堂上的“活”表现在“教学方法灵活”、“把教材用活”、“把学生教活”。 关于“实”,钱守旺老师指出:“就是教学中要讲求实效,不走过场,不摆花架子„„即努力做到教学内容充实,课堂训练扎实,教学目标落实。” 关于“美”,钱守旺老师论述了课堂之美的三种形式:风格美、氛围美、感受美。尽管没有从美学的专业角度展开,但钱守旺所阐释的三种形式对课堂美学有实际指导意义。特别是对“感受美”的剖析,把学生获得体验的过程和感受上升到美的视野来强化,我以为这是钱守旺的贡献。就像认识“课程标准”一样,对钱守旺“好课的标准”,我们应该充分理解其精神,内化为教学的能力与素养,而不应该追求表面形式。 仔细研读,发现钱守旺老师对“好课标准“的论述,是求质取神的平和与质朴之美,是一种美的高境界追求。这也是我们一线数学教师所不懈追求的目标。 什么是好老师?古今都有不同的看法和理解。在2015年9月的教师节上,国家主席习近平用简单的“四个有”指出了好老师的符合标准。“四个有”即有理想信念,有道德情操,有扎实学识,有仁德爱心,只有具备以上四点,才能成为真正意义上的好老师。 “四个有”简单明了,易于衡量,但笔者以为,这四个方面绝不是呈现出毫无关联的并列关系,而是存在某种密切的深刻联系。有理想信念和道德情操一定是成为好老师的前提和先决条件。为什么这样说呐?因为从你刚踏入师范院校那一刻起,就必须明白你的理想信念和道德情操要优于其他行业。好老师具备什么样的理想信念?“好老师心中要有国家和民族,要明确意识到肩负的国家使命和社会责任”。好老师要有广阔的胸怀和理想,要怀有为国家培养英才奉献毕生的抱负和决心。已故的北师大教授、遥感卫星专家李小文就曾经在课堂上对学生说,他当年和一批学子怀着学成归来,建设祖国的雄心抱负踏上了异域求学的征程。在他国,他克服一切困难,认真学习,丝毫不敢懈怠。当国家急切需要他的时候,他又义无反顾地回到祖国的怀抱。他曾说,是国家拿钱培养了我,我要不回去就是对不起国家人民。试想,当北师大学子听到这质朴无华的语言时,一定会激起强烈的求知欲望和报效祖国的热情。不要谁来证明,当李教授离开心爱的岗位时,北师大千余名学子自发为他送行就足以说明一切。我相信,是他的理想信念感染了北师大的莘莘学子,这种精神也一定会薪火相传,生生不息。好老师一定也是在道德和人格方面起到标杆和表率作用的老师。古人说:亲其师,信其道。学生为什么亲师,信师?那是因为好老师的高尚道德和纯正的人格深深地吸引着他们。决定学生成才的必要因素往往不是学习成绩,而是独立的人格和高尚的道德修养。还记得那件让全国教师蒙羞的事吗?教师节来临,学生没送老师礼物被班主任骂得狗血喷头。试想,学生有错吗?难道学生不买礼物,你就不好好教学生了。那位班主任的冲动之举,不仅伤害了学生的纯洁心灵,更是严重的失态,失德,失格的表现。这在学生的心目中会种上一颗多么丑恶的种子。还记得地震来临时,那位只想着自己,不顾学生安危的“范跑跑”吗?不知道当这位范老师再次面对学生时,会有什么反应! 我们深知,除了父母之外,影响学生最大的人就是老师了。老师怎么样,一定程度上也就意味着学生将来怎么样,往大的说,也就意味着国家怎么样。因此,“合格的老师首先应该是道德上的合格者,好老师首先应该是以德施教、以德立身的楷模。老师是学生道德修养的镜子。好老师应该取法乎上、见贤思齐,不断提高道德修养,提升人格品质,并把正确的道德观传授给学生”。 因此,“有理想信念”体现出好老师的胸怀和境界;“有道德情操”则决定着祖国未来的人格建构,二者对学生的影响将是深远的,所以,它们共同成为真正好老师的前提和先决条件。 有坚定的理想信念,有高尚的道德情操还不是成为好老师的全部内涵所在。韩愈在《师说》中明确给老师下了个定义:师者,所以传道受业解惑也。作为老师在向学生传达社会主义核心价值观的和真善美之余,也要解决他们心中的疑问。因此,老师不仅是道德的楷模,也必须是掌握高深知识的导师。如果一个老师的学识还不如学生,那他靠什么在学生心里树立高大的形象。过去讲,要给学生一碗水,教师要有一桶水,现在看,这个要求已经远远不够了,应该是要有一池水。知识的更新和社会科技的日新月异,这一切都在逼着老师要时刻学习,终身学习。陈寅恪在成为清华国学院的导师之前,他曾经感到自己的学识很差,尤其是中国的传统文化方面更是难以胜任导师一职,后来他恶补中国传统文化知识。又一次在上课时,他竟然把葡萄酒的原产地以及制作流程等等方面讲得清清楚楚,让学生佩服得五体投地。陈寅恪在外国留学期间,多方涉猎,博采众长,知识面非常广远。据说,他在给学生上课,下面坐的竟然是清华的教授,因此,他被冠以“教授的教授”美称,他先后培养出了王力、蒋中枢、徐中舒等一大批学问大家,堪称一代大师。 作为学生特别关注老师的学识,如果老师经常讲错题目,经常读错字音,经常记错单词和历史事件,那学生如何看待老师,也就可想而知了。作为老师掌握扎实的学识是必须的,也是成好老师的最基本要素和条件。 作为好老师还得具备一个基本要素,那就是仁爱之心。只有狭隘之心的人是做不了老师的,更不用说好老师了。一个老师要带几十个学生,每个学生的品格和脾气是不同的,这就要求老师要装得下每个学生的优点和缺点。当学生成绩不理想时,老师要及时找学生谈心,用一颗关爱之心化解他们内心的苦闷;当学生生病了,老师要第一时间带他们看病并送上祝福;当学生做错了事,老师要心平气和的指出错误并及时让学生改正。但可惜的是,有些老师心里装不下所谓的差生,对他们不管不问,自生自灭;对待成绩好的学生则是另一番景象:倍加呵护,格外关切。这种做法,严重地伤害了学生的自尊心和上进心,学生的一生前途将可能毁在那位老师手里。我们经常看到或听到网络上某位幼儿园老师又粗暴地惩罚不听话的小孩子;某位中学的老师又体罚某位捣乱的中学生了。这些老师不能从学生的角度出发,面对问题学生,只知道用粗暴方式解决,这不仅仅是师德有问题,而更是老师没有一颗仁爱之心去包容学生,体谅学生。我想很多人还记得大教育家陶行知关于“三颗糖”的故事吧! 真正的好老师,一定是健忘的,他不会计较学生所犯过的错误;真正的好老师,一定是温柔的,他会让学生在如坐春风中得到收获;真正的好老师,一定是慈悲的,他的内心里没有所谓的好生和差生。 什么是好老师,习主席用简单朴素的语言给出了答案。“有理想信念,有道德情操”,只是成为好老师的前提和先决条件;“有扎实学识,有仁德爱心”则是成为好老师的必要条件。只有具备以上四点,才能成为真正意义上的好老师。 什么是公示催告程序? 来源:作者:日期:05-07-07 公示催告程序,是指人民法院公开告示,要求不确定的或者不明确的权利人在法律规定的期间内申报权利,如不申报即丧失其权利的程序。 根据民事诉讼法的规定,公示催告是公告依据有关规定某个可以背书转让的票据被盗、遗失或者灭失或者有法律规定的其他事项,催促利害关系人来申报权利。目的是解决该票据的权利归属问题。由于票据在背书上可能有多个转让人和受让人,当票据被盗、遗失或者灭失后,谁是真正的权利人很难确认。票据是见票即付的有价证券,银行和其他支付人不能因为有人申请停付挂失就拒绝向持票人支付。盗窃人、拾得人因此会成为提取财物的权利人,而真正的权利人反而会丧失其权利,这就需要有个合法的程序使遗失的票据停止支付,以便人民法院确定权利人,这就是公示催告程序。例如,某公民不慎将支票遗失,对此,他可以申请人民法院适用公示催告程序,以公示的方法催促凡是认为自己对该票据享有权利的人申报权利,如果无人申报,人民法院就可以作出判决,宣告该票据无效,该公民就可以根据判决向支付人主张权利。由于人民法院不知道遗失的支票是否是属于来人民法院申请的当事人的,因此,人民法院要发出公告,询问有无他人申报权利。为了解决支付人根据票据支付的情况,人民法院还应当在无人申报权利的情况下,判决该票据无效,这样支付人就不能以有无票据为由支付或者拒绝支付,该申请人就可以根据判决请求支付。 公示催告,在于宣告不明的利害关系人对公示催告事项的权利无效,在此程序中,没有特定的相对人,如果相对人是明确的,则应当提起诉讼程序,不得适用公示催告程序。 票据在经济生活中被广泛使用,如果票据遗失、被盗或者灭失,票据的权利则处于不确定状态,权利人不能行使权利,将会影响商品经济的运转。民事诉讼法设置公示催告程序的目的是使不确定的权利变为确定,保护权利人的合法权益,有利于银行结算和市场经济的安全运行。 人民法院如何处理当事人要求宣告票据无效的申请? 人民法院对当事人要求宣告票据无效的,应当根据民事诉讼法有关公示催告程序的规定予以处理。 公示催告程序依申请而开始。民事诉讼法规定,申请公示催告,应当向人民法院递交申请书。申请书应当写明申请公示催告的事项、票据种类、票面金额、发票人、持票人、背书人、被背书人等票据的主要内容,以及申请的理由和事实。申请人应当是票据的遗失、被盗或者灭失前的最后持有人。申请公示催告,应当向票据支付地的基层人民法院提出。 人民法院收到当事人公示催告的申请后,应当进行审查,认为申请符合民事诉讼法规定的,应当受理。为防止公示催告期间票据被支取,人民法院应当按照民事诉讼法规定,在决定受理申请的同时,通知支付人停止支付。支付人收到人民法院停止支付的通知后,应当停止支付,一直到公示催告程序终结。如果支付人接到人民法院的通知后,支付了该票据,票据权利人的损失由支付人赔偿。另一方面,人民法院在决定受理公示催告申请后,应当在3日内发出公告,催促利害关系人申报权利。公示催告的期间,由人民法院根据情况决定,但不得少于60日。公示催告期间,票据上的权利归属处于一种不确定的状态,此期间转让票据的行为无效。 人民法院发出公示催告后,申请人以外的对票据主张权利的人,应当在公示催告期间向人民法院申报,一旦有人申报权利,一张票据就有了两个主张权利的人,两人就可能因票据的权利归属发生争议,由于公示催告程序并非确权程序,因此,只要在公示催告期间有人申报权利,人民法院就应当裁定终结公示催告程序,并通知申请人和申报人及支付人。申请人或者申报人可以就票据的权利归属向人民法院提起确权之诉。 公示催告期间,没有申报权利的,表明票据上的权利为申请人所有,人民法院可以根据申请人的申请作出判决,宣告票据无效。为了使宣告票据无效的判决为人们所知,也为了使票据支付人确定自己的支付行为,人民法院应当按照民事诉讼法的规定,将宣告票据无效的判决予以公告,并通知票据支付人。宣告票据无效的法律后果是,票据支付人可以拒绝持票人要求支付的要求;自公告之日起,申请人可以向票据支付人主张权利,即申请人可以要求票据支付人付给其失去的票据上所载的金钱。 人民法院作出判决后,除申请人以外,其他人失去了对票据的权利,但有时,因为某些特殊原因,利害关系人没能在人民法院判决前申报权利,例如,公示催告期间,某人正患病或者正在国外,不知道人民法院对票据的公示催告,人民法院作出判决后,才得知自己所持票据已被宣告无效,但自己取得该票据是合法、正当的,为了维护自己的权利,该公民可以根据民事诉讼法第一百九十八条的规定,向作出票据无效判决的人民法院提起诉讼。诉讼应当自知道或者应当知道该判决公告之日起一年内提出。第二篇:什么是好员工?
第三篇:什么是好课
第四篇:什么是好老师(模版)
第五篇:什么是公示催告程序?范文