解惑

解己之惑,解人之惑

标签:加班

灵活工作制

感觉这个是企业现在对付加班问题的法宝,作为IT人,加班是经常的事情,但是企业又不想给加班费,原来是潜规则,现在企业找到好的方式了:灵活工作制,不限定上班时间,只分配任务,需要多长时间完成,什么时候完成根据公司需要,即使是上晚班也没有办法,而且这个不算加班。高!这样一来,企业就可以名正言顺的不支付加班费了。上次去HP面试就谈到这个,那个人问我怎么看加班,我说我从来不加班,上班这么多年,超过晚上十点回家的日子加起来不超过一个星期,他就说看怎么定义加班了,HP是灵活工作制,没有固定的工作时间,所以也没有加班
我们公司其实也是这样,但是工作强度并不是很大,而且也没有人考勤,所以灵活工作制还是很有吸引力的,也不用经常加班。昨天和Highven聊天,他说日本人上午和下午的时候都在混时间,到了快下班的时候才开始真正工作混加班费,在日本,基本上是一个月工作了160个小时以上的时间都是按照加班算,加班工资和正常工资一样,按小时算,比较难以理解的是他们也不考勤,一个月上了多少个小时的班是自己报羡慕

加班的日子结束了

这段时间加了不少的班,开始只是周末加班,一周加一天,加了四周,前天晚上又加到很晚,我是到两点才走的。不过平时我还是走得比较早的,基本上6点半或者7点走,只是保证每天工作8个小时。
项目经理告诉我们的是接下来的一个月会比较轻松,不会马上有下一个版本的计划,应该会做一些自动发布的东西,另外我可能会提议把单元测试框架搭好,其实Oneal已经有一个雏形,可以做很多类型的单元测试了。这样我们下个月的日子以至以后的日子都会好过得多。
进这个公司也快两个月了,这次是我感觉技术最复杂的项目,所以也是我找到感觉最慢的一次,原来的公司都是进去后一个星期基本上就可以放开手脚做事情了,这次足足花了一个多月才找到感觉,一个是用到的技术比较多,LDAP,SQL Server, WorkFlow,DB2,Web Service,ESB都是第一次用,另外就是比较杂,后台的EJB2,EJB3,Hibernate混合使用,老的系统使用的老的技术,新的代码慢慢的过渡到新技术,加上AOP在其中穿插使用,最后就是遗留系统集成,我们这个项目是核心项目,原来的一些合并过来的公司的老的项目都要把数据集成到这个里面,所以集成的很多BUG很麻烦,因为我们搭一个完整的环境需要至少六台服务器,而其它的系统我们自己是不能搭的,只提供给我们开发和QA各一台,这样我们在开发的时候往往就存在冲突,可以说一天可能有很多的时间是在等待中度过的。而我们开发的环境因为使用的人多,经常有人修改配置,搞得很不稳定,后来和QA混熟了借他们的服务器直接打一个Hot Fix,也就是把我编译好的几个类替换下,然后在他们的环境里面验证,验证完了再还原回去,而这个要等他们QA都去吃饭的时候做
唉,这个阶段告以段落了,下个月要好好的想办法让这个项目的日子更加的好过一点了,这样我就可以恢复原来不用加班的生活了

上班第一天:加班

上班第一天,生怕迟到,7点20起床,八点公交车发车,结果快到九点才走到易初莲花,没办法,下车打的,结果的士拦不到,给人力资源打电话说晚一点到,她问几点能到,我说九点半左右吧,她说她也差不多,晕倒白白担心一场。上了下趟公交车,九点四十才到公司,结果她还没有到,又等了十分钟才来,她让我直接到楼下去找上次签offer的时候的负责人,合同下午才能准备好,下楼,负责人也没有来,Oneal说他们经常下午才来,再次晕倒。又上楼找人力,要机器,到IT部门一问,下午才能准备好,又倒。
无所事事的到了下午,总算是把机器弄好了,开始搭建安装环境,拷贝全部的源代码都花了很长时间,然后是用Ant编译工程,服务器上的几个Ant的版本都不行,用最新的1.7.0,有个目录找不到,应该是自动生成的,结果没有生成,手工建目录,编译成功,后来比较差异,发现是子任务在子build.xml被覆盖,但是Oneal的可以啊,还是让Oneal确认他的版本,发现是1.6.5,直接拷贝过来用,一切OK
就这样,搞到8点半才走,等到家都快十点了,这就是第一天上班
唯一的好处是几个BOSS都不在,不用说英语,今天就只说了几句英语而已,我的负责人是美国人,剩下的时间都是和Oneal说话,哈哈

接连两次加班

公司修改了开发流程,把所有开发人员分成了两个小组,每个小组有一批任务,小组的成员分工完成所有的任务,每天更新任务状态,更新任务剩余的时间,然后在任务结束的时候演示给美国的同事看。这次的任务列表中有很多新的功能,修改非常的大,前段时间一直在开发,都是在自己的机器上做,不敢更新到CVS,怕把每天的Build搞失败了,上周五是最后期限,所以周四开始,大家陆续更新CVS,问题多多,然后周五继续修改,然后经理要求我们安装一个新的环境来做演示,到下午开始做BUILD,这个过程就要一个小时,下载又要半个小时以上(BUILD的结果在IDC的机器上),安装又要一个小时,这样搞下来已经快下班了,没有办法只能加班了,最后弄到8点多,今天又要重复这个过程,所以又要加班,和老外的英语课也被迫取消了。
其实如果大家早点把写的代码更新到CVS也不会有这么多的问题了,早点发现问题总比到最后发现好,反正我是每天都会更新的,有些东西不要了就从CVS删除,但是其它人可能觉得麻烦吧。

要开始加班了

世事多变,前几天还说我从来没有加过班,今天公司决定要加班,因为我们的这个版本非常的重要,而目前的进度已经大大的落后于计划,目前的主要原因是因为设计书迟迟不能定稿,架构师们的设计书中存在的问题太多,一直在修改,但是他们同时又有很多的其他事情也要做。
公司的期望是每周六都要加班,并且最好将早上的9点的开始时间提前到8点,但是大家一致不同意将时间提前,因为大冬天的谁都不想起那么早,特别是有些同事住得比较远,上班要一两个小时。
当然,我们公司很正规,加班是可以调休或者给加班费的,加班费按照工资的两倍计算。

另外给公司招人做个广告:
Java J2EE Software Development Engineer
JAVA/J2EE Software Development Architect

学会懒惰

记得有人说过最好的程序员是最懒的程序员,这个懒并不是真正的懒惰,而是学会高效率、低重复的工作。其实对于大多数程序员而言,都是在一个固定的框框里面写一些看似不同实际相同的代码,那么你有没有想过使用什么方法能够不写那些完全一样或者几乎完全一样的代码呢?很多人可能更多的是复制,特别是在IDE的帮助下,拷贝一个类,它会自动帮你替换一些相关的东西。这个方法是不对的。你的代码中如果存在一段代码重复三次以上的情况,你就要想办法不这样重复了。我常用的有两种,一种就是写工具类,还有就是使用Template method模式,基本上可以解决90%的问题。
另外一点就是写代码能够做的事情不要自己一遍一遍的重复做,例如这次我写的EJB单元测试框架,其实我可以要求大家写单元测试的时候自己发布EJB,只发布自己需要的,但是我可以从项目的配置文件中读取到这些信息,就应该让框架自己来做;Entity Bean的finder方法MockEJB不支持,我提供了基础代码可以自己写Finder的实现,但是80%以上的finder的实现都很简单,就是两三行代码重复一下,换个字符串就可以了,但是我费了很多时间写正则表达式去解析这些finder,只有很少一些SQL使用了比较复杂的语法(288个里面只有34个)。
也有很多人说程序员很苦很累经常要加班,就我而言,我工作五年多来只加班过三个月,而且不是因为写代码,而是因为我一个人要解决40个人遇到的问题,我解决不了的或者解决方案会影响项目进度的我就要发邮件到我们的上游承包商的人,每天必须阅读和回复的邮件超过100封,而且要使用我并不是很好的英语写。而且我从来没有通宵加班过,最晚的一次是到半夜两点,还是陪项目组的人发布,我自己其实并不需要加班。
学会懒惰,学会思考,学会更深入的研究问题,你慢慢的会发现程序员其实不需要加班也可以搞定。

© 2020 解惑

本主题由Anders Noren提供向上 ↑