近期准备找下一份远程工作,求建议

2015-06-24 03:05:58 +08:00
 mouhong

毕业就要满6年,前1年半全职上班,然后自由职业一年多,再后来在一家公司远程工作到现在(刚辞职)。

走上自由职业的路完全是一个巧合,当时我并没有一个明确目标,只是在某个地方看到了这么个名词,颠覆了我的观念。因为业余时我刚好写了个CMS系统作为平常练手用,所以当时想,要不我就用这CMS来接网站的单,只要一个月能接一单,赚3K左右让我活下去,我就继续走这条路,否则就找工作。

网站项目是没接到,倒是接到一同学介绍的一个企业项目,借着这个项目我开始了自由职业。项目本来预估一个月,结果做了一年,一个人从Web前端做到C#后端,还有工厂扫描枪上的程序 (扫描枪装的是Windows Mobile,所以其实也就是一个WinForm程序,倒也没什么新东西),还从厦门跑到沈阳深入工厂做项目实施 (这是一个企业信息化项目,Web端接受经销商订单,然后和工厂中的设备对接,完成订单到生厂这个流程的信息化,工厂设备有相应接口,所以主要还是做Web部分)。这个项目两期最后收了大概3W左右,自由是自由,但是穷得一塌糊涂。

这期间因老师介绍也到另一家做教育方面的企业系统的公司以兼职形式客串了两个月,后来老板想留我在那,给我画了不小的饼,年少的我当时也纠结了半天,还好后来想清楚了,当时他们公司大多数员工薪水只有两三千,虽然老板画的饼里暗示我的薪水会比他们高得多,但低薪环境意味着这不会是一家尊重程序员价值的公司,给我再多也不敢拿,更重要的是,公司发通告要求员工上班不能上网看网页,这种通告让我感觉很无语。

自由职业时工作时间很灵活,但极缺在项目估时和商务谈判上的经验,每次都亏本,我也比较好说话,中间加了N多需求我一分钱都没要,工厂那个项目的老板可能也感觉有点对不住我,后来主动给我打了几千块的补偿。不过不管怎样,这个自由职业是继续不下去了。

说来也巧,在我快活不下去时,第一家公司联系我,表明不想全职以后,对方表示有一个客户的项目可以接受在家兼职工作,计时薪,这意味着有干活就确定有收入,不用冒着低估工作量的风险,只要每天记录一下工作内容,月底发他们即可。我很感谢他们对我的信任,事实上,他们应该没有看我的工作记录,只有财务算钱时才会看一下里面的工时统计。有朋友感觉不可思议,说要是我乱写怎么办?但我相信人与人之间基本的信任是会存在的,而且正直一定是成功的基础,我没有必要这样自毁前程。

然后,我就开始了兼职远程工作的生涯。当时找我去是因为项目人手极缺,但接触项目后,我感觉根本原因是技术债务太重。代码里太多的 Copy-Paste,不使用的代码也不删除。所以当时我想改变这种状况,一方面开始重构部分业务变化最频繁的模块,另一方面制定一些 Code Review 规则,鼓励写单元测试,但似乎总是缺了点什么。这是一个客户的项目,项目组的成员相当于是人员外包给这个客户,客户没有技术团队建设的概念,我的计划还没实施多久,因为客户另一个项目的负责人走了,我就被调过去填上了,之前的计划自然也就停住了。

但新接手的这个项目更糟糕,项目业务逻辑相当复杂,是一个B2B的电商项目,B2B项目里的计价方式和B2C有很大差别,算一个订单价格时要从零件价格算起,不同零件还有不同的规则,但这些代码全都是用 IF-ELSE 加硬编码加到处 Copy-Paste 写的好吗!!此外还有,4千多行的JS文件到处都是(4K行最后被重构到三四百行,重复得有多严重)。但既然接手了,就决定把它做好,和一个产品经理一起(他设计功能和用户体验),两个人,一年多,至少从我的角度,这个项目后来算是比较可控了,包括计价规则,原本是客户经常发邮件过来说帮忙改下某产品的计价规则,后来我改成让客户自己在后台通过公式来配置了。我对重构、单元测试这种事热情比较大,倒不是我闲得蛋疼,主要是想让客户少烦我一点。

后来公司想把我拉到研发部,但这个B2B项目的客户不肯,这个客户带来的收益应该不大,所以公司干脆就和这个客户中止了合作,于是就进了研发部,做框架型产品,所以这时的主要任务是设计扩展点和API。

研发部的项目就更自由了,因为这种项目根本就没有明确的需求,只有老板的一些基础想法,你要做的就是和团队成员一起设计更好的需求,然后实现它,你可以尽情发挥你的想法,这也挺合我味口,说实话我不喜欢那种“项目经理分解任务(这在软件工程里好像还有个什么术语,三个字母的),再分配给程序员”的团队,每个人按部就班地完成工作,你要做的就是完成任务,没有一点意思。

但这毕竟是一个老板直接领导的项目组,说实话和老板一起工作多少有那么点不自在。但更多的是,在研发部呆了两年后,我发现我开始有一股很强的冲动,想找一个至少一半以上的人都比我厉害的团队,做一些我没做过、做不来的事情。

突然发现已经离题八万里了,哎,每到深夜时情感就会泛滥...切回正题。近期打算开始找工作了(项目交接中)。

我当前的技术栈

ASP.NET/C#/JavaScript,主要做后端,MongoDB, RavenDB 这些也都用过,但因为公司项目用不到,所以只在业余项目用一些,用得不深,不过我对文档型数据库模型设计特点应该也还算比较熟悉。

前端偶尔也做,但没太花心思去研究,了解得不是太深。用过两次 SPA (DurandalJS),偶尔也写一些简单的JS库项目内用 (主要是封装一些项目相关的UI组件,或对第三方JS库做一些扩展,不重复造轮子)。因为产品类型的原因,所以现在大部分工作内容都是设计框架、扩展点等。

期望的团队

为什么远程?

我真觉得每天花两小时挤公交是浪费生命,两小时干什么不好,非要在路上颠簸,通常晚上挤完公交回来,人也很累;其次,我看到太多的同事中午趴在桌子上午休,这么艰苦的午休,怎么保证下午的工作效率?再者,我工作中间休息时,会想要看看书,或练练吉他,这在办公室是做不到的;

前段时间看到一网文,说是某著名团队创始人讲,我们一起工作基本靠吼,我不太认可这种观念,“吼”是方便了你,但这是以打断另一位(或多位)同事的工作为代价的。你“吼”一声可以迅速解决你的问题,但别人要花十几分钟甚至更多时间来“接”上刚才被打断的工作。

为什么不做外包

外包是一次性项目,即使我写再好的代码,这个项目数月后也会终止。而我希望我写的代码能对项目产生长远影响,今天重构一段代码,意味着以后踩坑的机率可以小一点,多写一个单元测试,被紧急电话吵醒的机会就少一些。文艺一点说,就是我希望我能对项目产生感情,这在外包项目上是不可能做到的。

自我评价

和我相关的链接

我想知道的

谢谢大家。

12786 次点击
所在节点    程序员
80 条回复
CIVITAS
2015-06-24 12:41:10 +08:00
另外,在交通时间上,我完全同意你的观点。不过这意味着我本人非常之宅,lol

当然我有一项特殊技能:在公交车或地铁上随时睡着,不担心过站。可以练练看,节约生命。
mouhong
2015-06-24 12:47:42 +08:00
@CIVITAS 这个技能太牛了... 我也很宅,虽然我不想
kecichina
2015-06-24 13:00:07 +08:00
鼓励自己创业,入驻创业园区,看看里面的资源对能不能引起自己的兴趣。发现好项目以后直接招募补充团队。别怕,你还能胡来几年。
mouhong
2015-06-24 13:09:37 +08:00
@kecichina 其实业余也有做过自己的项目,但多数失败。如果是前两年,我还能不顾一切搞一场,现在有点不太行了,有生活压力。我远程工作时是以欧元结算工资的,虽然每年涨薪,但涨薪根本抵不过欧元对人民币汇率的下降速度,这也是我辞职的原因之一,一方面在有生活压力的情况下,工作很难专心,另一方面没有足够的存款,也难“胡来”。
exuxu
2015-06-24 13:22:23 +08:00
@mouhong 哈哈,我知道,但是无规矩不成方圆,这种东西还真没法优化
wincat
2015-06-24 13:28:01 +08:00
@mouhong 我不是那位,我是后面进来的。和你还算是校友,不过我是2000年毕业的。但却进了A才真正学习写代码,你留下的东西我受益颇深,谢谢了!
mouhong
2015-06-24 14:02:06 +08:00
@wincat 好吧,你没吐槽我的代码我就已经谢天谢地了^^ 很多地方现在再回过头看会感觉写得相当糟糕
CIVITAS
2015-06-24 14:30:36 +08:00
回来了。邮件在线否?如果在线,可以做一些非正式的沟通。有些内容可能不方便公开发表。
zonghua
2015-06-24 14:45:25 +08:00
远程工作的话一般是怎么去交流?视频会议吗?还有怎么把学习和工作分开?
CIVITAS
2015-06-24 14:50:00 +08:00
已经回复了。视频,语音,更重要的是文档和代码本身。

我们做的是全新的东西,没考虑过借鉴谁。所以任何事都是新的,也就都是学习过程。
CIVITAS
2015-06-24 14:55:23 +08:00
@mouhong
这么说我倒真是没生活压力瞎创业的「代表」了。

开玩笑的。我们有正经资金进入,对自己、对团队、对资金负责,都是必要的。目前而言,没什么成本压力。预算花不完,技术不好招。
mouhong
2015-06-24 15:07:04 +08:00
@zonghua 个人不是很喜欢视频会议,当然,适当的视频会议是合理的。我的意思是,想要开会时,或许可以考虑下是不是有更好的沟通方式。

现在远程团队应该比较流行用 Trello, Worktile, Basecamp 这类的协作工具。我曾经呆过的一个团队,日常交流靠邮件和MSN (现在是 Skype 了),但后来决定所有交流必须在 Trello 上进行,因为邮件经常找不到,MSN 更不用说了,很难跟踪,但放到 Trello 上就好多了。

学习的话嘛,其实我开始编程纯粹出于兴趣,所以当工作变成都是输出我现有的知识时,我就会开始感觉无聊。感觉比较完美的应该是,工作内容充满挑战,那我一边工作一边就能学习。除了上班时间,业余就自己看书研究了吧,我不喜欢加班,一方面也是因为加班会占用我业余学习时间。
cxshun
2015-06-24 15:08:52 +08:00
@angkec 职位很赞,可惜主要是做java的,python只是略懂,不然就去啦。
@CIVITAS 睡着不过站,这技能也太牛了。
mouhong
2015-06-24 15:08:57 +08:00
@CIVITAS 哎,虽然我的经历看起来好像也挺丰富,但也是充满了各种遗憾,但这个就很难三两句话说完了。
mouhong
2015-06-24 15:16:14 +08:00
@cxshun 说到语言和平台,其实我曾一直想深耕于 .NET,C# 的优雅相信很多人也认同,但近来思想发生了一些变化,长期用一种语言和平台容易让思维变得狭隘,所以这次换工作我很期望做 .NET 以外的东西。不过这也怪我执行力一直不高T_T,其实很早以前我就开始对 Scalar, F# 之类的感兴趣,但因为没有项目在用,所以一直都只停留在会拼写名词的水平T_T
CIVITAS
2015-06-24 15:16:51 +08:00
@mouhong 这问题更适合邮件沟通。我刚已经回邮件了。我个人的经历更奇葩。

@cxshun 我可以定时起床的,只要我睡前意识到这件事。最惊险的一次,地铁开门了睡醒。
CIVITAS
2015-06-24 15:19:13 +08:00
@mouhong 我们倒是主要在用 .Net。但你未必非得做这玩意,具体可以给你列个技术栈。

来个有意思的事情:我自己写的代码,几乎全是 Visual Basic (.net)。跨平台的时候遇到很多啼笑皆非的问题,好在都能解决。
Daghlny
2015-06-24 15:34:03 +08:00
希望楼主的blog可以加个目录
mouhong
2015-06-24 15:44:55 +08:00
@Daghlny 当时用的这主题没有提供目录,我也有想加个目录,包括系列类的文章都分开列出来,但实在精力有限,只能缓一缓了T_T
mouhong
2015-06-24 15:48:09 +08:00
@CIVITAS 按微软近来在跨平台上的动作,未来也许跨平台会方便多了^^

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/200681

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX