如果单从兴趣来看,其实我对Linux内核,Android中间件的兴趣要高于WEB,何况还有这么多年的经验积累,何必从头探索一个新的技术方向呢?
    这里面原因是很多的,最核心的大概是以下4个点:
    1、当我看到Linux引入DTS解决板级配置硬编码,看到Android的Makefile写得如此灵活,看到git在管理大型工程上的优势 ,看到Linux的音频驱动框架写得如此优雅,看到Cortex创新性的硬件架构,甚至于看到我自己花了几个月在音频通讯算法取得一点小成就,都会醉心不已。我总是羡慕那些引入良好设计的天才们,衷心希望能一天天向他们靠近。
    可是事与愿违,虽然我越来越熟悉如何做出符合公司要求的产品,对于产品的理解也越来越好,但是技术上非但没有进步,反而一直在退步。大量的维护工作和重复开发耗尽了我几乎全部精力,如果你在这个行业,那么应该更能体会到,操作系统这一层及以下的工作,由于会导致性能问题没法像应用层那样直观地引用比较先进的软件设计模式,代码没写好更容易导致重复开发和后期的大量维护。
    实际上我认为我们的软件开发模式仍然处在远古时代(难以想像我在5年前已经开始用git管理我的所有代码,而直到离职时却还需要在工作中用vss配合别人工作),有一天我想通了这个问题:这其实是由公司的业务决定的,尽管是IT公司,但是由于产品技术复杂度太低,解决这些业务问题对能力要求实在太低,以致于对技术提升并没有多少帮助,也很难产生良好的技术氛围。
    在我毕业的时候,我希望可以靠兴趣工作顺便赚钱,实际上我也这么做了,而在这两年我却越来越焦虑,我发现自己正一步步变成为了赚钱而工作。那么换一家公司吧?找一家让我可以安心研究内核和拿高薪的技术型公司,在福州这地方其概率并不比当一个自由职业者高多少,可控性更低,于是就先尽量做自由职业者了;
    2、当一个自由职业者,就需要能够独立提供完整的服务,如果其他人不配合或配合不给力我就干不成事那我当不成自由职业者,只有做应用是最满足这个条件的。
    与之相比,嵌入式开发的要害恰恰在于离市场太远,就算有技术,没有产线、硬件、结构、应用的一系列配合,很难做成一件事,我唯一想到能独立完成的就是找一家培训机构,是把自己的嵌入式开发技术教给别人作为起点,而正如上篇所提到的,正好有WEB项目进来,就走上了WEB路线。
    3、而选择WEB应用而不是手机应用,是我对WEB开发本来就有兴趣,用它做过几个小网站;第二方面我十分厌倦不同平台要用不同的语言不同的开发包的模式,重复学习成本太高。PC跨平台要Qt,Gtk,而Android要Java,而iOS要ObjectC,时间一定会被语言、库、框架的熟悉给耗尽;第三方面是这几年WEB开发,特别是WEB前端的发展一年比一年猛,这主要得益于移动互联网的迅猛发展(2016年github stars数最多项目几乎清一色是WEB相关)。感兴趣的东西正在风口上,此时不进,更待何时?
    4、我认为嵌入式开发在HARD模式,而WEB开发则在Easy模式,至多Medium模式,从难到易,为什么不尝试下呢?
    于是,在后面几个月里,我走上了一条全新的技术路线——成了WEB开发的全栈工程师。

IT自由职业者的第一个月(下)——为什么放弃5年嵌入式驱动开发转到WEB开发?的更多相关文章

  1. IT自由职业者的第一个月(上)——何去何从

         2016年8月11号,我终于走完所有流程,拿到了离职证明,5年的嵌入式驱动开发工程师的职业生涯就此结束.走离职流程期间,陆续有同事和朋友问我,离职后去哪儿,我都是告诉他们:“还没想好,离了再 ...

  2. 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard

    目录 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard 正文 对我的启发 机器学习英雄访谈录之 DL 自由职业者:Tuatini Godard Sanyam Bhutani 是 M ...

  3. Matrix67|自由职业者,数学爱好者

    Matrix67|自由职业者,数学爱好者 介绍一下你自己和所做的工作. 我叫顾森,网名 Matrix67,长住北京的重庆人,目前没有固定的职业.一会儿当当码农,一会儿做做编辑,一会儿教教数学,一会儿写 ...

  4. Denny Zhang:一辈子做一个自由职业者

    程序猿訪谈录供稿 Denny是一个旅居美国的自由职业者,这是一份让人羡慕的职业,选择这个职业意味着他已经实现某种程度上的经济自由,能够最大限度的做自己喜欢的事情,对他来说,选择自由职业作为自己终生的事 ...

  5. 多测师讲解第一个月 _综合面试题_高级讲师肖sir

    第一个月综合面试题 1.  冒烟测试是什么意思?  对主要的用例测试 2.你们公司的项目流程是什么? 3.你们公司的bug分几个级别?  4个 4.你对外键是怎么理解的? 你会使用外键吗?给一个表添加 ...

  6. (linux shell)第一章--小试牛刀(下)

    文章来源: (linux shell)第一章--小试牛刀(下) 1.6 数组和关联数组 1.6.1 预备知识 Bash同一时候支持普通数组和关联数组.普通数组仅仅能使用整数作为数组索引,而关联数组能够 ...

  7. python基础练习题(题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少)

    day13 --------------------------------------------------------------- 实例021:猴子偷桃 题目 猴子吃桃问题:猴子第一天摘下若干 ...

  8. 调查显示数据分析已取代Web开发成为第一用例

    一项关于Python的开发者调查显示,编程语言现在主要用于数据分析,取代了之前的第一个用例Web开发. 去年秋天,由Python软件基金会和开发人员工具供应商JetBrains进行,2018 Pyth ...

  9. CentOS 6.6下 BCM4312 802.11b/g无线网卡驱动安装

    1.目前www.broadcom.com网站上最新版本为hybrid-v35,但此版本与2.6.32不匹配,无法识别验证密码,搜索网上说是要求升级内核,后根据http://www.dadclab.co ...

随机推荐

  1. 基于python+selenium的框架思路(二)

    一.如下是用例格式,第一个sheet为用例汇总,后面的sheet为具体的用例步骤 sheet:测试用例 sheet:搜索 sheet:刘江博客验证 二.读取该excel文件取出关键字等信息,作为关键字 ...

  2. 如何使用安卓4.4的SD卡?

    安卓4.4默认情况下,后安装的程序无权写入数据到SD卡中,那么是否我们就不能用了?看了很多文章,都说要Root,随后修改配置文件.我觉得这不是很好的方法,Root之后的安卓会有很大风险,这不是最好的办 ...

  3. NOIP simulation

    NOIP 模拟赛Day 1题目名称LGTB 玩扫雷LGTB 学分块LGTB 打THD英文代号mine divide thd时限1 秒1 秒1 秒输入文件mine.in divide.in thd.in ...

  4. linux系统下运行java项目的脚本编写

    本文主要讲linux系统下运行jar包,至于如何打包jar包,放到linux系统下可以参考其他的博客. 在linux系统下运行jar包的命令如下: 1.java -jar xxxxx.jar  //  ...

  5. handlersocket优缺点

    HandlerSocket的优势和特点: 1)         支持多种查询模式 HandlerSocket目前支持索引查询(主键索引和非主键的普通索引均可),索引范围扫描,LIMIT子句,也即支持增 ...

  6. tableView下沉

    出现问题的界面如下,并附有大致介绍: 而我想做的界面应该是自定义的headerView和tableView是一起滑动的,而不是headerView在tableView滑动的时候始终在顶部位置,而且ta ...

  7. 2016级算法第四次上机-D.AlvinZH的1021实验plus

    978 AlvinZH的1021实验plus 思路 贪心,中等题. 使用miss变量表示未覆盖的最小数字,初始值为1. 初始覆盖区间为[1,miss),目标是覆盖[1,m],即miss需要大于m. 需 ...

  8. Advanced-REST-client安装

    下载得到Advanced-REST-client_v3.1.9.zip:链接:http://pan.baidu.com/s/1c0vUnJi 密码:z34d这里要说明下,目前谷歌浏览器是不允许安装非谷 ...

  9. 移动端遇到的常见JS与CSS问题及解决方法

    由于笔者的水平有限,虽说都是笔者遇到过使用过的,但文中可能也会出现一些问题或不严谨的地方,望各位指出,不胜感激! 一. css部分 body如果设置height:100%;overflow:hidde ...

  10. js计算数值

    1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.f ...