warmhug

技术成长、工作感悟、教训反思

低水平的程序员

工作以来做web前端,绝大部分时候工作内容就这几点:

  • 写html标签,记着各种css规则并应用;能不能用好不好用,api文档中或前人大多都做了相应总结,你只用 照搬照套 就行
  • 用js写着几乎是 千篇一律 的dom、ajax或相应动画api等操作代码
  • 检查各种浏览器的兼容问题、再尝试换个api或改个设置参数来解决

工作中创新的地方很少,创新的机会也很少,感觉考验IQ的东西更是很少。总的说来就是:记住一些规则,然后不算复杂地组合使用下。

近期自己在做一个”mdv”的小型库,除了一些常见功能函数直接拿了别人的代码,其他核心部分都是自己独立去做的。这个东西主要就是根据一些规则遍历dom生成附带规则的动态的view对象,然后再跟对应的model对象关联起来,能实现从model对象到view对象的绑定变化。看起来功能不怎么复杂,但目前感觉它是我工作以来做的最有难度的东西了!很显然,它主要难在如何把dom对象的各个层次结构映射到相应的js对象上,即类似要设计出一个好用的但比较复杂的数据结构

前两天刚好看到个微博讲数据结构的重要性,大神Linus Torvalds讲过这样的话:

”Bad programmers worry about the code. Good programmers worry about data structures and their relationships.” (低水平程序员总在考虑代码,高水平程序员总在考虑数据结构及其之间的关系)

在大学时候,大家都强调“数据结构和算法”,但那时候我个人只是学习学习几种排序算法、了解下其他的算法,着重学习运用了一些物理运动公式,模拟3d用到的三维坐标系等,利用这些知识点也实际做了些动画和简易的3d动画效果。那时候就感觉这些算法和物理数学公式看着也不太难但实际用起来还是不容易的;那时候根本就没意识到数据结构有什么大的用处、或者有什么难的地方。

直到这次要做这个东西,要构造一个好的对象,联想到“数据结构决定算法”,觉得数据结构就像建筑房子的架子,搭起个好的架子其实并不容易。

我觉得一个程序员如果整天都是在处理业务中的问题,那几乎注定是个 “低水平的程序员”,因为用到的技术或解决方案大多都是简单的枯燥的重复的。如果想成为“高水平的程序员”,记得一定要在业务之外做些有挑战的事。


October 30, 2013 | by warmhug | other