Blog | Phodal - A Growth Engineerhttp://www.phodal.com/blog/2019-08-31T08:09:28.225564+00:00Blog编程的休渔期2019-08-31T08:08:34+00:002019-08-31T08:09:28.225564+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/rest-in-coding/在科技公司,诸如于 ThoughtWorks,当你在等待项目 / 两个项目之间 / 没有项目的时候,这段时间称为 bench (冷板凳,笑) 又或者是称为 beach。
Beach 的时候,你并非无所事事,有人会找你打黑工,有 HR 会找你看作业,你也会有想做的很多工作。这大抵是在 ThoughtWorks 做搬砖工人另外一个优点,你有时间休息。还有另外那个优点是,你可以很容易地换不同的颜色的砖搬搬。
在这种模式之下,人本身像敏捷的 sprint 一样,有 IPM,有 Retro,休息完了,再重整旗鼓。
## 真正意义上的休息
我们在 ThoughtWorks 的休渔期,那就真的是休息了——因为你已经离开了上一个项目,你大可以像我一样在这一个月里休上 10 天左右的假——如果你有 20 天年假的话。在这一做时间里,你真的是在休息,不用烦恼于项目——根本没有项目。
去年我和 @花仲马 在马来西亚玩的时候,正好是在项目上的时候,偶尔还得操心一下项目上的事情。
而我当成为一个前端开发人员,便成为了一个非常普通的开发人员,有了更多的时间——即是好事,又是坏事。不过,对于这篇文章来说,它就是好事。
## 爱好:做爱做的事
爱好成为了工作,并不是一种容易的事。特别是当你疲倦于业务逻辑的时候,想在技术上寻求一些突破的时候,你需要时间、时间,还有 TM 的时间。所以,你总会去 balance,到底是钱还是爱好?开心最重要,如果钱能让你更开心,那么肯定是钱重要。当你拿不到更多钱的时候,便会去找一些个人追求,寻找更高的目标。
编程,并不是你唯一的爱好。beach 的时候,适合于拾起你喜欢做的事情,比如 Steam 上的游戏。
又或者是其它你喜欢做的事情。我已经在不断将爱好(如绘画)融入了日常的生活,所以平淡的生活,就已经足够了。
## 寻找灵感
每次 beach 的时候,我总会带入上一个项目的诸多灵感到下一个项目。真实世界的编程有太多的无奈,你知道有一些技术,又或者是你能发明一些技术,它们可以改进系统的架构,让系统变得更好。可出于种种的原因,或是出于进度压力,或是出于系统稳定性的缘故,你根本没有多少地机会在现有的项目中实施,于是便放到了下一个项目中。
我在去年短暂 beach 过两次,每次大概一周左右:
第一次在年初,写了微前端框架 Mooa。
第二次在年中,我写了我的 markdown 编辑器 Phodit,作为我的第三本书《前端架构:从入门到微前端》 的编辑器。
## 为自己编程
在过去的一个月里,在 beach 的十几天里,我也不算太差,学了一些新的东西:
1. 出于某种目的,学了一下 Flutter,等我有空我写一个评测吧。
2. 重新学习了一下 React,尝试去搭建一下脚手架。
3. 在编写我的知识管理工具 Pholedge
顺带打个广告,其中的一个功能是 markdown 和思维导图的互转。
## 读书,学习
见下一篇文章(推荐几本书)。
## 思考下一步
TBC
## 其它
还有听了 Taylor Swift 的新专辑 《Lover》,以及注册了个抖音——分享一下日常编程。
## 结束了?
这些都不重要,Welcome to Join ThoughtWorks。从2016年11月期《技术雷达》看前端的未来2016-11-07T12:47:30+00:002016-11-07T12:47:56.832418+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/from-thoughtwork-techradar-tosee-frontend-future/> 本文仅代表 Phodal 的个人观点,来听听一个前端程序员的 YY。
新一期的技术雷达有点出乎意料,使用``new``标签的框架、工具、技术、语言等等超过了一半——Vue.js、ES2017上榜,Three.js凭着VR的火又上榜了,还有熟悉的Electron,以及微前端的概念。
让我们先看看一些技术亮点~~。
前端在可见的未来
---
在那篇《[最流行的编程语言JavaScript能做什么?](http://mp.weixin.qq.com/s?__biz=MjM5Mjg4NDMwMA==∣=405412226&idx=1&sn=3bc7a9c6afd166591a90723a1802ed99&scene=21#wechat_redirect)》的文章里,我们看到了JavaScript在各个领域的应用。在这一期里,仍然有很多亮点(new):
![Vue.js](http://articles.phodal.com/radar/vuejs.jpg)
**Vue.js**,如果你在使用Vue.js,那么你更应该找到相当的自信了,现在它已经被列入了评估期了。Vue.js是一个简单易上手的框架,并且相当的轻量,在最近的这段时间里,它发挥得相当的出色。
可惜,宝宝现在在用Angular.js 和 Angular 2,毕竟我现在是开发混合应用的。不过相信在半年后,Angular 2 和 Ionic 2是会上榜的。
**Ember.js**,尽管没有证据表明这个框架在国内将火起来的趋势,我现在还对这个框架缺乏深入的了解。
**ECMAScript 2017**,尽管我现在已经倾向于使用TypeScript,不过 ES2017 还是会用到的,只是我觉得 Babel 对我来说就是个坑啊
![PWA](http://articles.phodal.com/radar/pwa-general.jpg)
**Electron**,如果你是一个老读者,那么你已经知道我在很多场合里使用了这个框架,从NodeWebkit开始写编辑器,再到用Electron完成Growth 1.0的桌面版。
**Physical Web**,现在我们可以在浏览器上来控制真实世界,通过蓝牙低功耗技术。
不过与此相比,我更看好 **Progressive Web App**,毕竟他可以让Web应用接触到更多的底层API,而不是局限于蓝牙,还可以是Push Notification等等。
![VR](http://articles.phodal.com/radar/vr.jpg)
**Three.js**,它上榜的原因是因为 WebVR 的流行。这一点可以从我去年写的那篇《[Oculus + Node.js + Three.js 打造VR世界](https://github.com/phodal/oculus-nodejs-threejs-example)》,就可以看到一些趋势。这些就和现在的单页面应用一样,虽然运行起来不是那么流畅,但是还是行得通。因而在可见的未来使用 Web 技术来开发 VR 也有一点苗头,未来浏览器上应该是可以运行编译过后的代码,而不是在运行时。
**WebRTC**,它可以让我们在浏览器端实现实时视频聊天。第一次接触到这个视频流技术是在两年多以前,上一次接触则是在半年多以前使用 WebRTC + Oculus,你可以在我博客的那篇《[JavaScript在VR世界的应用](http://mp.weixin.qq.com/s?__biz=MjM5Mjg4NDMwMA==∣=405273259&idx=1&sn=521e128ee8579f20b31a4cfc47659f82&scene=21#wechat_redirect)》中了解到更多的详细信息。当然如雷达所说,WebRTC将会形成未来在Web上进行AR/VR 协作的基础。
接着再让我们看看一些架构上的变化吧。
前端引起的架构变化
---
在过去的两三年里,前端火得一塌糊涂——对于后端程序员来说,这有点 winter is coming 的感觉。我在那篇《[前端演进史](http://mp.weixin.qq.com/s?__biz=MjM5Mjg4NDMwMA==∣=400613181&idx=1&sn=0922531a39cf51ab7a12f625ae50609b&scene=21#wechat_redirect)》对前端的演进做了相当多的介绍,并在《[后台即服务演进史](http://mp.weixin.qq.com/s?__biz=MjM5Mjg4NDMwMA==∣=404975336&idx=1&sn=9905ac8d0a7803f1cde5926bb652bc2e&scene=21#wechat_redirect)》里对后台即服务开了个头,在这篇文章里让我们根据《技术雷达》来继续补几刀。
![前后端分离](http://articles.phodal.com/radar/frontend-bacekdn.png)
我们可以看到在中大型团队里,已经分解为前端和后台两个小组,沟通可以通过接口、契约等等的方式来进行。但是这一点儿也不精益,沟通在这时仍然是一个问题,让我有点怀念起之前前后端都做的项目了——自己可以创建自己想要的接口。
不过,这意味着前端和后台在技术选型上更加独立了。
### 臃肿的前端——微前端
![前端单体应用](http://articles.phodal.com/radar/fe-monolith.png)
在上一个项目里,我们一步步地将一个有近10年系统的系统替换掉。起初这是一个传统的Spring + JSP网站,然后我们用JSP创建了JSON API,后来创建了一个新的 API 来服务移动应用和单页面应用,再后来这个 API 被拆分成了几个 API。我们的后台已经成一个单体应用变成了一个微服务架构的应用,但是这一点并没有在前端上应用——前端应用正在变得难以维护。
因此在这一期的雷达里,你可以看到微前端的概念(micro frontends)。这也是在上一个项目里,我们尝试做的一部分,遗憾的是并没有成功完全实施。这是一个搜索类型的网站,网站的首页承担着大部分的访问量,而详情页的主要流量来源则是搜索引擎。我们在首页上使用jQuery + Require.js技术栈,而在其他页面(搜索结果页 + 详情页)使用 React.js,我们在最初的时候考虑过将详情页静态化——因为需要 SEO 的缘故,这样可以让我们降低 SEO 带来的复杂度。
![MicroServices](http://articles.phodal.com/radar/microservices.png)
后来,我也在我的博客上解耦了两部分,为了更快的访问首页的速度——将首页独立出来,不使用JS,直接使用Pure.css来担重任;在其他页面里使用Material Design Lite作为 UI 部分。
有一点值得考虑的是:对于微服务架构来说,在一个系统的不同的部分使用不同的技术栈是一种不错的体验;而对于一个前端团队来说,在同一个系统的使用不同的技术栈**就不是**一种不错的体验。
### API 设计——应该变得简单
![Backend](http://articles.phodal.com/radar/mean.jpg)
如我们所见的**Spring Boot**已经变成推荐采用的程度了,按雷达上的习惯用语:“我们已经在多个项目上使用这个框架”——反正我最近的项目都是用这个框架。如果你考虑使用 Java,那么你一定不要错过这个框架,以及使用这个框架来实施前后端分享。
对于大部分不需要考虑 SEO 的应用来说,将后台变成一系列 RESTful 的 API 并不是一件复杂的事,但是在后台 API 上的设计就变成一件麻烦的事。因此尽管在实见的过程中,有契约来作为保证,但是不一定是可靠的。作为一个前端程序来说,我们在调用后台 API 的过程中,总会遇到这样、那样的问题。除此,还有接口不好用的问题——“要是你可以在这里使用超媒体 API,那么我的代码就会更加简单了”。
因此在 API 设计上,雷达上给出了两个不错的案例:
#### 强化后台查询
![GraphQL](http://articles.phodal.com/radar/illustration-nobg.png)
代表的例子就是 Facebook 的 GraphQL,它是在 Facebook 内部应用多年的一套数据查询语言和 runtime。原本为了请求一个用户及其好友信息的请求,需要发起多个 API 请求。现在,我们只需要在客户端拼装好对应的 Query语句,在这个语句里将大部分需要查询的东西写好,即 JSON 格式的数据,然后发给服务端来处理。而在我们客户端上,我们所获取到的结果都是我们所需要的,不需要再做特殊处理了。
这一切,看上去很美好——除了,在客户端上拼查询语句。
过去,我们使用搜索引擎来搜索数据,就需要在前端拼好对应的 Query,再传给后台 API,由后台 API 返回我们需要的结果。在这个过程里,我们在Query做一些对应的数据处理。
反正,他们都是使用查询语言来搜索结果。如果你考虑使用 QL 的话,不妨做一层 Wrapper,以后好做迁移。
#### 前后端同时优化
![Falcor](http://articles.phodal.com/radar/falcor-services-diagram.png)
Netflix对于这样复杂的API请求下,创建了 自己的库Falcor——它可以从多个数据源获取数据,并在服务端上汇总成一个 JSON model;在客户端上,请求的时候我们只需要在请求的时候加上对应的参数即可——可以将多个请求合并到一起,也可以只针对某一个部分发出请求。这样可以减少发出多个请求,所带来的复杂度。
我想,一种最实用的做法:就是将一些更新频率较低的API合并成一个大的 API 了——大部分人都会这样做吧。
### 简化的后台——无服务器架构
![ServerLess](http://articles.phodal.com/radar/serverless.png)
除了上面的这些内容,后台还有一些东西还蛮好玩的,其中一个就是 Serverless 架构,即无服务器架构。不过,这种架构目前在国内运行起来还是有点难度的,缺少一系列的配套措施。如在这期的雷达上的Auth0可以为我们提供一个授权服务,以及AWS Lambda可以直接使用 AWS系列云服务来对数据进行处理。
我就不多说了~~,读者可以自己去看。
那么未来,你看想玩哪种技术。
访问 https://www.thoughtworks.com/cn/radar 获取最新一期ThoughtWorks技术雷达
(PS:如果你访问不了原文链接,可以修改DNS为 8.8.8.8,或者放在我的GitHub Page上的备份:http://radar.phodal.com/2016.pdf )
《不敢止步》读后感: CSDN与ThoughtWorks2014-12-14T03:43:51+00:002014-12-14T03:59:01.138741+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/after-cannot-stop/昨天花了几小时把这本书看了一下,显然我还处于书开始的地方,刚毕业半年,在ThoughtWorks也差不多有一年了。
#《不敢止步》读后感
这本书有一半半活脱脱地就是ThoughtWorks发展史,当然还有一半是CSDN发展史,所以这本书看上去就似乎这两家公司的人,或者给这两家公司的感兴趣者看的。这也就是你可以在这本书最后面所看到的两个公司的老大写的推荐。
回到开始的地方,差点和gigix一样——没有拿到毕业证。大学学的是电子信息工程,没用心学数学,真心感觉:
> 课堂是为考试作准备的,考试是为毕业作准备的。
于是,大学挂了六科,好在参加学校比赛拿了几个奖,可以消除挂科。
不过这些都是后话了,互联网公司好的一点是不看学历,但是真的是这样么?在进ThoughtWorks之前,不知道给多少家公司投过简历——但是大多数在看到学校的时候就被拒收了,虽然简历写得满满地有木有([RESUME](https://github.com/phodal/RESUME)),大概是因为西安有太多的重点高校(因为女朋友还在西安上学)。曾经还花了十分钟完成了新浪的前端面试题,但是感觉新浪的前端是不做UI的。现在就觉得,当然应该去参加BAT的面试,拿个offer,然后再在西安找工作一定会轻松。
时代已经变了,NodeJS出现的时候,你在玩,比你小几岁的人也在玩。
> 年龄虽然不再一样,但是编程的年龄是一样的。
这也就意味着,你很容易遇到一个比你年纪小,但是懂得和你一样的人。
##CSDN
CSDN确实是一个不错的网站,我们可以在上面了解一些资讯,写一些博客。无奈的是写得越多,就越容易被人找到把柄,不过这也是好事,当然这是后话了。
今天的CSDN已经不再和书中所写的一样,或许是因为我不再从上面获取一些知识了。一个社区里总会有好人总会有坏人,和之前看过的《迷宫行者》一样。越来越多地无良开发人员在践踏一个又一个的社区,一个又一个的网站。正如那句话所说,小孩才分对错,大人只分利益,或许我还是小孩子。
收过一期的《程序员》杂志,然而今天的《程序员》杂志已然休刊了。CSDN也不再是令人向往的地方,发展就如同一个大企业一样。
今天我们看到微软过去所做的一些事就觉得微软是一家怎样的公司,然而你在国内看到有哪一家公司会比微软做得好?
- 作为一个个体户,你要面对淘宝上多少的无良商家。
- 作为一个开发者,你要面对企鹅厂多少的"无心"抄袭——那些黑微软的一定不是鹅厂的。
- 作为一个普通人,你要面对百度上各种假药,假物。
- 作为一个企业家,你要面向小米的**虚情假意**——突然背后给你一刀。
- 。。。
上面的举例中,他们都是成功的公司,但是不是诚实的公司。
但是谁说Windows不是一个好的系统,让你爹妈用GNU/Linux,敲着命令行然后起一个应用么?Mac OS是一个不错的系统?但是这也意味着,你用不了一些常用的软件,甚至可能不支持你们家的音箱。你还需要为此配置一个专用的音箱,一个专用的电源,一个专用的iPhone,谁说中国山寨不好了,你去买买几根苹果的数据线试试。
- 用着QQ,就不应该骂鹅厂。
- 用着百度,就不应该骂百度。
- 用着小米,就要懂得随时会被抄袭。
当时,我们可以继续骂。而这些归根到底就是利益。
从停机刊开始就意味着一个时代开始了,一个时代结束了,好在今天CSDN还没有像雅虎一样。
同样的在书上,我们也可以看到多的ThoughtWorks的发展史。
##ThoughtWorks
> 我司是先开在西安office,然后关了西安office,开了北京office,接着再开了西安office。
那一代人见证了一个个office的崛起和发展,有意思地是这也是做服务的公司和做产品的公司的不同之处。
里面讲得很侧重的一点是第一个大客户**巨华**,只是我在百度和谷歌上找了很久还是没有找到这家公司。说明,这家公司又落伍了,也说明了他们不需要SEO。
咨询与交付是公司的主要业务之一,交付也会不断也积累经验。于是,做咨询才是一种挑战。因为你会遇到不同的挑战,针对于人,针对于事。而在书中,我们发现了有意思的一点是,做咨询的时候里面大部分都是年轻人。过去有太多的历史可以讲述了,而那个时候刚好是``陈皓``所说的《再谈敏捷和ThoughtWorks中国咨询师》的那个时代。
> 只有年轻人才会敏捷,中年了想的更多是稳重。
正如
> 小孩才分对错,大人只分利益。
我还是小孩,但是大人分对错么?还是说大人是有利益的? 看人吵架的时候,总会觉得有意思。会吵架的时候,说明是有利益冲突的。
> 红,绿,重构。
这意思大概就是犯错了,改证了,再反思。这是TDD,这也是正确的人生。
##其他
> 今天,故事才刚刚开始。我还在成长,还没到故事结尾的地方,但是已经读到结尾了。TWU与教育不公平(资料搜集)2014-11-03T14:31:07+00:002014-11-03T17:19:14.332428+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/thoughtworks-p3-education-inequality/在TW,P3是一个比较重要的,也算是比较有意思的东西。可以讨论各种不平等,在我看来对于当前的中国来说主要的一个问题还是教育不平等。其他方面,似乎没有多少值得过多的讨论的地方。因为这个远比其他来得重要的,如果一个人可以正确地思考,那么发家致富神马地都不是问题。
从各种不同的地方获得的关于几个不公平的地方。
- 大、小城市、城乡差距造成教育不公平
- 制度设计偏颇造成的教育不公平
- 贫富差距造成教育不公平
##城乡不平衡
> 大学扩招后,农家子弟高等教育入学机会得到了很大的改善,城乡差别被缩小。但这种差别正从表面的、总量的、宏观的不均衡,转移为隐性的、更深层面的城乡差距。体现这一变化的主要是城乡学生在高等教育系统中的分布。在中国的顶级学府里(如985高校),农村子弟的比例出现了极其明显的下降。例如在北大,1978~1998年间来自农村的北大学子比例约占三成,上世纪90年代中期开始下滑,至2010年,考上北大的农村子弟只占一成左右;2010年全国农村考生的比例是62%,考上清华的农村学生仅占总人数的17%。
从某种意义上来说,主要原因是由国家教育投入不公等造成的。由于主要的教育资金流向城市,使得最好的设施、师资和管理等公共教育资源流向城市。城市里少数重点学校和大多数非重点学校又严重不平衡,造成“择校”之风越刮越厉害。。而广大农村,特别是经济不发达地区的农村,由于长期投入不足,校舍简陋,师资质量差,适龄儿童入学率低,升学率低,教育程度远远低于城市,且形成恶性循环。老文盲没有扫除,又出现一批新文盲。
由于国家对于教育投入的不公——明显地生城市,轻农村,使得城乡教师薪资差距越拉越大,结果便导致优秀的老师不愿意走入农村。初出茅庐的专业师范毕业生,也是因为就业形势严峻,把特岗当成暂时的出路,积累了一定的经验也必定另觅高枝,优秀师资不愿进驻农村,进来也不一定留的住。
引自某些专家的话:
> 目前的一些体制是由于长期实施城乡分割的这样一种国民待遇所造成的。比如说我们在农村地区和在城镇地区并没有实行一个统一的平等国民待遇,而是说城乡分割的。大家知道农村的义务教育实施的水平很低,无论是教育设施、条件、师资力量还有经费的投入,各个方面,包括入学、升学以至于考大学,竞争难度要大得多。所以,国民教育的不平等性突出地表现在城乡的这样一个分割,这样巨大的差距,同时那些大都市和中等城市与小城市之间的差距也很大,所以要讲实施平等的义务教育制度就需要这个国家从教育法方面来进行根本性的重塑,让全体国民享有平等的接受义务教育的权力。同时,国家财政要保障那些落后的地区、贫困的地区,让那些学生能够获得起码的义务教育。
##贫富差距
> 国内中小学教育的另外一种趋势也不容忽视,就是不少学校和老师上课仅讲部分课程,剩下的课程需要学生们课后报补习班补课。中国的基础教育一直是一视同仁的精英教育,但国人以汉人为主,智商都差不多,绝大多数人都是老师指导得好些,、勤奋些,成绩就能上去,疏忽些就下去了。不像美国这样的移民国家,人种之间智商上的差异难以用教育质量和勤奋弥补。在中国上课不讲全,课后掏钱进补习班补,实质上是另一种形式的精英教育:即只有拼钱拼爹的孩子才能接受到完整的教育,没钱的被淘汰。这也是一种极大的社会不公!
学区房,从某种意义上讲,学区房是房地产市场的衍生品,同样也是现行教育体制下的一个独特的现象,随着社会竞争的日益激烈,家长为使孩子不输在教育的起跑线上,不惜花费重金购置一切属于教育质量好的小学学区的房产。天价学区房是教育的不公下的怪蛋,也是臭蛋,并且也是怪胎。如果没有教育的不公平,也不可能都去挤破头要上这个“北京最好的小学”实验二小,大家的选择机会也就会同等,不存在挤破头,也不可能去凑这热闹,哪里买房不好,还要到最好小学旁边去买房。
这样也就意味着有钱人家的孩子可以在有更多选择地情况下,接受更好的教育。
###教育制度
###就近入学
义务教育应该就近入学,但是就近的学校是优质学校,如果不拿钱,即便学校守在家门口也不能入学。笔者邻居家离中关村某小学不足50米,由于这所小学是优质学校,各方有钱人都盯着这个学校,愿拿钱让孩子入该校读书,于是学校便把附近的孩子排斥在外。邻居的孩子只好去离家约1.5公里,要过4个路口的小学就读。为了孩子上小学,家长既不能出差,又不能有病,常年风雨无阻进行接送。
###高考录取制度
我们一些大城市的学校是在过去计划经济时代通过剪刀差,从农村聚钱、借助全国一盘棋发展起来的,还有些名校是老祖宗留下的。但是,现在的招生制度并非凭分数择优录取。而是给各地方发放名额,在分配名额时,又不考虑人口和生源多少。这种招生设计给一些地方的高中生升大学造成困难。例如河南近1亿人口,每年高中毕业人数96万,能够升省外去学习的只有6000人,北大、清华在全国招生指标是8.3‰,在河南却是0.1‰,造成极大不公平。当地学生动情地说,高考对全国考生是走独木桥,对我们省的考生则是走钢丝绳。
###高等教育资源的配置严重不均
高等教育资源配置严重不均,给不少省区的高考带来很大困难。以河南为例,全国每1000万人拥有普通高校14.22所,河南却不到9所;全国本科与专科在校生之比为6:4,而河南仅为4.5:5.5,本科在校生,同全国差距甚大。从重点学校布局看,河南9800万人口,只有一所211院校(郑州大学)。985院校河南没有一座。省内学校少,外边重点学校又招的少,所以他们认为只好在走钢丝中互相挤压,或花大钱到大城市去读那些公办学府兴办的收费学校了。
##REAP
###职业高中
职业高中的教学质量普遍偏低,而且由于基础知识水平不足,学习的职业技能偏低,很难适应市场对高工资、高水平制造业工人的需求。
同时,统计数据显示,由于教学质量差,贫困农村职业高中第一年结束后的辍学率是22%,第二年结束后的辍学率高达61%。(陕西140所中职学校调查)
###初中阶段
贫困农村初中里出现焦虑和抑郁的比率很高,学业表现好的学生大约有30.2%的学生存在心里健康问题,学业差的学生67.4%有心理健康问题。(陕北80所初中学生调查)
贫困农村有超过30%的初中学生中途辍学
###小学阶段
贫困农村小学阶段出现的问题主要是落后的基础设施、师资、课程设置,以及营养状况差距造成的
贫困地区儿童33%贫血,而非贫困地区贫血比例只有是8%
农村地区儿童肠道寄生虫问题严重。贵州贫困地区9~11岁儿童有41.7%感染肠道寄生虫
###婴幼儿时期
由于母亲和婴儿营养不良,在陕南的1000名婴儿中,有55%贫血,70%在运动和认识方面发展迟缓.
##自身经历
看了之前REAP的关于城市与农村考上大学的概率,里面忽略了很重要的一点是,从初中到高中的入学率。我记得在我印象里能从初中考上高中的同学差不多只有1/3,更贫穷的地方呢。我们的高中有大概500人,能考上本科的大致有30人。再从大学说起,本身学校就比较差,我记得当时拿到offer时,倩云姐让我猜工资的时候,我预期的是实际的一半。所以当我和一些同学、同事分享学习经历,他们也没办法理解。
和之前很多意见相同的是,大部分的贫穷都是被注定的。出生于农村,周围的小伴伴大部分是留守儿童,出于经济原因大部分同学都只能是初中毕业。初中毕业的时候到过深圳打暑假工,高中毕业的时候到县城打暑假工,大部分的农民工省吃俭用也省不下多少钱去给孩子当学费,房租摆在那,吃住摆在那。生活就像拿着中国区的工资,出差到美国等,自己付吃住,能剩多少?于是付不起孩子的学费只能让孩子也出来打工,要么借钱,但是如果有那样的人际关系,家里也不会太穷,周围都是这样一个个活生生的例子。真正能改变命运的太少了,付出在这里远远小于回报。
再以教育为例,记得我小学基本上每年只能两个老师,语文老师和非语文老师,我们的数学老师带了除了几乎语文以外的所有课。比起某些山区还算不错,至少情况会好点,但是镇上的小学比我们学校好得不止一点点。这样的结果就是只能上镇上的初中,于是只能上镇上的高中。很多人都在努力地学习,但是因为没有合适的门道,这时的付出就远远小于回报。这时就像199x年写cgi,和今天用web框架的差距。
过去教育能改变命运,但是今天呢?大学仍有太多的同学为了生活费,学费而奔波,结果错过了更多的东西。特别是在我们学校,不说一般的学生,就说有比好的学校更多的实践经验,也找不到好工作。更好的例子便是我们住在西安的某个出租房里,我们需要比西安的同事赚更多的钱才能过一样的生活。
作为一个过来人,我觉得与受教育同样重要的是教会他们正确地独立思考以及自律。ThoughtWorks University 记出发去印度2014-10-12T14:38:19+00:002014-10-12T17:10:28.133929+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/thoughtworks-university-go-to-india/##ThoughtWorks University 记一:出发去印度
一开始没有想写太多关于这些在路上的内容,或者说也没有想着写太多的博客。最近,似乎又开始陷入所谓的思考。
##出发之前
###行李
之前多数人对于印度的吃似乎都没有好感,于是在他们的建议之下买了:
- 老干妈(x2)
- 泡面(x5)
当然还有
- 一些日常的零食(个人)
最近华丽丽的达到了18.6kg。
###行程
- 西安15:30-北京17:20(CA1224)
- 北京20:80-德里1:30(次日)(CA947)
- 德里-浦那
##出发去印度
###一、西安到北京
我们就在1点的时候到了西安咸阳机场,行李可以直接转运到德里(良心啊),就省去了很多功夫。于是check-in进去,在里面找了个充电头写了会代码。不得不吐槽的一点是: 西安的机场的插头已经被插烂了。
紧接着,**飞机延误半小时**,最后终于在16:01起飞,在17:34到了北京,于是就在北京机场找了个地方吃了点东西。
###二、北京到德里
1. 北京的T3航站楼很大有木有?
2. 北京的航站楼很远有木有?
我们在机场中坐了一会就check-in,接着:
- 飞机等待文件签署
- 飞机卫生间有问题
- 更换另一架飞机
不得不说的一点是: 换个飞机,摆渡车把所有的人载了进去重新check-in,真没人性。于是**飞机晚点了三小时**。
###三、德里到浦那
等我们到德里的时候(飞机降落)已经是早上四点(印度时间),接着拿完行李就4:30,于是我们错过了航班。于是在机场各种奔波很久之后,我们还是决定重新买票。。
于是,**飞机又晚点了半小时**。不过,这个所谓的什么航空公司提供的东西还是可以的。
##印度第一印象
印度算是一个IT大国,从我们在飞机上遇到的中国人也好,印度人也很,很多都背着电脑包。虽然,最近很多公司,如雅虎在印度裁员,但是还是一个IT大国。从机场也好,看到的APP一点都不比中国差,很多看上去似乎比中国强。
我们在前往浦那的航班中,遇到了一个中国人,也是搞IT的。他的问题便是: 你们公司搞什么软件的,一眼就看出来有木有。还有之前和我们一样从北京到浦那错过航班的一哥们也是。他的经历就更:
- 深圳往北京: 延误
- 错过北京往德里的航班
- 剩下的就如上...
我们所住的地方是一个离机场比较近的地方,然而,周围似乎各种乱,比沙井国际还乱。各种小孩问你要钱,一不小心就被抓伤了。——"因为我们成为了外国人,所以我们有钱"。如果周围都是这样还好,看上去像是贫民窟,只是有那么多的汽车等等。
ThoughtWorks 待遇与面试2014-08-20T01:20:25+00:002015-06-21T10:19:01.742005+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/thoughtworks-salary/##关于ThoughtWorks待遇
ThoughtWorks是一家全球软件设计与定制领袖企业,2013年,ThoughtWorks在美国、英国、澳大利亚、加拿大、德国、印度、巴西、南非、中国、乌干达等十个国家成立分公司,聘用超过2000位行业精英,通过全球资源共享和人才交流服务全球高端客户。ThoughtWorks的业务模式主要通过咨询帮助改善企业的IT组织,改进软件开发方法,以软件带动企业业务发展。ThoughtWorks以发展高、精、尖的创新业务设计和创意咨询为主要业务内容,以高端人才带动整个产业的理念革新和方法进步,促进整个产业链的健康生态循环。
这并非一篇真正关于待遇的文章,原因只在于为了试试SEO的排名。排名第一的目前是一篇与ToughtWorks待遇无关的文章,而且那还是一篇与待遇无关的文章。当然我是想去澄清一些事实,下面的数据是来自百度百科的,我想你看了一遍又一遍,一定会很迷惑。
## ThoughtWorks工资待遇-所有职位
``以下数据来自若邻网,与本站无关``
职位名 | 平均工资 | 月薪范围
------|---------|---------
Consultant |¥20000 | ¥18000~¥25000
QA Lead | ¥15000 | ¥13000 ~ ¥20000
软件开发工程师 | ¥12000 |¥10000 ~ ¥17000
Application Dev| ¥11000|¥9000~¥16000
##ThoughtWorks公司及待遇情况
``福利待遇远不如国内的华为等,这是属实的``。(ps: 偷偷地告诉你们,很多同事从华为过来,工资比原来低不止一点,但是可以吃水果,可以不加班。)
1.由于公司主要业务以咨询和交付为主,公司待遇可能会比不上BAT三巨头,又或者是第二梯队等等。但是上面的名单有些是在ThoughtWorks的客户名单中,如果你能想到这其中的问题的话(ps: 见ThoughtWorks官司网: [敏捷用户故事](http://www.thoughtworks.com/clients))。
2.加班这种事,至少近一年来,我没有遇到过。至于劳动强度,如果你过去经常加班,那么每天做运动就算是劳动强度。
3.与华为相比,可能"成长机会"不如华为:
- 如果你所要的成长是工资上的,而不是技术上的话。
- 如果你是期望不写程序就可以有高工资。
4.多数外企的档案托管单位不是在Fesco就是在中智,国家政策相关。不过,如果你想要拿绿卡是不是会更轻松。
5.说说ThoughtWorks的几大语言C++、Ruby、Java、C#、Javascript,比较小众的算是Ruby了,但是如果你是做WEB开发的话不会没听过。但是原来的贴子里的,是学校是刚出来的。
##面试
面试的难度是众所周所的——美国某知名博客评出的十大入职面试最难公司
- Thoughtworks(国内可能会比国外少两三轮)
- 谷歌(将会有多轮面试,内容涉及智商测试、随即数学问题等)
- Unisys(将会有多轮面试,设计多位面试官,整个面试过程长达数周)
- Rackspace(可能会问道一个非常复杂的技术问题)
- Cypress Semiconductor(应聘者需要通过四轮面试来证明其技能)
- bazaarvoice(将会有一场非常困难的面试)
- Juniper Networks(将会与面试官进行多轮面试)
- Sapient(多轮技术面试,涉及一场笔测)
- Facebook(在技术测试中可能包括现场设计产品等)
- 亚马逊(多轮面试,有些可能会持续一整天)
So,``面试的过程可以说是极为变态的``,但是这样的结果是:``你周围都是有技术相当的Geek``。说**严酷**可能也不为过,然而对于技术生涯来说是值得的。我猜如果你能通过ThoughtWorks的面试,那么我想谷歌对于你来说问题也不算太大。
- 如果你是想提高技术,而不是更高的工资。
- 如果你不想再为了工作而工作。
弱弱的说一句,如果你刚工作不久,HR可能会知道比你还多的技术栈。
##关于我
毕业于``西安文理学院``,我猜你没听过这所在所谓的国家院校排名,并列倒数的学校。So,这里:
- 不看学历,只看你对于技术的热情。
让我比较佩服的是,这里不仅仅只有技术。
欢迎来加入我们: [http://www.thoughtworks.com/join](http://www.thoughtworks.com/join)
一个喜欢技术的Geek,喜欢开源,这是我的github: [https://github.com/phodal](https://github.com/phodal),当前是我的博客。
Thoughtworks 三大支柱 即p1 p2 p32014-01-26T17:26:37+00:002014-05-14T06:19:02.056304+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/thoughtworks-p1-p2-p3-three-pillar/一直在内部邮件看到Thoughtworks的P2,但是一直不知道P2是什么,网上搜索的结果也不是很明确。在官网上看到的就写了出来
##Thoughtworks P1##
P1应该主要由市场人员来决定的。
- 经营可持续的业务
- Run a sustainable business
##Thoughtworks P2##
P2似乎才是作为一个Dev需要去考虑的。
- 推动IT变革,追求软件卓越
- Champion software excellence and revolutionize the IT industry
##Thoughtworks P3##
P3在天朝有点远。
- 积极提倡社会和经济公正
- Advocate passionately for social and economic justice.新人看ThoughtWorks发展2014-01-26T16:38:58+00:002014-11-15T03:36:46.992080+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/think-about-thoughtworks/我觉得我们没有理由去稀释那些负面消息,一个企业肯定会有负面消息,我们试图去稀释负面消息的事情总会有被群众知道的一天。
Google上关于ThoughtWorks的相关搜索
thoughtworks待遇
thoughtworks薪水
thoughtworks面试题目
thoughtworks 中国
thoughtworks薪酬
thoughtworks 面试
thoughtworks笔试
thoughtworks工资
thoughtworks怎么样
thoughtworks招聘
主要原因不在于面试什么的,而在于我们没有能拿出手的东西。换句话说,大部分人搜索Thoughtworks的时候都是集中以几上几点为主。
同时我们也没有公布我们想要的东西给那些想了解我们的人,在内部来说我们够开放,在外部来说我们不够。我们没有在将我们的一些可以分享的东西分享到外面,
作为一个新人,我说说我所知道的TW的优势没有发挥出来。
- ThoughtWorks技术雷达
- ThoughtWorkers的博客
- ThoughtWorks 书籍
- ThoughtWorks session
1. ThoughtWorks 技术雷达。技术雷达我觉得没有一点影响力,在我加入Thoughtworks之前,还不如我书架的《领域特定语言》。所谓的技术雷达虽然不错人,但是半年才一次,一点都不行,而且发行的还是PDF。我们要做的应该是把一章章的东西放到网上,应该是有一个话题时可以及时放到网络上去,那么搜索引擎就可以早点知道。我们对技术雷达一点儿也没有达到雷达的及时捕捉作用,先一篇篇来,而且再年度一期。像书本一样的定期,有点把想了解我们的人隔远。而且以博客的形式一篇篇发表,才能让真正的受益者可以及时查阅到。
2. ThoughtWorkers 的博客。并不是所有的作者都会去维护自己的博客,我们也没有一个足够好的博客来展现我们的全部,好声音给人的感觉是不行的。我们要做的应该是把博客复印过来,而后用外链给予补偿。要提高博客的影响力,要用正式一点的方法,放在github上可能不是很好。我们需要一个类似于wordpress的博客有标签,在某些方面有足够的文章,如敏捷开发,这样的话想学相关知识的人才会真正受益。
作为一个博客的作者来说,我并不喜欢在某个特定的地方写博客,在自己的博客上可以自由自在的写。复制对于我来说是可以接受的,如果有指出来源。
3. ThoughtWorks 书籍。我们没有将我们相关的书籍放到一个列表上,这样一般人怎么会从中了解到我们,我们需要有一个放置书目的网页还有相关介绍。
4. ThoughtWorks session。ThoughtWorks session 一些session都可以分享到外部。ThoughtWorker 技术博客与SEO2014-01-20T21:11:32+00:002015-08-24T14:37:43.799818+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/ThoughtWorker-technology-blog-seo-art%2520/技术博客与一般博客不同的是,通常来说要写一篇技术博客的时间可能会很长,意思主要不是说写博客说的时间,而是说从一篇博客到下一篇博客的时间。所以,很容易出现的情况是——我们写的博客没有出头之日,不仅在谷歌上没有一个好的排名,而且容易失去所谓的关注。作为一个准ThoughtWorker,我们更需要去写博客。
至于为什么需要写博客,可以看看这篇博文:
[《REWORK》启示录 招聘笔杆子——成为笔杆子][1]
如果需要一个排版比较精美的,看这个
[《REWORK》启示录 招聘笔杆子——程序员为什么值得写博客][2]
##技术博客##
要写一篇技术博客可能不是一件简单的事, 当我们还只是一个初学者的时候,我们的写作能力还被限制在我们初中高中所限定的写作上时。我们需要去一点点慢慢去思索那些东西,作为一个写作的人,我们不需要去考虑逗号,句号,这些只会出现在高中、初中语文课上出现的东西,我们需要的是去下手写第一篇。
##技术博客与SEO##
技术博客的SEO与一般的网站SEO不同,首先我们可能没有足够的内容,其实我们又没有足够的外链。两者都是SEO的一个软肋,其他的基本的SEO的东东,在我们使用一些博客程序如Wordpress等等的时候,都会为我们考虑这些基本的内容。
技术博客和一般的博客的不同之处,在于我们写的博客多半要靠搜索引擎来链接进来。我们在写博客的时候可能会希望会有游客来留下他们的评论,无奈的是太多的人只看不写。
##基本的SEO策略##
###keywords与description###
这个算是最基本的SEO策略,将tag丢到keywords是一个不错的想法,至于要怎么写可能可以随意,因为网上有很多。
###标题###
最有意思的部分,莫过于标题了。
我们在搜索我们需要的东西的时候,通常是类似于这样的:cucumber capybara,而不会去搜索:Cucumber+Capybara的BDD开发例子,当然我们也可以写成一个简单的Cucumber+Capybara的BDD开发例子,明显对于人来说是比较有利的?
只是我没有看出来这个对于读者来说哪里有利了,我们的主要对象是Google,或者说用Google搜索那些他们需要内容的人,而我们写的又是技术博客。我们的cucumber+capybara不是写给那些不懂程序设计看的,而是有针对性的写给需要cucumber+capybara的人看的。
所以,你可以看看为什么这篇的标题是如此的奇怪,你还需要为你写的博客取一个英文的URL。
**值得注意H1、H2、H3的使用**
###复杂内容多文章###
强调这个的原因可能在于这是写给搜索引擎的看,至于好不好可能是另外一个问题。问题的关键在于强调我们应该适当划分文章的主题,比如有这样一个主题:用Rails搭建CMS,如果我们用一篇文章来写这个可能是不可取的,我们要写的内容太多了,不过你也可以不在意这个。为我们的这几篇文章取不同的小标题,这样的话我们就能有一定的关键词。
###Sitemap###
这货很重要,因为这是我们站点的一张地图,如果用的是Wordpress等等的博客程序的话,可能不需要考虑这个,其他的可能需要自己去手动添加。可以试试在一些网站的domain后面添加sitemap.xml,看看是怎样写的。
##提高PR的SEO策略##
PR值对于一个技术博客来说,可能很重要也可能不是很重要,至于重要不重要的一点在于读者对于你的重要程度。换句话说,你需要读者,读者也需要你,但是读者总是看不到想要的东西,而你也没有办法把想要的东西放到他们面前。
###外链###
总的来说这个可能有点缺德,但是一种比较理想的方式就是在诸如CSDN、博客园上写一些文章,在文章中放上链接到自己的博客。值得注意的是,你需要保持自己的博客上文章数比CSDN等上面的博客至少多一半,否则很有可能被判定为子站。
###与GITHUB关联###
为你与的开源项目链接上一个说明其他无关紧要的东西,比如思路,发展等等。也可以写写其他的,总之你需要一个别人能访问到的一个链接,提供流量。
##其他的SEO策略##
##SEO工具##
###Google Webmaster##
Google Webmaster是一个不错的分析工具,在一些基本的东西上,如Keyword,Links等等。
###Google Analytics###
这是一个好的工具,问题是一开始的时候访问网站的人,可能会很少,没有我们没有吸引更多的人们来观看。
[1]: http://www.phodal.com/blog/think-of-rework-be-a-writer/
[2]: http://blog.csdn.net/phodal/article/details/17076073ThoughtWorks 实习记——重构与Intellij Idea初探2014-01-18T17:28:51+00:002014-09-21T01:20:37.681338+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/thoughtworks-refactor-and-intellij-idea/是时候讨论这个Refactor利器了,最初看到这个重构的过程是从ThoughtWorks郑大晔校开始的,只是之前对于Java的另外一个编辑器Eclipse的坏感。。这些在目前已经不是很重要了,试试这个公司里面应用广泛的编辑器。
##开发过程##
开发的流程大致就是这样子的,测试先行算是推荐的。
编写测试->功能代码->修改测试->重构
上次在和buddy聊天的时候,才知道测试在功能简单的时候是后行的,在功能复杂不知道怎么手手的时候是先行的。
##Interllij Idea重构##
开始之前请原谅我对于Java语言的一些无知,然后,看一下我写的Main函数:
package com.phodal.learing;
public class Main {
public static void main(String[] args) {
int c=new Cal().add(1,2);
int d=new Cal2().sub(2,1);
System.out.println("Hello,s");
System.out.println(c);
System.out.println(d);
}
}
代码写得还好(自我感觉),先不管Cal和Cal2两个类。大部分都能看懂,除了c,d不知道他们表达的是什么意思,于是。
###Rename##
**快捷键:Shift+F6**
**作用:重命名**
- 把光标丢到int c中的c,按下shift+f6,输入result_add
- 把光标移到int d中的d,按下shift+f6,输入result_sub
于是就有
package com.phodal.learing;
public class Main {
public static void main(String[] args) {
int result_add=new Cal().add(1,2);
int result_sub=new Cal2().sub(2,1);
System.out.println("Hello,s");
System.out.println(result_add);
System.out.println(result_sub);
}
}
###Extract Method###
**快捷键:alt+command+m**
**作用:扩展方法**
- 选中System.out.println(result_add);
- 按下alt+command+m
- 在弹出的窗口中输入mprint
于是有了
public static void main(String[] args) {
int result_add=new Cal().add(1,2);
int result_sub=new Cal2().sub(2,1);
System.out.println("Hello,s");
mprint(result_add);
mprint(result_sub);
}
private static void mprint(int result_sub) {
System.out.println(result_sub);
}
似乎我们不应该这样对待System.out.println,那么让我们内联回去
###Inline Method###
**快捷键:alt+command+n**
**作用:内联方法**
- 选中main中的mprint
- alt+command+n
- 选中Inline all invocations and remove the method(2 occurrences) 点确定
然后我们等于什么也没有做了~~:
public static void main(String[] args) {
int result_add=new Cal().add(1,2);
int result_sub=new Cal2().sub(2,1);
System.out.println("Hello,s");
System.out.println(result_add);
System.out.println(result_sub);
}
似乎这个例子不是很好,但是够用来说明了。
###Pull Members Up###
开始之前让我们先看看Cal2类:
public class Cal2 extends Cal {
public int sub(int a,int b){
return a-b;
}
}
以及Cal2的父类Cal
public class Cal {
public int add(int a,int b){
return a+b;
}
}
最后的结果,就是将Cal2类中的sub方法,提到父类:
public class Cal {
public int add(int a,int b){
return a+b;
}
public int sub(int a,int b){
return a-b;
}
}
而我们所要做的就是鼠标右键
**Refactor->Pull Members Up**
###Pull Members Down###
将方法推迟到子类
###其他###
正在补充学习中
##结论##
Intellij Idea自带的重构功能似乎真的很强大,其他目前感觉很强大的东西,比如Live Template,丢到下次讨论。thoughtworks buddy2014-01-14T15:55:49+00:002014-05-14T06:10:42.596013+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/thoughtworks-buddy/每天不得不走二十分钟的路去赶个公交车, 然而上面还是到处都有人,早上算是个例外,起床得很早,只是为了走去上班。每天我们都在人海是穿息,总是喜欢放假的感觉,不喜欢休息的时候,仍然需要去逛街。过节的时候应该有过节的样子,上班的时候应该有上班的样子。
----------
##ThoughtWorks Buddy##
不仅如此,公司还会为每一个新入职的员工提供一个Partner,ThoughtWorks称之为“Buddy”,“Buddy”会采取一对一的方式为新员工答疑解惑,使其能更快的融入到新项目和公司文化中。
我的buddy是王超,从某种角度上来说,很大一部分原因是因为我们两有很多相似之处,确实在几周下来有如此的感觉。只是有时候很容易可以感觉自己在技术的不足,只是技术在更多的时候可能没有那么重要。不知道从什么时候起,开始感觉技术在市场的面前可能是次要的。一流的市场,二流的技术会更容易赚钱,似乎是看Oracle的发家史里面说的一句话,似乎也是埃里森说的。
feedback是ThoughtWorks中一个不错的东西,在我们平时很少遇到的东西。
##less well##
###不喜欢提问###
我一直是一个不喜欢提问的人, 似乎是习惯了,也似乎是淡然了。找不到提问的方式算是一个原因,另外一个原因可能在于自己更喜欢自己去探索一个问题的真相。
###内向###
这一点算是一直都有的,有一些可能是家庭原因。不过更多的可能是在过去到现在的很长时间里,没有一个可能倾诉的人。记得小学六年级的时候, 学校认识的人有一大堆,从一年级到六年级,各个班级都有几个认识的人。
##well##
###写博客###
算是自己的一个优势,不过一直在努力平衡技术、写作、设计三个方面的能力。有一天发现三个都在不断地强大,这个算是很好的一点,技术开始与写作相辅相成,一开始的目标算是完成的,还有一点是黑客与画家?
###suggestion###
- 用博客扩大自己的影响力
- 更加主动
##Thanks##
自己的buddy很负责,似乎有时候也和自己有点像。ThoughtWorks实习两周——我所理解的敏捷开发2014-01-12T16:10:28+00:002014-05-13T17:36:32.622765+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/apprentice-in-thoughtworks-two-weeks-what-is-agile/我所理解的敏捷开发应该是快速的,而后我发现所谓的敏捷并不仅仅只是在开发上面,还包括其他很多东西。或许是之前对于软件开发没有一个系统的认识,敏捷应该是一个过程。
##开发流程##
这样一个开发流程我们可能在不同的书上看到过这样的一个过程,如之前推荐的 Robert,C,Martin的《敏捷软件开发 原则、模式与实践》,英文名《Agile Software Development—Principles,Patterns,and Practices》,似乎这本身将我们之前上过的内容都很好地体现了出来,一本不错的好书,虽然包含了很多书的内容。在有些方面可能不是很具体,但是是个不错的融合性书籍。
###开发流程###
传统的开发流程
设计->编码->测试
TDD的开发流程
测试->编码->重构
两周的时间里和两个前辈(暂且这么说,找不到别的合适的词)pair,也就是结对编程,似乎是两个不同的过程。只是TDD在有时候并不是很重要,从理论上来说TDD可能会导致效率降低,但是可以保证程序的功能是正确的。做个小的总结吧,TDD有下面的优点:
- 可以保证程序是正确的
- 是重构的基础保证
- 及时交付,即使现有的程序很ugly
敏捷开发很重要的一点就是持续交付,而TDD正是这样一个不错的保证。
TDD的过程就是:红->绿->重构
- 编写测试
- 写出符合功能要求的程序,虽然是臭的
- 通过测试
- 重构代码
###设计模式###
之所以在这里提到这个是因为感觉这方面很重要,不过如果一开始以设计模式为出发点,可能就变成传统的开发流程,而不是TDD。也就是先设计,再编程 ,这个和TDD有点距离。两者间的好与坏,可能没有办法那么快区分,没有哪一个是完全正确的,都只是相对的。
设计模式是在设计的过程中一点点累积起来的,这些会体现在过程中。
还有很重要的点是,**代码是写给人看的**。ThoughtWorks郑大晔校的一天——最后的礼物2014-01-11T21:13:13+00:002014-05-13T18:31:03.745597+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/one-day-of-thoughtworks-last/每个人都为自己在这几天的学习中收获了应有的东西,有些可能是在做story中收获的,有些可能是在这些之外,只是有时候我们不得不保持继续学习的姿态,这才是我们真正需要的东西,keep study。
##说说bbs##
最后的bbs,我想不出来会有怎样的理由让大家去使用这个bbs,只是这是一个比较容易理解的东西。在最后的课上说的是deploy,只是对这个东西很熟悉了。从大一开始使用GAE的时候,就慢慢在好友的帮助下慢慢熟练了这些过程。
大家一个个bug的修复了过来,其中因为许多原因可能有的同学没有参与,他们也许有不同的原因,如同我一样需要去面对期末考试。过程有点艰辛,只是有些东西如果课堂上给人带来的欢乐一样。如果我们的大学可以像郑大晔校这样欢乐的上课,大家都不会为期末考而担心挂科,不过似乎多数人都是学霸。。。除了我。。。。。
###LNMP###
算是对这东西比较熟悉,对Java的印象因为不好,就没有多下功夫了也不去想怎么好好部署。所谓的先入为主我想在自己身上算是表现得淋漓尽致,特别是在项目组的项目上。Java适用于企业级,但是企业级给人的感觉就是庞大,不过也不赖。各种软件工程方面的思想和方法都从Java上出来的,似乎自己应该改变在这方面的偏见。
Linux+Nginx+MySQL/Maria DB+PHP/Python,这个在自己的博客上以及另外的一个博客上用得比较多,至于为什么不是apache,我也不知道,一开始没用,后来也没用,习惯了Lnmp。Maria DB作为另外一个开源的MySQL实现,在万恶的ORACLE了SUN之后,在谷歌的Android的Java问题等等出现后,我想我们应该考虑用Maria DB替换到MySQL。PHP在某种程度上来说优化比较多,作为运行环境很不错,至于开发上如果没有一个比较好的框架及包管理可能比不上流行的MVC框架,如RoR。但是Laravel及composer的出现,我想我们需要重新审视一下这个为web而生的语言。
###Tomcat+Linux+Apache+MySQL###
对Java的世界不是很了解,但是一开始对这些的印象是企业级的,为什么是企业级我想我也不知道。不过,企业都比较喜欢用稳定的产品,也许是因为他们开始被使用得比较早了,就这样子。这是一个合理的Java web项目的构成,现在是一个好的时间来好好看看Java世界的精彩及稳定,不过在个人的使用上我还是比较喜欢LNMP的。
##毕业了##
最后我们都得到了一个毕业的bage,好像是这么叫的,胸章。这东西在很多TWer的电脑包上似乎很常见,所以在最后的开始的地方,在包上弄上了这个东东,感觉似乎还不错。
总喜欢把毕业叫做一个新的开始,这确实是一个新的开始,在以前总需要去打暑假工来赚钱。现在也是一个新的开始,不会有结束的地方。即使到了我们退休的那一天,我们也需要一个新的开始,我们又开始了一种新的生活。而这也算是,在加入TW以前,我们需要一些些小小的课程。我们不得不去感觉Trainer的辛苦,他们与她们的努力,让一代又一代的人会有更好的进步。
这里的毕业说的是Thougthworks郑大晔校的毕业,这样的形势很不错。好的公司会有好的公司文化,不过似乎在好点的企业里面都会有的。只是这是在告别校园课堂之后的公司,值得去好好珍惜的公司,仅此而已。
##规划##
或多或少都有对于未来的打算,这也是我们对于自己重要的一些内容。不过这些东西也是公开的,如同之前的retro一样,这样或许就更有动力。
####3 months####
三个月之后,自己还是自己不会有太多的改变,在这个时候应该完成的东西应该就是毕业设计了,除此之外需要完成的就是独立做story。我比较倾向于成为像trainer一样的,可以教会别人学习的东西。需要有更多的学习能力,以及更敏锐的观察力才会知道别人需要什么,以及自己真正需要的是什么。因为我们可能还需要去教会别人,只是或许这样一个时间对于自己来说不是很长。不过空上算是一个额外的目标,首先我们需要完成的是毕业设计。
####6 months####
六个月后,我想我已经毕业了,接近入职了。所以顺利毕业、入职算是比较重要的,除此之外还有说好的毕业旅行。只是想着出去走走,不想一直待在一个地方,想去那些美好的地方看看风景。看看不同的人会有怎样的不同的生活,我们也需要一个新的开始,从一个休息的地方开始。
####1 year####
一年之后,我们都成为了熟练的TWer,只是我们不够熟悉,所以我们需要更加的熟练。因为这个依赖于太多的东西,所以变得有些不现实的计划。只是我们知道的是我们都要好好努力,因为别人都在不停的努力,更加努力地工作着。
####2 years####
两年之后,平时的写作足够让自己成为一个熟悉的写手,现在还不算是一个合格的作家。虽然开始考虑读者需要什么,用户需要什么,但是还是没有写出足够好的东西——所谓的足够好是可以用于出版之类的。所以两年后的目标就是,PR值达到3,似乎这个不是很难,只是按照现在的步伐可能不会那么快,但是只有试试才知道。这也就是意味着我们要下更大的功夫,不过越写这些东西就越简单。
##技术以及爱好##
最好的东西莫过于我们可以和同样喜欢技术的人一起讨论,这个可能平时在学校中体会不出来,相对于自己来说主要是因为身边没有可以讨论的人。在这里遇到了像star以及孟大神同样是玩硬件出身的孩子,我想环境会比其他东西重要。工资高一点似乎不错,但是注意一下对技术的热情,保持热情是很重要的。对于现在的自己来说不一定要成为什么项目经理,但是要保持对于技术的热情。
##学习##
这里分享一些有用的东西,如果你觉得可以学到的话。
- TDD
- 重构
- 设计模式
框架本身没什么好说的,如果还要说的话,那就提供几个不错的可以提高效率的工具。
- 如果你用Java的话,可以试试Intellij Idea的重构
- 用键盘会比鼠标快,如果你和我一样也用过Emacs的话
- 更多的记得快捷键,可以提高效率,除非在玩游戏
工作中基本上都Mac,几个不错的Mac工具
- Mou 写Markdown的时候,一个不错的工具
- Alfred 快捷键工具,和Launchy差不多,如果你不用Mac的话可以试试
- iTerm 比系统自带的Terminal会有更好的效果ThoughtWorks 实习记——第一天2013-12-30T16:15:45+00:002014-05-13T13:59:25.616087+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/apprentice-in-thoughtworks-first-day/似乎实习的日子才刚开始,不过有些事情很有趣,有些东西相当不错,比如说手上的这台电脑。足够大的屏幕让我们可以让思维有更大的空间,这也是这些空间对于我们的好处,不过这也有一个缺点就是写东西的时候,似乎会感觉有一点点。我们想要的不就是这些么,那就足够了,那么我们去想象这一片空间吧。
##上班路上##
原本预计能早点到公司的,但是既然用原本预计的话,那么结果就是迟到了。我不是故意的,似乎没有预料到公交车会变得那么长,没有预料到上个电梯也会排队。总之,结果就是迟到了十几分钟,没想过这就是迟到的第一天。好在我们公司并不打卡什么的,因为那些东西没有一点实质性的用处,除了限制员工。
所以,迟到的人有很多,只是一开始没注意到,但是发现背后的背包都是ThoughtWorks的时候,我意料到了。所以,似乎也没有那么多担心了。而且我去的时候HR还没到。我们都不是睡懒觉的,只是公交让我们无奈了,所以不得不感慨明天背着个电脑去挤公交的时候会是怎么样的。所以,还是计划着明天还是早点去看看新闻吧。
##MacBook##
这部分只所以用这个作标题的原因是,剩下的时间都在折腾这个,所以也就用这个标题了。虽然用过一段时间的mac os,但是很久没有用之后,还是把这些东西都忘了。只是似乎有足够的时候来学习,也不算是足够,不过光配置密码就让我郁闷了很久。到底是改不了密码,到底还写的都是英语。只是因为没有安排任务,所以也就过得很轻松。
MacBook Pro的屏幕足够的大,2880x1800,至少比我原来的屏幕大上了一倍,因为原来的是1440x768这些参数可能没有那么有用。但是屏幕大了,也就觉得简单了,看的东西也就多了。
配置了一个早上没有什么明显的结果之后,下午就按照自己的意思来搭建自己的开始环境。如emacs,homebrew等等,毕竟这些东西都是会用到的。当然还有用于搭建ThoughtWorks BBS的环境,gradle,mysql等等。似乎又烧了一天脑细胞,然后自己似乎应该好好看书。
Mac的触摸板就是一个有趣的东西,至少要花点时间去学习这个,似乎手势在这上面用得很多,只是都是不熟悉的。可能这些东西原本就存在于自己的电脑上,而没有去使用他们。等等忘了说一点了,公司给配电脑的时候没有配鼠标,所以不得不去用这个来熟悉这些。我们所知道的那么东西又得重新开始了,不同于openSUSE或者是Ubuntu上面可以直接用命运来安装软件。brew install虽然也很强大,但是还是没有apt-get强大不是么,然后我们又要继续一些东西的学习。
##LBS##
let's build something。
这个也不算是一个题外话,只是有些东西,一个团队来做会比一个人有激情。ThoughtWorks郑大晔校的一天(3)——Javascript的TDD,Jasmine2013-12-28T21:54:08+00:002014-05-14T02:13:20.279523+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/zheng-da-ye-xiao-of-Thoughtworks-three-tdd-javascript-jasmine/似乎我应该第二次的内容补上,只是不知道写什么了,也就没有必要写了,不过这次算是有必要了。看了一些敏捷开发的书,在想是不是也有Javascript也要有个测试框架,也会有类似于Ruby的Rspec,java的Junit。
不过,似乎我印象里有个Qunit,和jQuery是一家子的,这个留给过些时候学吧,因为今天讲到了Jasmine和RSpec和有点像。
##Rspec以及Jasmine##
来些Rspec的测试代码吧
<pre><code class="ruby">
describe LedStatus do
let(:ledstatus){LedStatus.new()}
describe "Observable" do
it "Should have a result" do
led=Led.new
end
end
end
</code></pre>
我似乎把代码写得有点不理想了,但是这个不是很重要,应该不是很重要。。似乎真的不是很重要。。
测试一下
rspec --format d
会有如下结果:
LedStatus
Observable
Should have a result
Finished in 0.00065 seconds
1 example, 0 failures
然后,我们先看看jasmine的测试结果
Jasmine2.0.0 finished in 0.003s
1 spec, 0 failures
Add function
should be return
对了,忘了说一下Jasmine的测试
##Jasmine##
<blockquote>Jasmine is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.</blockquote>
似乎这个是BDD,不过已经无关紧要了,因为Rspec也是,似乎我没有理解好。
官网地址 [http://pivotal.github.io/jasmine/][1]
直接下载官方的示例我们可以看到我们的运行结果。
接着我们创建一下简单的add函数,这个是直接从课堂上拉过来的。。
<pre><code class="javascript">
describe("Add function", function() {
it("should be return", function() {
var result=add(1,2);
expect(result).toEqual(3);
});
});
</code></pre>
SimpleSpec.js的内容
下面是Simple.js的代码
function add(num1,num2) {
return num1+num2;
}
似乎很简单明了,再打开浏览器就可以看到结果了。。
呼呼,这就是Javascript的TDD。。
##总结##
原来道路一直很长,只是不会再那么艰辛。
###写在技巧之后###
似乎今天在讲最小物联网系统的时候没有讲好,部分原因是因为自己有些紧张,只是讲的时候似乎就没有紧张,但是就一直讲了下去。。用TWer的话来说的话,就是今天很赞。
[1]:http://pivotal.github.io/jasmine/ThoughtWorks郑大晔校(二)——CSS之美(草稿)2013-12-21T21:27:12+00:002014-05-14T02:24:07.021012+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/zheng-da-ye-xiao-of-Thoughtworks-two/标题之所以为标题,很一部分是因为可以吸引观众。不过,也是时候去整理整理这些有意思的东西。或许只对于我来说是有意思的,不过这个时候也是时候可以回顾一下CSS的一路上的那些事。似乎在ThoughtWorks的晔校上把之前没有详细理解的,或者又是忘了的东西,好好梳理一下。
###我与前端###
一开始的时候CSS并没有想象中的有趣,或许如一开始编程并不是那么有意思一样。我们想要的只是找点事情做,对于后台因为会做的人太多了,而我又偏向于去当一个设计师,从素描到PS,再到编程似乎有时候我们回到了某个东西的本质,而后又开始重新设计这些东西。
body {
margin:0;
}
一切似乎应该回到这些,再去重新设计,似乎有时候我就是这么懒。2013节点——技术成长,从比赛到ThoughtWorks2013-12-19T21:05:43+00:002015-12-26T14:11:06.738786+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/my-2013-from-competition-to-thoughtworks/<p>技术的成长在有时候似乎会变得很快,特别是当我们开始领悟到某些东西的时候,一个个的项目或者比赛不断地加强了我们的能力,也使得我们技术成长得更快。</p>
<p><br/>
</p>
<h2>比赛</h2>
<p>比赛有时候和技术相比就显得不是那么重要的,作为一个电子信息工程专业的学生,从软件->硬件->软件是一个很有趣的事情。如飞思卡尔之类的比赛让我们Hack生活有着更有意思的东西 ,有时候硬件比软件好的一点在于,我们可以用此来改变自己的生活。只是两者结合起来才是最强大的。</p>
<h3>智能车</h3>
<p>所谓的智能并没有想像中的智能,芯片也限定了我们能做的事,我们所做的有点类似于把一堆堆现有的知识放到上面去。我们的创新体现在哪?我们的车跑得更快了,你把那些东西分享出来了没有?有时候我们并不缺少那些技术,只是我们缺少了一个前进的方向。然而,对于我们的教育的培养方式来说,这也算是一个不错的创新。或许就是这些,让我觉得所谓的N13的小校,不会注重分享,有时候会是那样子的。<span>(转载保留 </span><a href="http://blog.phodal.com/thoughtworks-yue-xiao/" target="_blank">Phodal's
Blog</a><span> </span><a href="http://blog.csdn.net/phodal" target="_blank">Phodal's zenthink</a><span>) </span></p>
<p>实力不足算是一方面,但是有时候缺少了更多的交流,所谓的交流会也只是一个形势。在这里应该谢谢陕西理工的学生和老师们,至少他们会分享东西与我们。而不会像我们所在的这个城市的某些重点校院。</p>
<p>技术的成长依赖于分享,至于为什么这么说,可以看看你身边的那些书,如果没有那些书,我想成长是不够的,除非你已经是大师了。别人分享了别人的东西给了我们,我们从中受惠,我们也应该分享我们的东西给予别人——<a href="http://blog.csdn.net/phodal/article/details/17076073" target="_blank">《REWORK》启示录 招聘笔杆子——程序员为什么值得写博客</a>。<a href="http://blog.csdn.net/phodal/article/details/17076073" target="_blank"></a><a href="http://blog.csdn.net/phodal/article/details/17076073" target="_blank"></a></p>
<h3>智能家居</h3>
<p>这个算是把自己在过去学的那些东西总结了出来,而后形成的东西。至于那些idea,现在我想一般的学生已经很容易可以做了。Android->Server(RESTful)->Browser(Ajax),写在博客上的那么多文章相信可以帮到大家。</p>
<p></p>
<ul>
<li><a href="http://blog.csdn.net/phodal/article/details/15340355" target="_blank">Laravel RESTful快速部署指南(一)</a>、</li><li><a href="http://blog.csdn.net/phodal/article/details/7649020" target="_blank">Django RESTful 使用tastypie</a></li><li><a href="http://blog.csdn.net/phodal/article/details/7623079" target="_blank">Django REST框架实现</a></li><li><a href="http://blog.csdn.net/phodal/article/details/14053129" target="_blank">Laravel+Angularjs+D3打造可视化数据,RESTful+Ajax</a></li></ul>
<p></p>
<p>依赖于Ruby on Rails,PHP框架Laravel,Python WEB框架Django,很容易可以创建出一个不错的RESTful服务,当然JAVA也是可以的,只是对JAVA不是非常了解。当然,还有另外的神奇的一个,只是是跑在路由器上面的。。</p>
<p></p>
<ul>
<li><a href="http://blog.csdn.net/phodal/article/details/8521323" target="_blank">Openwrt django,路由器上运行Django,基于DB120与Openwrt</a></li></ul>
<p></p>
<p><br/>
</p>
<h2>与Linux</h2>
<h3>OpernWRT Linux </h3>
<p>这个系统就表现得很有趣,只是在去年的时候已经开始计划着使用这个系统,没有听过?很正常,这个是运行在路由器的操作系统,最近似乎被用在小米的路由器上面了。</p>
<p>在上面能干些什么?</p>
<p></p>
<ul>
<li>跑Python——<a href="http://blog.csdn.net/phodal/article/details/8521712" target="_blank">Openwrt python,openwrt上使用Python</a></li><li>当成服务器——<a href="http://blog.csdn.net/phodal/article/details/8521323" target="_blank">Openwrt django,路由器上运行Django,基于DB120与Openwrt</a></li></ul>
<a href="http://blog.csdn.net/phodal/article/details/8521712" target="_blank"></a>
<p></p>
<p>总之他就是一个跑在路由器上的Linux系统,所以你在你电脑上能干的东西 ,在上面都可以。</p>
<h3>Raspberry Pi</h3>
<p>这个大家都应该有所了解,作为一个不错的廉价的Linux平台,他一直很给力,所以我们需要的只是结合上Arduino来玩我们的想法。不过,这次我结合的是openCV</p>
<p></p>
<p><a href="http://blog.csdn.net/phodal/article/details/8587121" target="_blank">Raspberry Pi OpenCV,在树莓派上使用opencv</a></p>
<p>一切都来得很快,很突然。<a href="http://blog.csdn.net/phodal/article/details/8587121" target="_blank"><br/>
</a><br/>
</p>
<h3>Android</h3>
<p>写Android程序似乎没有以前来得有激情,写得也不多,边学边写,Android+REST client实现了上面说的那个简单的RESTful。</p>
<p>也用Android设备连上了Arduino,这一切来得很神奇,出乎了我的意料。</p>
<h3>openSUSE</h3>
<p>今年发布的最后一个版本是13.1,只是由于AMD Fglrx Legacy驱动问题,我还停留在12.2。几次的问题,我还是openSUSE的拥护者,你还在使用Ubuntu么?</p>
<p></p>
<ul>
<li><a href="http://blog.csdn.net/phodal/article/details/8674832" target="_blank">opensuse 12.2 升级 12.3</a></li><li><a href="http://blog.csdn.net/phodal/article/details/8674832" target="_blank">Linux入门指引(一) 安装之前:一个基本的GNU/Linux系统的构成</a></li><li><a href="http://blog.csdn.net/phodal/article/details/8674832" target="_blank">OpenSUSE Ubuntu,使用OpenSUSE代替UBUNTU的若干理由</a></li><li><a href="http://blog.csdn.net/phodal/article/details/16860365" target="_blank">openSUSE grub rescue 修复经历 opensuse trying manual resume 修复经历</a></li></ul>
<p></p>
<h2>ThoughtWorks</h2>
<p>这个算是今年中最有挑战性的工作之一了,也因为有了专栏<a href="http://blog.csdn.net/column/details/quick-ruby.html" target="_blank">《Ruby三日游》</a>,ThoughtWorks是一个不错的公司,当然还有不错的入前培训——<a href="http://blog.csdn.net/phodal/article/details/17334489" target="_blank">ThoughtWorks郑大晔校的一天</a>。ThoughtWorks的面试很有挑战性,我的面试也有六轮,因为是校招补招的,想想那些校招的孩子比我舒服多了。觉得自己聪明,又对自己的技术有把握可以去试试,据说是全球最难的技术面试,在所谓分类在排行最难第二。第一呢?是另外一家咨询公司。</p>
<h3>REWORK启示录</h3>
<p>这是一个插曲,一个很不错的插曲,因为我们需要《重构》,所以我们也需要<a href="http://blog.csdn.net/column/details/rework.html" target="_blank">《REWORK》启示录</a>。</p>
<h3>读书</h3>
<p>本来是不应试写这个的,只是做技术的不读书不算是真正的做技术,而这点之所以放在这里,是因为看的很多不错的书,都是在ThoughtWorks的电话技术面试之后。因为面试的时候,HR问了几本书是否看过,我就意识到这些书会在接下来的面试中会有一定的作用,不过我想大部分的书大家都看过了。只是因为我在硬件和前端玩久了,很少写面向对象的程序了,也就显得有点不行了,在这些书中有:</p>
<p></p>
<ul>
<li>《设计模式》,经典,我想这个就不多说了,只是一直放在书架了,因为没有那么好理解。</li><li>《设计模式解析》能更自然地理解设计模式</li><li>《Head First 设计模式》一本不错的设计模式入门书籍</li><li>《Ruby设计模式》提到了经典的23种设计模式以外的Ruby需要的设计模式</li><li>《C和指针》在Pair完后,意思到自己在这方面不足,可能和上面的主题没有多大关系。</li><li>《REWORK》在那之前看的,一本有点逆向思维的书,值得一看。</li></ul>
<p></p>
<p>以及在ThoughtWorks的郑大晔校看到的几本推荐书目,列出的只是我有的。</p>
<p></p>
<ul>
<li>《卓有成效的程序员》TWer在Intellij idea用快捷键对程序进行重构,这本书值得去了解。(ps:可以用Emacs重构么)</li><li>《重构》一本好书,特别是当你不理解你程序的时候,你就需要这本书了。</li><li>《UML精粹:标准对象建模语言简明指南(第3版)》公司的首席科学家Martin Flower写的,也是《重构》的作者,今天刚到。</li><li>《敏捷软件开发 原则、模式与实践》Robert C. Martin写的一本好书。</li></ul>
<p></p>
<p>其他的还有诸如</p>
<p></p>
<ul>
<li>《驱动测试开发的艺术》</li></ul>
<div>以下是来自亚马逊上自己的订单,成长离不开书籍。</div>
<div>
<ul>
<li>《恰如其分的软件架构:风险驱动的设计方法》</li><li>《机器学习实战》《机器学习:实用案例解析》《特征提取与图像处理(第2版)》</li><li>《华章程序员书库:领域特定语言》《编程语言实现模式》</li><li>《Clojure编程》《Ruby元编程》<计算机科学丛书:php和mysql web开发(原书第4版)》《精通C#(第6版)》</li><li>《C++ Templates中文版》《Cocos2d-x高级开发教程:制作自己的《捕鱼达人》》</li><li>《SEO艺术》</li><li>《Hadoop权威指南(第2版)(修订•升级版)》《R语言经典实例》</li><li>《程序员的思维修炼:开发认知潜能的九堂课》《编程珠玑(第2版)》</li><li>《七周七数据库》《7周7语言:理解多种编程范型》</li><li>《具体数学》</li></ul>
</div>
<p></p>
<p>还有几本无关技术的书籍,我想大家都没兴趣,这里就不列举了。</p>
<p>等等。TDD、结对编程、重构等一直都是敏捷开发所需要的。</p>
<p><br/>
</p>
<h2>总结</h2>
<p>小小的总结一下,TW的offer让我觉得有些惊喜,但是在那之后则是想学习更多的东西。大部分是因为之前写的程序都不是面向对象,软件工程的有些方法变得不那么适用,也因此需要重新学这些东西。反而,现在也有了更多的精力和时间去学习,因为会用得到,而且也需要。</p>
<p><br/>
</p>
<p><br/>
</p>
<p><br/>
</p>
<p><br/>
</p>
<p><br/>
</p>ThoughtWorks郑大晔校(一)2013-12-15T15:28:46+00:002014-05-14T07:34:50.694353+00:00Phodal Huanghttp://www.phodal.com/blog/author/root/http://www.phodal.com/blog/one-day-of-thoughtworks/一开始听这名字似乎和某个东西联系上去了,不过实际上据说也是类似的,网上说的是由ThoughWorks的郑晔针对入职前的ThoughtWorkers的一系列培训,便于让我们提前融入公司文化,提前熟练一些工作时的基本技能,减少入职后的压力。
只是我是在前一天才知道的,有点匆忙的各种节奏。
似乎这一次是第五届,总之已经接近尾声了,如果还有别的东西的话,我真想说错过前几次有点可惜。
所以,我对前面那些部分一点儿都不知道,已知有关的东西就是那些
- jetty,听过、看过,没有用过,似乎是web用的
- gradle,听过、看过,似乎用过,在android studio上
- java,听过、看过,似乎也用过,在写android程序的时候
- git及github 听过、看过、用过,帐号就是gmszone
- mysql 听过、看过、用过,服务器上用过,不是很熟悉语法,但是了解一些。
- trello 没听过、没看过、没用过,什么也不知道,除了可以在上面做case
缺少的东西就是以上那些。
##showcase##
似乎应该按顺序来讲些东西 ,但是好像忘得差不多了。
按照自己的思维应该是用持续集成开发的开发方法写一个BBS。剩下的就这么多,之前似乎少了很多的内容,这里就不多说了。
其他一些比较重要的东西应该就是ThoughWorks在强调敏捷开发的时候强调得相对比较多的。
- TDD 驱动测试开发
- 敏捷开发
- 重构
- 结对编程
所以如果按照我的思维把这些东西串起来的话,也就是我在电话面试的时候才领悟到我觉得我可以试的方法,无非就是这些。至于软件工程方面的缺失,似乎有太多,就不加强调了。
忘了一点,在开始之前,有一个自我介绍:我是来自西安文理学院……。这里就不好多说了,之所以会说这个原理在于,在这里与学校无关。同时又可以知道哪些人是不会在乎这个的。以及电子信息工程专业,过于在乎学校及其名声的,怕是有些过多的固有思维,不知道分享精神的可贵。
展示之前做的一个个story,story类似于里面的一个小功能吧,就这么简单的来说。因为开发的是BBS,之前用过PHP的Laravel框架做过类似的东西,似乎要理解起来也不是很困难。有点困难的是,对JAVA没有多少的好感。不过,那些东西强调起来重点不在于语言,而在于所表达和呈现的内容。所以有过经验也就知道了,实质上也就是那些东西。只是在用框架和不用框架的时候会有些区别,而这个过程也在强调诸如隔离的重要性。过后就是简要的对实现的一个讲解,其中还有重构。
##课##
忘记了这个环节叫做什么了,讲的大致是两部分内容Database Migration以及Flyway。能理解些东西,但是又没有理解,又是一种似懂非懂的感觉。虽然没有看懂有些东西是怎么用的,但是似乎不是很重要,展示的只是一个过程,换句话说,课堂上的半小时时间,如果你真要研究的话,就要用至少两三天的时间才能好好理解,因为讲的都是和Database有关,所以就暂时用这个名字代替。
在这之前,还有两个伙伴们讲的SQL以及S.O.L.I.D。
面向对象算是我觉得我缺少的东西,由于之前没有掌握合适的方法,所以也就没有合适的掌握这些东西 ,算是一个小小的遗憾。而这个也正是需要自己好好去学的东西 ,诸如重构之类的思想,需要在学好面向对象的基本上才能掌握好,也因此呢,需要好好的学习一下设计模式。学好的一个原因在于我们可能需要向不同的人群去介绍这些东西 ,有的人听得懂,有的人听不懂。只是如果我们用一个简要的名字来概括会使这个过程更加简单。
##完了~~##
午饭,这种东西本来应该放在中间的,但是这点东西就放到后面去了。。。ThoughtWorks有一个小小的厨房,午餐算是中西结合,只有五份米饭,其他的就是可乐、汉堡、薯条等等。
ThoughtWorks的一路上好好加油。