10个程序员必须学会接受的残酷真相

大多数时候,写代码都是挺有意义的一件事,不光能增加经验值,解决难题的时候还特别爽。耐心、毅力、执着,再加上正确的工具——只要有它们的亲密协作,优雅、漂亮的代码就是手到擒来的事儿。

但是,紧接着拙劣的资源部署、新增的特性请求、糟糕的文档更新汹涌而来,打破了我们的美梦。

但是这并不是说我们的努力就没有价值。只是我们需要面对现实罢了。下面就是编程开发人员必须接受的10个残酷真相。

残酷的开发真相No. 1: 编程就是if-then-else语句的运用

编程语言设计者讨论、抽象化思考等等作为,其实都只是在旧的if-then-else语句上重新包装一下而已。

这也几乎就是硬件所有的功能了。是的,通过操作码我们可以顺利地移动数据输入和输出作运算和存储,其余的则在比较的基础上进行分支或者不分支。

而致力于人工智能的同志们更是为这些if-then-else语句包裹上了一件件神秘的外衣,通过这些语句,机器会按照我们的吩咐自动从一些数字矩阵中执行计算,查找搜索直到发现目标。

残酷的开发真相No. 2: 互联网其实就是存储在表中的数据

在过去20年间,“互联网”这个词造就了神话般的财富、搭建了五湖四海的友谊、生产出更为便宜的产品、促成了更为快捷的沟通等等等等,除了治疗癌症,它几乎就是无所不能。但是,说到底,互联网的本质就是一堆存储在表中的数据罢了。

Match.com?就是列满头发颜色、宗教信仰和兴趣爱好的表格而已。ebay?就是一张记录一笔笔合同的交易表。博客?就是一张每一行每一列写下你天马行空胡言乱语的数据表。无论我们怎么给它起名字,它的本质还是数据表格。

这一点也可以从编程语言中看出来。例如Ruby on Rails——当前操作web最为流行的编程语言之一,其实就是在数据库中搞一个小天地:指定一个全局变量,Rails就会自动创建一个列,因为它的作用就是在数据库中建立表格。

残酷的开发真相No. 3: 用户有自己的想法

偶尔用户会变得理智和通情达理,但是大多数情况下,他们都是古怪且难以琢磨的——甚至是非常苛刻的。程序员根本想不到这些用户在看到产品时会出来哪些天马行空的想法。因为用户不是程序员,不会照着程序员的想法走。

残酷的开发真相No. 4: 你写的大部分代码将永远不会被使用

这一点就不再多说了,说多了都是泪啊!

残酷的开发真相No. 5: 需求变更是必然的

有一位经理告诉我他的秘诀就微笑着和他的团队说他们很棒,他很欣赏他们做的一切,然后在临出门之间,他会说,“对了,还有一件事……”。就是这件事往往会颠覆整个项目,让每个人都重新回到设计app的起点。

需求变更是项目结构的直接后果。管理人员会在事情开展之前做好所有的规划工作,制定目标。

但是一旦事情交给开发人员,那管理人员就轻松了,然后开始无所事事了,成天胡思乱想吹毛求疵。这个按钮放的地方对吗?登录页面是不是应该改一改?反正一点点细微的想法就让开发人员去做修改。

这在项目过程中频繁发生,而且由来已久。要知道,就算是Ada Lovelace的分析机——被誉为第一段计算机程序,也有着需求变更的问题,源于将近一年的笔记讨论中。

残酷的开发真相No. 6: 没有人理解你,特别是你的老板

我们可以将程序员分成两种:第一种的老板是不会编程的,也不知道为了使代码能成功编译需要付出多大的努力;还有一种的老板以前也是程序员但是现在已经忘记了代码编译过程的艰辛。

第一种老板显然永远也不会理解你以及你的工作。不过这也是可以理解的,毕竟所学不同,术业有专攻。

而第二种老板,我们也可以理解。举个例子吧,即使是最好的程序员,如果一两个月不用API也会忘记这方面的内容。再则他们以前学的主流编程语言很有可能和现在的大不相同。

还有一点,如果你的老板自己知道如何解决问题的话,他往往会选择自己熬夜解决它而不是费时费力地雇用其他程序员来解决。所以我们得感谢这些“不懂写代码”的老板。

残酷的开发真相No. 7: 关于隐私,痛苦的纠结

我们都希望我们的服务可以保护我们的用户和他们的信息。但是同时,我们也希望网页简单且易于操作。点击深度——达到目标所需要的点击次数——尽可能的少。

然而保护用户的隐私就意味着,在用户点入页面之前得询问用户一些问题,以确定用户已经知道这样做可能带来的后果。

隐私也意味着责任。如果用户不希望服务器知道发生了什么事情,那么用户就得自我承担责任,因为这样做会导致服务器不能够读取用户的资料。责任就意味着麻烦,从这个层面上说,隐私也是个麻烦。

隐私也意味着矛盾的逻辑思维。一边希望能一个人呆着,另一边希望知道大量的信息;一边渴望安安静静毫无纷争,另一边则希望什么邀请函、购物优惠券、工作面试机会等等有多少来多少。

唉,俗话说,鱼与熊掌不可兼得啊。总之隐私还是不隐私,it’s a question。

残酷的开发真相No. 8: 信任是有代价的

项目Web 2.0听上去很美!感觉只要把大家的代码连接起来,就会有奇迹发生。你可以调用他人的代码,别人也可以调用你的,相得益彰。

如果真能像你想的那么简单就好了。事实是,首先在别人允许你使用他们的代码之前得先填写一些表格——大多数情况下会由专业人士起草——签署“不平等条约”。你的回报是什么呢?将你辛辛苦苦写出来的这么漂亮的代码交给别人,却不知道别人给出的是什么货色?但是,没办法,你只能相信他们。

但是他们也不知道你是不是真有真材实料?搞不好你不过是个滥竽充数的家伙呢?但是他们也没有办法,也只能相信你。

而用户则不得不信任你们双方。哈,你说隐私?当然有了,每个人都承诺会使用最高级别的加密软件,但同时却堂而皇之地和所有人分享你的信息。不过你也不用担心。

结果往往是你得在这个项目上花上比你预计更多的精力和做更多的工作。这就是信任的代价。

残酷的开发真相No.9: 软件有一定的生命周期

当你开工做新项目的时候,往往会利用最新出来的版本库等一切资源。这时库A的1.0.2版本出来了,但是它不能与库B的最新版本兼容,因为库A的程序员还停留在以前的发布上。然后库C发布了一些你的老板真正需要你挖掘的新功能。当然这些功能仅适用于1.0.2版本。

如果说房子和船的腐烂是以一种潜移默化“润物细无声”的方式,那么代码就是以一种复杂又迅猛的形式轰然倒塌。如果你想要库C,那么就必须放弃库B,同样的,如果你选择了库B,你就不得不向你的老板解释为什么不就近直接利用库C的原因。

当然我举的这个案例仅仅包含三个库,但事实上,在现实项目里起码不下十个,而且问题更多。更糟糕的是,很多时候这种消亡的趋势我们还一下子看不出来。有时候甚至看上去是那么微不足道的一个小问题,感觉写点代码就能立马解决。但是往往就是这么一个细小的不兼容性会犹如白蚁一般吃光所有的一切直到大厦坍塌。

生命周期的存在让我们能更深刻的理解计算机。不要以为代码没有摩擦、没有氧化、没有微生物的繁殖,就是永恒的,就能永垂不朽,事实并非如此。

残酷的开发真相No. 10 : 在围墙中生存发展

即使我们一再强调开放的重要性,但是有越来越多的证据表明,市场依然很小。而更糟糕的是,很多人往往不愿意在这方面投入成本。一些免费软件倡议者坚称社会应该提供免费软件。总之很少有人愿意在软件上面花钱。

这可能就是为什么Linux和BSD最大的采用者会将其专有代码隐藏起来的原因。类似于TiVo的设备可能内部也会使用Linux,但是使它们显得与众不同的接口却并不开放。Mac同样如此。

随便说一句,现在的Linux系统明显比不过Windows系统。人们会想同样的钱这边只够买Linux系统,那边我都可以买到Windows电脑了,里面系统怎样有什么关系呢?用户如何选择可想而知。

我只是希望以后会有越来越多的人愿意在软件上为许可证付钱,这样我们这一行业才能在这种四面围墙的条件下生存发展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
基于hal库的OLED显示屏驱动C语言实现源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip
作为一名程序员,掌握一些Mac技巧可以提高我们的工作效率和便利性。首先,要学会使用快捷键,例如Command+C和Command+V实现复制和粘贴,Command+Tab在应用程序之间快速切换,以及Command+Space调出Spotlight搜索工具等。这些快捷键可以大大加快我们的操作速度。 其次,学会使用Terminal终端工具是非常重要的。Terminal可以让我们通过命令行进行各种操作,如创建、编辑和删除文件夹,查看和编辑文件内容,运行脚本等。掌握Terminal的使用,可以帮助我们更好地理解和掌握Unix/Linux系统,提高对代码和服务器的操作能力。 此外,熟练掌握版本控制工具是每个程序员必备的技能。Mac提供了Git命令行工具,我们可以使用Git进行代码版本管理和团队协作。通过学习Git的基本命令,如clone、commit、push和pull等,可以更好地管理代码的版本和实现团队协作。 另外,学会使用文本编辑器和集成开发环境(IDE)也是很重要的。Mac上有很多优秀的文本编辑器和IDE供程序员选择,如Sublime Text、Visual Studio Code、Xcode等。熟练掌握这些工具的使用,可以提高我们的编码效率和代码质量。 最后,学会使用Mac的其他特性和工具也是很有帮助的。例如,使用软件包管理工具Homebrew可以方便地安装、更新和管理各种开发工具和库。使用自动化工具如脚本、任务调度等可以帮助我们自动化一些重复的工作,提高效率。 总之,作为一名程序员学会这些Mac技巧可以提高我们的工作效率和便利性,使我们能够更好地开展编码工作和提升技术水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值