我的2013——技术成长,从比赛到ThoughtWorks

技术的成长在有时候似乎会变得很快,特别是当我们开始领悟到某些东西的时候,一个个的项目或者比赛不断地加强了我们的能力,也使得我们技术成长得更快。


比赛

比赛有时候和技术相比就显得不是那么重要的,作为一个电子信息工程专业的学生,从软件->硬件->软件是一个很有趣的事情。如飞思卡尔之类的比赛让我们Hack生活有着更有意思的东西 ,有时候硬件比软件好的一点在于,我们可以用此来改变自己的生活。只是两者结合起来才是最强大的。

智能车

所谓的智能并没有想像中的智能,芯片也限定了我们能做的事,我们所做的有点类似于把一堆堆现有的知识放到上面去。我们的创新体现在哪?我们的车跑得更快了,你把那些东西分享出来了没有?有时候我们并不缺少那些技术,只是我们缺少了一个前进的方向。然而,对于我们的教育的培养方式来说,这也算是一个不错的创新。或许就是这些,让我觉得所谓的N13的小校,不会注重分享,有时候会是那样子的。(转载保留Phodal's BlogPhodal'szenthink)

实力不足算是一方面,但是有时候缺少了更多的交流,所谓的交流会也只是一个形势。在这里应该谢谢陕西理工的学生和老师们,至少他们会分享东西与我们。而不会像我们所在的这个城市的某些重点校院。

技术的成长依赖于分享,至于为什么这么说,可以看看你身边的那些书,如果没有那些书,我想成长是不够的,除非你已经是大师了。别人分享了别人的东西给了我们,我们从中受惠,我们也应该分享我们的东西给予别人——《REWORK》启示录 招聘笔杆子——程序员为什么值得写博客

智能家居

这个算是把自己在过去学的那些东西总结了出来,而后形成的东西。至于那些idea,现在我想一般的学生已经很容易可以做了。Android->Server(RESTful)->Browser(Ajax),写在博客上的那么多文章相信可以帮到大家。

依赖于Ruby on Rails,PHP框架Laravel,Python WEB框架Django,很容易可以创建出一个不错的RESTful服务,当然JAVA也是可以的,只是对JAVA不是非常了解。当然,还有另外的神奇的一个,只是是跑在路由器上面的。。


与Linux

OpernWRT Linux

这个系统就表现得很有趣,只是在去年的时候已经开始计划着使用这个系统,没有听过?很正常,这个是运行在路由器的操作系统,最近似乎被用在小米的路由器上面了。

在上面能干些什么?

总之他就是一个跑在路由器上的Linux系统,所以你在你电脑上能干的东西 ,在上面都可以。

Raspberry Pi

这个大家都应该有所了解,作为一个不错的廉价的Linux平台,他一直很给力,所以我们需要的只是结合上Arduino来玩我们的想法。不过,这次我结合的是openCV

Raspberry Pi OpenCV,在树莓派上使用opencv

一切都来得很快,很突然。

Android

写Android程序似乎没有以前来得有激情,写得也不多,边学边写,Android+REST client实现了上面说的那个简单的RESTful。

也用Android设备连上了Arduino,这一切来得很神奇,出乎了我的意料。

openSUSE

今年发布的最后一个版本是13.1,只是由于AMD Fglrx Legacy驱动问题,我还停留在12.2。几次的问题,我还是openSUSE的拥护者,你还在使用Ubuntu么?

ThoughtWorks

这个算是今年中最有挑战性的工作之一了,也因为有了专栏《Ruby三日游》,ThoughtWorks是一个不错的公司,当然还有不错的入前培训——ThoughtWorks郑大晔校的一天。ThoughtWorks的面试很有挑战性,我的面试也有六轮,因为是校招补招的,想想那些校招的孩子比我舒服多了。觉得自己聪明,又对自己的技术有把握可以去试试,据说是全球最难的技术面试,在所谓分类在排行最难第二。第一呢?是另外一家咨询公司。

REWORK启示录

这是一个插曲,一个很不错的插曲,因为我们需要《重构》,所以我们也需要《REWORK》启示录

读书

本来是不应试写这个的,只是做技术的不读书不算是真正的做技术,而这点之所以放在这里,是因为看的很多不错的书,都是在ThoughtWorks的电话技术面试之后。因为面试的时候,HR问了几本书是否看过,我就意识到这些书会在接下来的面试中会有一定的作用,不过我想大部分的书大家都看过了。只是因为我在硬件和前端玩久了,很少写面向对象的程序了,也就显得有点不行了,在这些书中有:

  • 《设计模式》,经典,我想这个就不多说了,只是一直放在书架了,因为没有那么好理解。
  • 《设计模式解析》能更自然地理解设计模式
  • 《Head First 设计模式》一本不错的设计模式入门书籍
  • 《Ruby设计模式》提到了经典的23种设计模式以外的Ruby需要的设计模式
  • 《C和指针》在Pair完后,意思到自己在这方面不足,可能和上面的主题没有多大关系。
  • 《REWORK》在那之前看的,一本有点逆向思维的书,值得一看。

以及在ThoughtWorks的郑大晔校看到的几本推荐书目,列出的只是我有的。

  • 《卓有成效的程序员》TWer在Intellij idea用快捷键对程序进行重构,这本书值得去了解。(ps:可以用Emacs重构么)
  • 《重构》一本好书,特别是当你不理解你程序的时候,你就需要这本书了。
  • 《UML精粹:标准对象建模语言简明指南(第3版)》公司的首席科学家Martin Flower写的,也是《重构》的作者,今天刚到。
  • 《敏捷软件开发 原则、模式与实践》Robert C. Martin写的一本好书。

其他的还有诸如

  • 《驱动测试开发的艺术》
以下是来自亚马逊上自己的订单,成长离不开书籍。
  • 《恰如其分的软件架构:风险驱动的设计方法》
  • 《机器学习实战》《机器学习:实用案例解析》《特征提取与图像处理(第2版)》
  • 《华章程序员书库:领域特定语言》《编程语言实现模式》
  • 《Clojure编程》《Ruby元编程》<计算机科学丛书:php和mysql web开发(原书第4版)》《精通C#(第6版)》
  • 《C++ Templates中文版》《Cocos2d-x高级开发教程:制作自己的《捕鱼达人》》
  • 《SEO艺术》
  • 《Hadoop权威指南(第2版)(修订•升级版)》《R语言经典实例》
  • 《程序员的思维修炼:开发认知潜能的九堂课》《编程珠玑(第2版)》
  • 《七周七数据库》《7周7语言:理解多种编程范型》
  • 《具体数学》

还有几本无关技术的书籍,我想大家都没兴趣,这里就不列举了。

等等。TDD、结对编程、重构等一直都是敏捷开发所需要的。


总结

小小的总结一下,TW的offer让我觉得有些惊喜,但是在那之后则是想学习更多的东西。大部分是因为之前写的程序都不是面向对象,软件工程的有些方法变得不那么适用,也因此需要重新学这些东西。反而,现在也有了更多的精力和时间去学习,因为会用得到,而且也需要。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是设计模式一套被反复使用、多数人知晓的、经过分类编目的、代码 设计经验 的总结;使用设计模式是为了 可重用 代码、让代码 更容易 被他人理解、保证代码 可靠性;设计模式使代码编制  真正工程化;设计模式使软件工程的 基石脉络, 如同大厦的结构一样;并不直接用来完成代码的编写,而是 描述 在各种不同情况下,要怎么解决问题的一种方案;能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免引
单一职责原则定义(Single Responsibility Principle,SRP)一个对象应该只包含 单一的职责,并且该职责被完整地封装在一个类中。Every  Object should have  a single responsibility, and that responsibility should be entirely encapsulated by t
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强烈推荐。原文截图*************************************************************************************************************************原文文本************
适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以相互合作。
策略模式定义了一系列算法族,并封装在类中,它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,它是针对软件开发中经常遇到的一些设计问题,总结出来的一套通用的解决方案。
模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
迭代器模式提供了一种方法,用于遍历集合对象中的元素,而又不暴露其内部的细节。
外观模式又叫门面模式,它提供了一个统一的(高层)接口,用来访问子系统中的一群接口,使得子系统更容易使用。
单例模式(Singleton Design Pattern)保证一个类只能有一个实例,并提供一个全局访问点。
组合模式可以将对象组合成树形结构来表示“整体-部分”的层次结构,使得客户可以用一致的方式处理个别对象和对象组合。
装饰者模式能够更灵活的,动态的给对象添加其它功能,而不需要修改任何现有的底层代码。
观察者模式(Observer Design Pattern)定义了对象之间的一对多依赖,当对象状态改变的时候,所有依赖者都会自动收到通知。
代理模式为对象提供一个代理,来控制对该对象的访问。代理模式在不改变原始类代码的情况下,通过引入代理类来给原始类附加功能。
工厂模式(Factory Design Pattern)可细分为三种,分别是简单工厂,工厂方法和抽象工厂,它们都是为了更好的创建对象。
状态模式允许对象在内部状态改变时,改变它的行为,对象看起来好像改变了它的类。
命令模式将请求封装为对象,能够支持请求的排队执行、记录日志、撤销等功能。
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 基本介绍 **意图:**在不破坏封装性的前提下,捕获一个对象的内部状态,并在该
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为
享元模式(Flyweight Pattern)(轻量级)(共享元素)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结