前景提要:本人一名 3 年左右的 Android 开发,去年进了目前所在的一家小公司,老板前些日子觉得自研效率低没成果,买了份代码,交予我配置。
老板一向自诩 20 年开发经验,今天周日,他对助理抱怨了一通我们“水平不太够,沟通能力非常差”,“别人两天能干好的东西,两周也搞不好”,“对开发这块非常不满意,本打算全部开除,念在对公司还算忠心没有下手,对工作的投入少了点什么”。
对于他的认知我十分诧异,不知道是我瞎了还是他瞎了。下面的对接具体过程
是我整理一下的这段时间经历,不感兴趣的可以跳过。
7 月 18 日:老板购买 A 产品服务端代码。 7 月 19 日:我部署好了 A 产品后台。是 Java 实现的,没用到什么框架,后台管理页面是 JSP 做的。没有给具体的文档。搜索 ip:port 时有几十处,SDK 的 token 混杂在各个类之中没有统一管理。我只替换了 ip:port 部分,token 依旧用的是他们的。项目没有用 gradle 和 maven,我吸取教训下了个 eclipse 打开它的。按网上的说法生成 war 包部署的。 7 月 20 日-7 月 21 日:测试 Y 产品后台与整理 bug。(在此之前老板也买了一套 Y 产品的代码,是 PHP 的,自己部署失败后交予了我部署) 7 月 22 日:上午把默认的 ip:port 改成了对应域名的 80 端口(我改了 tomcat 的配置把默认的 8080 改为 80 居然没生效,然后让 80 端口转发给 8080 实现了),下午按老板的要求分析 Android 端代码质量。
7 月 23 日-7 月 30 日:检查解决客户端和服务端存在的接口问题(我认为的真正处理我本职任务的时间段) 23 日:配合 A 产品服务端人员架设 openfire,更换极光 token 24 日:更换 Agora token 后依旧无法实现视频功能,最终证实原因为老板在 Agora 新建应用时配置设置错了。(理论上也不算配置错,Agora 有两种鉴权方式,一种是固定 token,一种是动态 token 加证书,老板配置时选了后者,该项目用的是前者。) 26 日、27 日:反馈服务端支付宝的支付参数无法正常返回。对方没有回应。(正常流程 Android 端发起支付前调用服务端获取 sign 参数,然后调用支付宝的接口,而这个是调用了服务器的接口后 200 了,但是返回内容是空)我没找到服务端生成的日志在哪,不好排查服务端的原因,就去测客户端的其他地方了。 29 日:更换短信 SDK 的 token,发现没法正确发送,询问短信方客服,他们让我们换了一个请求地址就可以了。(这时候我就开始怀疑给的源码是有问题的了)
7 月 31 日:委托给 A 产品的技术人员搭建了,8 月 3 日他们提供了替换了我们 token 功能正常的服务端和 iOS 端代码给我们。
老板所谓的“别人两天能干好的东西,两周也搞不好”,我的计算是他们用了四天,我们用了六天。而且其中遇到的问题基本都是 A 产品自身代码存在的问题。
比如 Android 端发起支付时有一个问题他们给的解决方案是把其中注释掉的一个代码段取消注释,然后把另一个代码段注释掉。
iOS 端一运行就崩溃,最终解决方法是把初始化过程中的一部分代码注释掉。
服务端的一部分接口有问题。我之前还真的以为是我部署的方式不对,后来拿到他们 8 月 3 号的代码一对比,根本就是之前的源码少了一些类。
老板要是完全不懂技术没问题,我可以跟他解释原因,他自己分析有没有道理。可是他老喜欢不懂装懂显得自己厉害一样,觉得我们不就是搜索替换一下域名和 token 就完事了,一天就能搞定的事,上面遇到的这些问题我都跟他描述过了,阐明问题不在我们这边,得了,他现在就觉得是我们水平不够了。
平心而论,在这的工作体验很差(老板如果只是提要求那还好,但是他喜欢瞎 BB,反复无常,跟他解释过很多次的事他转头就忘了下次又跟你说怎么怎么)。很早我就想过离职,但是也因为是小公司,老板也不管具体技术实现,没啥历史包裹,我可以比较自由地选技术栈和尝试新东西,这也是我一直留下了的原因之一。
不过现在的话显然是不打算继续留了,只是不知道是自己辞职还是等老板裁好,等老板裁的话总担心到时候会有很多不愉快。
我自己整理过自己的技术栈不足,Java 的 NIO、多线程,kotlin 的泛型、协程都不太熟练。(多线程真是一个看着好像明白,Android 里运用得不是很难,但每次看到 Java 后端的面试题里出现相关的问题就有点懵的东西)
Android 因为自己比较熟悉,感受到的不足就更多了,比如自定义 View 就不是很熟,还有 JNI,Framework 等,安全方面比如接口参数用 C 签名,同时校验 apk 的签名之类的我很想尝试一下,但是没服务端配合(小公司对代码要求没那么高,也因此果然技术水平提升还是有上限的吧)。
然后一些 Retrofit、Glide 之类流行框架的原理我也还没去了解(疲于实现业务需求)。简单一些的比如 AsyncTask、Android 的数据库操作 API、AIDL 之类的,虽然我当时学习时明白了,但是工作中用到的比较少我差不多给忘了,要为面试准备的话我还得重新复习一遍。
我自己也面试过别人,知道也不是要求面试者方方面面都要全答对才给过。但是我自己想准备面试的话这个度我就很迷茫,怕因为没准备好错失机会。
而且总结项目的时候,会发现大部分还是只是实现业务需求,很少有值得我吹的实现比较精妙的地方...
因为方方面面都粗通一些,也愿意去学,所以我在上一次找工作时就考虑过是继续做 Android 开发还是转 Java 后端。当时感觉后端对水平要求比较高比较有挑战(后来现实让我意识到了后端一样能很水,区分优劣的关键在人而不是岗位)。
后来经历过一位前辈指点,意识到了深研某个方面才能让自己有核心竞争力,因此也确定了以后还是走 Android 的路线。但是就具体的 Android 岗位本身,像我这种 3 年左右的开发应该是应用层都粗通得差不多,市面上大部分应用层 App 的功能基本都能做。
但是接下来,是把精力放在让代码更易维护更好管理,还是性能更优异,还是钻研特效动画用户体验,还是钻研底层了解比如音视频编解码、模块化之类的?
我知道这些之间不是对立的,但是总有精力的侧重吧,精研某个方面会导致找工作时选择面狭窄,全方面粗通的话会导致没有核心竞争力。当然,也可能一名合格的 Android 开发应该这些都很熟悉......
那就长远考虑,我目前应该侧重点放在某些方面的专精还是整个 Android 体系的熟悉?与之对应的,我应该找一个什么样的岗位会对我的职业发展比较好?(我因为第一份工作的一些小阴影,之后的工作都没选太大压力的,这次我考虑是不是回到一线城市找一个大公司的工作比较好)
时光荏苒,人生无途。感觉又在一个人生的转折点徘徊迷茫了,不知未来在何方,不知旅途会怎样。也不知道过去的自己看到如近的样子会不会满意,未来的自己思索今天的决定时会不会后悔。
我记得我找第一份工作时也上 V2 发帖求助过,十分感谢当时他们的解惑和建议,如今亦是如此,我略不太会与人表达自己的感情,给每个回帖铜币或者直白地表示感谢这些行为不怎么习惯,只能先提前对回帖的诸位表示一下感谢,你们的意见我都会认真浏览思考的,谢谢。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.