最近笔者一直没有记录博客,原因是因为卷入了面试,离职,谈判,思考等一系列事件中。不过可以先说明一下的是, 笔者最后还是拒绝了 Thoughtworks 的 Offer,继续留在目前的公司。

去年毕业后,笔者从博客园辗转来到了上海的一家医疗AI公司,从事的依然是后端的工作。由于一开始公司在新产品线上的准备不足,这包括对开发者和开发计划的准备等,在前期的时候,笔者协助主管负责了部分基础架构方面的工作,比如缓存层,日志层,鉴权和测试等等。等之后几个月部门情况慢慢改观后,又投入了紧锣密鼓的开发工作当中。

老实说,从那时候开始,这份工作看起来便不是非常有趣了。虽然用的技术也属前沿(可能并不主流),ASP.NET Core + Angular 的前后端分离架构,GitHub + Jenkins 的 Auto CI 系统,Docker Compose 的 Manual CD 系统等等,但是等你尝了个技术的新鲜后(老实说也不新鲜),反复的业务迭代和不规范的敏捷开发流程仍然会让你备受折磨。更重要的是,开发部门对外没有一个技术上的话事人——技术人员崇尚扁平,但是绝不能是小圈子中的扁平。

这是很正常的一件事,但是会让一些人不可接受。在很长的一段时间内(半年多),笔者基本没有输出过除工作之外的成果,博客也好,开源项目也好。有工作的问题,也有自身的问题。虽然从来没有放弃学习和技术成长,但是或多或少放弃了和更多人交流的欲望。

负面情绪的积累是一方面,这个过程中笔者也直接向上反馈了一些问题,也都得到了解决,情况慢慢地往好的方向发展。在终于完成了新的 Sprint 迭代后,笔者也被调到了公司新成立的基础架构组,和笔者一直很佩服的 CTO 一起共事。

也正是在这个时候,笔者收到了 Thoughtworks 的面试邀请。

粗粗了解 Thoughtworks 的人大概都是因为 Martin Fowler ,著名的《重构》一书的作者。本人也不例外。只是后面在不同的途径上了解到 TW 的更多信息后,就完全是从组织的角度喜欢上了它。这些途径包括知乎的官方 PR,如机构号(笔者也都认真地把文章看了下来);每年两次的技术雷达,让它和普通的技术咨询公司也有了区别(技术服务即外包,这应该是很多人黑的点,见仁见智);一些搜的到员工高认同度,搜不到的与内部员工的交流(也是因为内推结缘,虽然被 HR 抢先了,不过彼此仍然有友好的交流)等等。甚至于在近期的一篇博客里,笔者也狠狠地夸了下 Thoughtworks。技术的包容性和丰富性,管理的扁平化,不同于一般组织的发展理念,都是吸引我的地方。

所以后面的事情基本也就知道了。HR邮件 -> 简历 -> 电话面试 -> 难度适中的 Homework -> 结对编程 -> 技术面试 -> 公司文化面,不算复杂的流程,但是很切合 TW 的气质。老实说当时笔者并没有很强烈的换工作的意愿,所以从头到尾都没有准备过,加上那几天感冒挺严重的,整个人都有点浑浑噩噩。一直到最后一轮文化面,和 MaXu 老师谈了蛮久,也都是随性而言,一来一往都挺有趣的,可能也是在时候才发现,TW 如此适合笔者,笔者也十分地适合 TW(毕竟被马老师“夸赞”了回答都很“标准答案”)。

面试的流程很慢,但是通知很快。第二天,笔者就收到了 HR 的通知,待遇,工作要求也都确定了下来。然后在之后的一周里,便是申请离职 -> 公司 HR 挽留 -> 部门领导交流 -> 技术负责人交流 -> XX交流(笔者算是公司内较早的员工,CTO 对我的技术也比较认可)。所以尽管一开始的时候确实已经坚定了去 TW 的决心,在这么一轮下来后,笔者对目前公司的了解也深入了很多,而对于留下来之后的未来能够开展的工作也有了更多想法,反复的权衡和纠结,最终的结果便是笔者婉拒了 TW 的软件开发工程师的 Offer,重新收拾心情,投入到了现公司基础架构组的工作中去。

工作内容,工作的行程安排(是否出差),选择深入某个领域还是接触不同领域,职业规划,相处性格等等,确实都是笔者考虑的方面,但是没有多少可以分享的地方。不过对于能从基础的业务开发者,转型成基础架构开发和运维,应该也算得上是一件值得满足的事情。之所以如何反复权衡,是因为笔者是真正想从工作中得到满意的感受,同时也希望尽自己能力为工作反馈满意的成果。

尽管如此,笔者对于 TW 仍然十分向往,对于 Thoughtworks 的 HR Ruby 和马老师也是十分感谢,这些话都是发自内心的,没有多少客气的成分,毕竟不是每个人都会和你真诚地谈论你未来的发展。同时也很感谢公司对我的重视和支持,毕竟有时候我略显尖锐的性格确实会攻击到一些人或者制度。希望将来还能有机会和 Thoughtworks 有更多的交流,以更成熟的姿态和更全面的能力,并且仍然保持持续学习和成长的动力。

谈谈最近的想法和 Thoughtworks 的 Offer的更多相关文章

  1. 计算机本科/硕士找offer的总结 节选

    在这样的目标定位下,我的求职历程从2006年10月8日开始,到2007年1月10日正式结束,一共持续了3个月的时间.整个过程可以分为三个阶段:第一阶段:2006年10月份 找工作刚刚开始的阶段,什么都 ...

  2. 拿到BAT等大厂offer以后,我发现了关于秋招的一些真相

    关于秋招的一些真相 ​ 微信公众号[程序员江湖] 作者陆小凤,985 软件硕士,阿里 Java 研发工程师,在技术校园招聘.自学编程.计算机考研等方面有丰富经验和独到见解,目前致力于分享程序员干货和学 ...

  3. 百度2015校园招聘面试题回忆录(成功拿到offer)

    引言 盼望着,盼望着……今年终于轮到我找工作了,还深深记得去年跟在师兄后面各种打酱油的经历,当时觉得找工作好难啊,怎么面一个败一个,以后还能找到工作不? 不过当时的失败也是理所当然的,那时候没有做任何 ...

  4. 记秋招第一个offer:去哪儿

    9月17日 网申去哪儿,没有内推,因为网申了就不能内推了.难受,内推可以免简历筛选的,这下好了,可能简历直接挂了.我怎么犯了这么低级的错误?还没去搞清楚能不能内推就先傻乎乎地网申了. 9月28日 晚上 ...

  5. 记一次前端面试~终于拿到理想中的offer!

    2019年已经过去一半,终于拿到一直想去的公司offer,也算是实现了今年的一个小目标. 由于这家公司是我从去年到现在最想去的公司,本次换工作一直没有投,希望先积累下面试经验再投. 没有想到居然先在b ...

  6. 某安寿险HR核人面试问题总结,技术面波澜不惊,HR面反而有被暴击感

    之前朋友推荐了某安寿险的技术类职位.经过IQ/EQ网上笔试,技术面之前的java基础笔试和技术面试,基本上没什么意外的.昨天晚上7点安排的HR核人面试(他们的人力部门的工作负荷比较大,目前这个部门处于 ...

  7. 02-21 决策树ID3算法

    目录 决策树ID3算法 一.决策树ID3算法学习目标 二.决策树引入 三.决策树ID3算法详解 3.1 if-else和决策树 3.2 信息增益 四.决策树ID3算法流程 4.1 输入 4.2 输出 ...

  8. 解密面试中的套路,你都get到了么?

    如果大家有关注一些测试类的公众号或者论坛的话,肯定会发现很多文章都在表示现在行业的寒冬冷潮来了!然后有很多测试行业从业者,或者转行测试行业者都表示:工作好难找,公司跑了千千万,依然拿不到一个offer ...

  9. 前端面试基础回顾之深入JS继承

    前言 对于灵活的js而言,继承相比于java等语言,继承实现方式可谓百花齐放.方式的多样就意味着知识点繁多,当然也是面试时绕不开的点.撇开ES6 class不谈,传统的继承方式你知道几种?每种实现原理 ...

随机推荐

  1. python基础之从认识python到python的使用

    python的历史: python的创始人是吉多·范罗苏姆(Guido van Rossum),人称“龟叔”,1989年圣诞节期间,Guido开始写Python语言的编译器.他希望这个叫做Python ...

  2. leetcode148

    class Solution { public: ListNode* sortList(ListNode* head) { multimap<int,ListNode*> mul; whi ...

  3. E0264 Unable to execute '"/usr/bin/codesign" ...'

    E0264 Unable to execute '"/usr/bin/codesign" ...' http://docwiki.embarcadero.com/RADStudio ...

  4. threading.local()源码分析

    前段时间写了个多线程的程序,了解到Python中有个与众不同的thread.local()方法,可以创建一个全局对象,各个线程可以用这个全局对象保存各自的局部变量,而在使用时不受其他线程的影响.于是抽 ...

  5. php的pid文件指定用户

    比如pid文件指定www用户,首先得有这用户和用户组. 找到pathtophp-fpm.conf文件,修改里面得相关内容. 修改listen.owner=www listen.group=www us ...

  6. django + nginx + uwsgi

    server{ listen ; server_name 0.0.0.0; charset utf-; access_log /var/log/nginx/access.log main; locat ...

  7. JS游戏控制时间代码

    var canvas = new HGAME.canvas();var testBox=document.getElementById('boxRender');testBox.appendChild ...

  8. MongoDB入门(一)

    文档 文档是MongoDB中的基本数据结构,型如:{"name":"Jack","lastname":"xi"} 键值对 ...

  9. 异常解决 Unable to write generated Java files for schemas: null

    错误是在使用cxf调用其他系统接口时报出的.而且问题很诡异,只有服务器调用时才报错,本地直接写main方法直接调用却正常的.以下是异常的堆栈: ERROR c.k.p.webservice.WebSe ...

  10. linux就该这么学,第十一天了

    今天讲了,网卡绑,定,两块网卡同时工作,自动备源,理论上速度提升一倍,工作中可以用到的技术 还有sshd服务,端口22,远程连接使用,还可以设置root是否可以直接登录,主要配置文件在,/etc/ss ...