搬砖与拓荒

栏目: Python · 发布时间: 7年前

内容简介:搬砖与拓荒

开发人员们经常自嘲是IT民工、“搬砖”的。在我们外行听来只是自嘲,笑一笑就过去了。不懂他们每天在工作中面对的是什么,我们其实并不理解他们为什么这样自嘲。

最近和同学合作了一个小项目,是个微信H5,其中有数据提交的部分。我负责设计与前端开发,他搞定后端与服务器、域名。在这个项目里略微接触到了一点点后端的东西,对“搬砖”这个话题忽然有种顿悟的感觉,也更进一步理解了开发的难处,这真是一种非常不同于其他工种的工作。考虑到正在阅读这篇文章的你很可能不了解开发,我尽量用大家都能理解的方式来讲这个故事。

这个H5项目的分工方式,是标准的前后端分离。所谓前端与后端,可以理解为事情发生在什么地方,靠近用户就是前,远离用户就是后,中间连接两者的是错综复杂的光纤、Wifi。我负责的前端部分,主要是把页面的外观做出来,展现到用户的手机上,并且处理一些发生在用户手机上的逻辑,例如输入框里填写邮箱要遵循一定格式,没有@符号当然不是邮箱,不能提交。我同学负责的后端部分,就是在网络的另一头接收用户发过去的信息,存到服务器上的数据库里,并做好统计工作。

这里面有一部分工作需要我们共同完成,我们得约定好,我在前端把用户填写的内容以什么样的形式、通过什么方式传输给后端,他在后端接收到这些内容之后要给我怎样的反馈,如果中间出了什么差错,他又会给我什么样的反馈。这就属于开发们天天挂在嘴边的“接口”。

既然合作方式是这样的,双方就有一定程度的相互依赖。我先把前端部分的代码写好了,但是和接口相关的代码要怎么测试?没有后端的配合,我不知道我这些代码写得对不对。这时候同学的后端代码还没写好,我就得等着他。当然,实际工作中,开发人员并不会真的这么傻傻等着,有许多种方式来让其中一方模拟另一方的工作,我们也是这么做的。

他写了一小段代码给我,用的语言是Python,让我在本地模拟这个接口。我一点也不懂 Python 语言,打开他的代码直接懵B。来来回回仔细看了好几遍,终于理出一点头绪。结合我们之前约定好的接口,大概明白这些代码做了哪几件事情。然后我要做的,就是把我自己的电脑当做一个小型的服务器,把同学的这段代码在我电脑上运行起来,用我的前端代码向这个小服务器提交内容。他的代码自然会给我反馈,让我得以测试自己的代码有没有起作用。

不过事情进展并不顺利,实际上最终是失败了。问题出在运行我同学这段Python代码上。要把这段代码运行起来,有一些前提条件。首先,我的电脑上得有Python这种语言,这个没问题,mac系统自带Python 2.7。然后要安装一些业内广泛使用的代码模块,这些也是用Python写的,同学的代码里用到了这些代码模块。安装其中几个模块时就遇到了问题,电脑报了错误,没有安装成功。

刚开始以为是mac系统的文件夹权限问题,用了许多种方式获得了超级用户权限,没什么作用。各种开发者社区里提供了一些解决方法,升级或重装某些模块,但也没解决我的问题。然后我想会不会是Python版本问题,装了Python 3.6,把mac自带的python2.7换掉了,又重装各种代码模块,电脑给我报了一个语法错误。查资料发现从Python 3开始,有些语法和Python 2不一样,把同学的代码语法稍作修改,语法错误解决了。但最早报的那个错误又来了,继续查资料了解到,我同学用的某个代码模块在Python 3中已经不支持了,需要用另一个模块来代替,这就要对我同学的代码本身进行改造了,彻底超出我能力范围。我也不愿再折腾换回Python 2.7去尝试其他方法了。这条路没走通,最终放弃。

换了一条路,用同学推荐给我的一个现成的工具,也可以模拟后端接收信息和反馈。只是这 工具 能做的事情有限,不像直接上代码那样神通广大,如果以后有更复杂的需求,也许就不够用了。算了,至少在这个项目中管用,起码问题解决了。

经过这么一番折腾,顿时觉得开发们太不容易了,这种工作和我们做设计的有根本区别。我们用的设计工具、设计方法是不是还算稳定可靠?即使出了问题也基本上能很快解决,重启治百病,再不行重装,我们可以专注于自己的设计工作。对开发人员来说,他们使用的编程语言、代码模块、开发环境就是他们的工具,这些东西出问题的概率比我们的设计工具高多了。有时候是不兼容,有时候是设置不对,有时候是些莫名其妙的问题。这有点像装修工人,一会儿锯条断了,一会儿电钻坏了。狭义地来看,解决这些问题并不属于正常开发工作的一部分,但他们不得不花许多时间来解决。

仔细想一想我熟悉的前端开发,也是这样啊。举个例子,移动端页面里,手指按下按钮时可以加上一个反馈效果,和电脑上鼠标悬停的效果差不多。但是这背后也有一个不明不白的坑,你可以在代码里定义,某个按钮按下时颜色变深,然后你会发现这个代码没起作用,颜色没变。怎么办呢?查一下资料,才知道要加一句代码才能生效,但是这句代码本质上什么也没做。就像下象棋时你抓起马,在棋盘上空挥舞一圈再默默放回原处,你一步也没走。就这样一个神操作却能让手指按下效果生效,这合逻辑吗?不需要合逻辑,你记住这么写就行了。解决这种问题,并不创造任何东西,但这就是开发人员工作中经常要面对的事情。我也相信,多数开发应该不喜欢去解决这种问题,这些事情是苦活累活,真正的创造工作会让他们更有成就感。

深想一层,开发真是一个了不起的职业,不得不为无米之炊。有时候会看到一些技术大V在吐槽,某个最新版开发包又bug百出啦,某个接口挂了又导致产品功能受影响啦。实际工作中,也会听到开发同事被一些与项目无关的技术问题绊住。但是反过来,他们的工作性质很像美国淘金热时期拓荒者,茫茫荒原什么也没有,一批又一批人自己制作工具、盖房子、修铁路。有他们解决种种鸡毛蒜皮与疑难杂症,创造了这些基础设施,后来者才能在前人的基础上建设出城市,创造出繁荣。我们日常工作和生活中,能用上各种稳定可靠的产品,都离不开他们的摸索与折腾。

当然啦,我并不喜欢做这种性质的工作,前端技术也是点到为止,学到能用的程度就行了。对另一个行业胡乱评价了一番,也不知到不到位。不管怎样,心怀敬畏,还是好好做我的设计吧~


以上所述就是小编给大家介绍的《搬砖与拓荒》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Agile Web Development with Rails 4

Agile Web Development with Rails 4

Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2013-10-11 / USD 43.95

Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly. You concentrate on creating the application, and Rails takes care of the details. Tens of thousands of deve......一起来看看 《Agile Web Development with Rails 4》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具