这是这几个月来最深的感触了。 随便写写大家看看就好。 讲几段故事吧:

第一段故事————学习WEB开发。

今天的4月份,但是刚从新浪Qing离职回学校潜心读书。
突然有一天看到有一个比赛,HTML5的,感觉这是个不错的方向就去参加学习一下吧。
于是找了几个同学组了个小队,然后项目就开始了。
选了近一个月吧,最后决定做一个像素主题网站。一来觉得会简单一点,二来像素,8bit,数字和艺术的完美融合呀。

简单介绍下队伍情况:
:产品还行、技术么简单的WEB技术略懂一点。
小越越:前端出身。
璇爷:WEB开发经验 === 0,其余都还行。
野哥:做过OPENGL 和XXX、XXX、XXX、XXX、XXX…

于是决定我去做产品和后端。小越越和野哥去做像素作品制作功能的实现。璇爷去做UI和部分前端。

这里插一段吧,我们准备做个2D和3D两个版的,
但是商议的结果是用three.js来实现3D版,然后通过改变视角和交互来转化成2D版的。这是我们犯的比较严重的错误。
一次在open party上吴军老师讲过正确的模型可以很轻松地解决问题。
如果选择了错误的模型,就会一直选择各种方式来补漏洞,最后直到补不下去了。
现在开来实在是太对了。所以各种恶心的解决方案基本都是不可取的。
可能现在它WORK了,但是会给你以后的工作带来各种各样的麻烦,最终把你弄得WORK不下去了。

回来,继续讲。
因为之前只用过PHP,而且是无框架纯手写。
这一次的项目有点大,所以还是仔细地考虑了这个问题。

当你对一个领域知之甚少的时候,问询专家可能是一种最好的方式。

于是我去问了luin神,当时推荐了Yii,Bootstrap。

专家推荐的东西的东西一般都是好东西,但是适不适合你就不一定了。

然后我就去了解了下Yii和Bootstrap,了解的方式就是去知乎、百度、google、然后对应的社区什么的。 最后后端我选择了CI框架,原因是文档全、上手快。Bootstrap的确很好用。

之后开始学习框架使用,就是跑跑DEMO随便写写。一个星期左右,大致明白怎么回事了,开始用来实现项目。

这里我发现了一个巨大的阻碍就是追求完美、先要一步到位。
后来发现与其费劲脑子做设计,不如去实践遇到问题,然后解决问题。

先学前端么,写写练练手,就当做了个原型。效果的确很好。
然后学后端,先写一些简单的功能,验证下自己使用的是否正确。

跑的太快容易扯到蛋,绝对的真理。

之间又写了很多小项目来练手。

就这样慢慢写到了6月份。然后》》》

第二段故事————一次“敏捷”实践

开始思考设计模式,开始接触RESTFUL。
主要在于MVC三层C层和M层放什么我总掌握不好,最后干脆C层就是把数据传给V层。 这样以后写其他平台的客户端也会好干很多。 万幸CI对rest支持很好。。接下来就是重复实践跑DEMO学习了。

后来学校软件工程过程课要搞敏捷开发实践。。。 这个事说起来很无语,10多天?敏捷开发?语言不一样?平台不一样?XXX不一样?怎么能够在一起。

本来我们自己组了个队,清一色的MAC,技术水平也都很好,自己熬几天写完整个项目都不是问题。不过不幸被不知情的老师拆散了。

不过还好最后队里的技术水平都还不错,就是大家习惯的语言平台不大一样。还好没有windows。

队里一个前端大牛、一个服务器大牛、一个后端前端都微懂的小菜鸟就是我。其余的都各自会点不相关的。
讲下用的技术吧。

后端 CI REST ,我鼎立推荐,主要是因为自己很熟悉,很清楚能告诉其他同伙怎么用。另外但是大家都会的也就PHP。其实后来发现会的最多的是python只不过有的人没说。。
前端 backbone coffeescript bootstrap less 还有各种自动化测试的东西。

先写收获吧:
1. 团队的想法要一致。
2. 统一的开发环境。
3. 维持一个问题WIKI
4. 适合团队的技术解决方案,我们的前端选择就不是一个好方案,因为其他没接触过这些东西的人很难快速掌握。
5. 不要过早设计。
6. 要乐于重构,重构前要想想为什么要做这次重构。
7. 有些事情自己一个人做可能要比两个人做要快要好要开心。
8. git是个好东西。
9. 布道之道那本书一定要看,我反思整个过程,收益良多呀。

讲下大致的过程。
后端是我负责,6人小组,3台MAC做开发机,自由结队开发。 情况3个人一条集训后,可完成开发任务。另三人,一人有事长期不在,另两人配ubuntu开发环境数天。。 项目中期API进行了一次大范围的重构,GIT的使用也布上了正轨。 开始我很抵制GIT,后来见识到git的有点之后,自然而然地接受了。

前端情况就不大好,除了一个前端大牛、一个会JS的,其他两人没有WEB开发基础。所以less\coffee\backbone什么的徒增了很多烦恼。大牛又因被安排讲自动化测试,导致真正写逻辑的就一个人,还是刚接触coffee。现在想想这个技术方案真是不大合适。这就是大跨步容易扯到蛋。

其他的一些东西有些觉得有用,有些就有点形式化。 其实东西有没有用,要看你在什么样的团队,干的是什么事。 把宝贵的经历放在最有意义的事情上才是对的,别的都是扯淡。

第三段故事————个人开发阶段

放假回家,开始对之前像素项目的后端代码进行大范围重构。 不过很快陷入了过度设计的困扰之中。然后就停了一阵,看看书,玩玩服务器。 把开发的脚手架搭好。

整理了下本地的开发化境, 将本地项目的访问方式设为真实域名,通过修改hosts文件来切换线上和线下。主要是为了解决用到很多插件跟域名有关的问题。

在linode上配置好git,本地写好代码push至GIThub,然后在linode上pull下来,简化部署操作。

将资源文件移植到阿里云OSS上,这样前端后端就严格分离了。前端用一个.html就可以进行开发,合代码的时候改动量大大减少。

然后单线程地做事,因为实践中服务器、后端、前端很多事,有时候一忙就都乱了,所以一段时间一干一件事,可以说一个完成功能场景、可以修改前端的整体样式代码结构。

之后觉得来不及了就开始涉足canvas部分。 其实克服心中的恐惧,投入一定的时间,不断地去实践,一切都会相当地容易。 我自己一直对JS有点恐惧,莫名的恐惧。等到自己可以做点什么东西出来的时候,这种恐惧自然而然地就消失了。 这个过程可以总结几点

动手做最重要。
获取知识要有选择。
解决问题最重要。

这里会有个问题,开始不懂JS就盲目地写,写出来的东西也乱七八糟各种BUG。其实这是一个好事,出现问题,解决问题,然后你就学到了有用的新知识,这比无谓地看一堆可能一辈子都用不到的东西要好很多。不要怕写错、不要怕浪费时间在一些你觉得份SB的问题上,其实这可能事最有收获的事情。

分割线

以上存按时间记录了一些收获,看法什么的。基本都是实践,现在说说阅读。 阅读和实践的关系是融合在一起很难分离的,通过阅读书籍、手册、文章可以让你了解一些大概,这些大概作为实践的基础。而在实践之后,阅读,来反思实践,会收获颇丰。所以保持实践和阅读的习惯,他们会成为最好的老师。

本文转自:图灵社区http://www.ituring.com.cn/article/10158

阅读和实践是最好的老师相关推荐

  1. python开发数据管理系统客户桌面_实践是最好的老师:给中级 Python 开发人员的 13 个项目构想...

    原标题:实践是最好的老师:给中级 Python 开发人员的 13 个项目构想 学习 python 的基础知识是一种美妙的体验.但是,学习的喜悦可以被对实践项目的渴望所取代.想要建立项目是正常的,因此需 ...

  2. 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块

    一.Nginx的HTTP过滤模块特征 一个请求可以被任意个HTTP模块处理: 在普通HTTP模块处理请求完毕并调用ngx_http_send_header()发送HTTP头部或调用ngx_http_o ...

  3. 【NLP】Transformers 源码阅读和实践

    本文主要针对HuggingFace开源的 transformers,以BERT为例介绍其源码并进行一些实践.主要以pytorch为例 (tf 2.0 代码风格几乎和pytorch一致),介绍BERT使 ...

  4. 《深入理解Nginx》阅读与实践(一):Nginx安装配置与HelloWorld

    最近在读陶辉的<深入理解Nginx:模块开发与架构解析>,一是想跟着大牛练练阅读和编写开源代码的能力,二是想学学Nginx优秀的架构设计,三是想找一个点深入下Linux下网络编程的细节.侯 ...

  5. 词云第一次实践,参考学校老师讲的一些知识点还有网上大佬的代码实现

    from wordcloud import WordCloudimport cv2import jieba with open('1906月考.txt', 'r', encoding='utf-8') ...

  6. JMeter官方文档阅读及实践笔记(上)

    JMeter笔记 一.测试计划元件概览 本节简单介绍测试计划的不同部分. 最小测试将包括测试计划.线程组和一个或多个采样器. 1.Thread Group,线程组 线程组元素是任何测试计划的起点.所有 ...

  7. 【ROS理论与实践-赵虚左老师】Chap2 ROS通信机制

    第二章 ROS通信机制 通信是ROS中的核心 Core 机器人是一种高度复杂的系统性实现,在机器人上可能集成各种传感器(雷达.摄像头.GPS-)以及运动控制实现,为了解耦合,在ROS中每一个功能点都是 ...

  8. 【ROS理论与实践-赵虚左老师】Chap1 ROS概述与环境搭建

    第一章 ROS概述与环境搭建 学习新的知识三部曲:先去了解相关概念,然后安装官方软件包,最后搭建集成开发环境. 1.1 ROS简介 机器人是各种硬件和软件集成,甚至可以说机器人系统是当今工业体系的集大 ...

  9. C++程序设计(实践)_老师有话说 S1| 如何学好计算机程序设计(c语言)

    点击上方"USTC stunion"可订阅哦! 在之前"蜗壳里的星空"发布的说说中,众多同学在评论区留下了自己印象深刻的老师,有很多老师获得不少的点赞,可谓是同 ...

最新文章

  1. python安装在什么系统下最好-python开发环境哪个好用?如何搭建?
  2. Golang 之 Base62 编码
  3. react ajax 分页,一款简单的react分页组件
  4. MATLAB可视化实战系列(二十五)-MATLAB基于直方图的图像去雾
  5. X86/ARM 模拟器
  6. FASTICA独立成分分析matlab代码实现
  7. rtl support
  8. centos 安装mysql5.7.19_centos7源码安装mysql5.7.19
  9. 从零开始学习OpenWrt完美教程-转
  10. 【Android游戏开发二十】物理游戏之重力系统开发,让你的游戏变得有质有量!...
  11. 15.企业应用架构模式 --- 分布模式
  12. 智慧城市的宠儿 大数据为城市建设添彩
  13. java 企业级安全_《企业级Java安全性—构建安全的J2EE应用》 尹亚 【正版电子纸书阅读_PDF下载】- 书问...
  14. 一级计算机办公软件,计算机一级与高级办公软件
  15. 2、图片亮度,对比度,饱和度,明度调整 transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
  16. Android-SEAndroid权限问题指南
  17. 含8的数字的个数 (10分)
  18. IP和MAC地址的区别与联系
  19. 【官方文档】Fluent Bit 概念
  20. 外文文献翻译(OCR+Deepl+Mathpix)|CSDN创作打卡

热门文章

  1. 怎样把音乐存到计算机里,如何把CD光盘中的歌曲复制到电脑
  2. 阿里巴巴面试5轮问题
  3. 【宝塔】【Windows】【Blessing-Skin】【我的世界】用宝塔Windows搭建皮肤站
  4. 2D转换之旋转与缩放
  5. MATLAB中读取网络照片
  6. 对象方法Dive into Python读书笔记3
  7. 芯片检测(分治法经典问题)
  8. 一个巨牛的人工智能教程
  9. java怎么键盘录入字符串
  10. 单片机包络检波c语言,模拟电子系统设计指南:从半导体、分立元件到TI集成电路的分析与实现(基础篇)...