程序员的宿命

#程序员如何平衡日常编码工作与提升式学习?#

程序员如何平衡日常编码工作与提升式学习?

在快速迭代的编程世界中,程序员们不仅需要高效完成日常编码任务,还需不断学习新技术、深化专业知识,以应对日益复杂的项目挑战。然而,如何在繁忙琐碎的编码工作与个人成长之间找到平衡,是不少程序员都面临的一个难题。是沉浸在日复一日的工作代码海洋中,还是抽出时间深入探索、自主学习新技术、新理论?又或者,是否存在一种方法,能够让我们在高效工作的同时,也能持续推动自我提升?日常编码工作和自我提升向的学习之间能否架起一座友谊、互利的桥梁呢?对此,你的观点是什么?快来参与讨论,分享你对这两者的看法吧!

程序员也称为软件开发者、码农或软件开发工程师,是从事计算机程序设计、开发、测试、维护和管理的专业人员,主要工作是把业务逻辑通过编程语言(如Java、Python、C++、JavaScript等)及各种算法在电脑上模拟出来,为日常生活和工作提供便利。从初级程序员到系统架构师,不同的层次和类型在软件开发过程中扮演着各自独特的角色,除了代码编写外,还涉及到与客户沟通、需求分析、技术文档撰写等综合性任务,这不仅要求程序员具备扎实的编程技能,还需要较强的逻辑思维、问题解决能力和团队合作精神。

以上对程序员的定义是综合AI大模型360AI助手、阿里云百炼、文心一言、讯飞星火、天工、腾讯元宝、抖音豆包、ChatGPT等工具对“程序员是什么”的解释而形成的。日常编码任务是开发环节的任务,是程序员工作的关键任务,是一个产品的重要里程碑,是产品从概念走向应用的重要一步。但开发一个产品的最终目标是为日常生活和工作提供便利,为实现这个目标,就不仅仅是编码一项工作了。

没有周全的逻辑设计、物理设计,匆忙上线的编码很容易陷入需求变更的泥潭;没有全方位的测试,编码将不得不面临bug满天飞的困境;没有不定期的维护和科学的管理,编码将很快被历史所抛弃。正是由于这些非编码的工作也异常重要,就需要在日复一日的代码海洋中,尽可能的抽出时间去深入探索、自主学习新技术、新理论,找到适合自身高效成长的方法论。

由于程序员涉及的知识体系过于庞大,首先要设置明确的学习目标1,确定短期和长期的计划,明确具体交付物;编码自身就涉及很多的技术,如果没有一个高效的时间管理2,一切将无从谈起,对于初级程序员来说,一周之中至少要有4天,每天至少2个小时的时间要用于工作之外的学习;学习不是走马观花,而是要结合工作,要亲自动手尝试将新学的技术或工具用于日常工作中,学以致用3无融合不成长4,大量的技术论坛、社群隐藏着各种大牛,公司的兴趣小组也是高手如云,要利用好碎片化的时间去阅读、分享技术文章和在线教程,想不快速成长都难;健康是一生的事业5,要用定期运动、充足睡眠等良好生活习惯维护好,这样学习才能事半功倍;同样是10年的程序员,为何有的是资深专家,有的碌碌无为,关键的一点就是自我总结6,总结的过程就会不断评估自己从而调整计划,进而寻求反馈不断改进。

在学习过程中,有很多学习的方法都可以借鉴,找到适合自己的:多看书(喜欢碎片化的多看电子书、有耐心的多看纸质书)、多看技术博客(可能第一眼看不懂,不断领会就会受益非凡)、多问社会上的人(吃盐比你走路多的人,肯定有可以很快借鉴的地方)、维护自己的技术博客(记录你成长的历史,必然会助推你成才)、勤思考多动嘴(思考使你快速培养自我解决问题的能力,思考1个小时后仍无任何头绪就要借助他人----毕竟有经验人的一句点拨可以避免大量无谓的时间浪费)

罗马诗人贺拉斯的名句:“眼前沉寂的诸多人事会复活,而今辉煌的几许世情将坠落。”人一生之初心的兴衰正如这句名言所描述的那样,起起伏伏,辉煌不再。程序员作为一个打工人,从一个职场小白到职场老鸟不同的人需要经历的时间也长短不同,有的3-5年就可以接触公司的核心技术、核心机密,有的终其一生也无法窥得一二。有的沉迷于技术,有的渴望去管理,也有的得过且过。职业生涯前3年的打工人,有一飞冲天的,也有碌碌无为的,更多的是按部就班的。是怀揣着不确定性来到社会这个大染缸,曾经的理想被现实击的粉碎,在工作中立定脚跟后又重塑理想,希望有朝一日可以真正实现。

霍金说:探寻宇宙起源的秘密,只需回答两个问题:我们为何在此?我们因何而来?这两个问题有足够的魅力,让每个人在某一刻从睡梦中惊坐而起,面对无边的黑暗,再难成眠。只会编码的、会编码又会设计的、会设计又能不断推动产品的、能推动产品又能产生经济效益的----可以说是个阶梯性的发展,如果每个人都是能力不表现出来,不能为公司创造出超出自身能力的效益,公司只会越来越差,个人也会受损,反之就是双赢。

产品、技术不分家,产品需要技术去实现,技术需要产品去展示。作为一个程序员是离不开这些的:开发语言、设计工具、开发工具、数据库工具、开发技术等。这是我的一些使用情况:

开发语言:

Powerscript:1998-2005

Java:2005-至今期间使用

 Javascript:2005-至今期间使用

 c++:2007-2011期间使用

c#:2005-2005期间使用

Actionscript:2007-2007期间使用

Php:2011-2011期间使用

设计工具:

PowerDesigner设计工具:1999-至今期间使用

Visio设计工具:2005-至今期间使用

Balsamiq Mockups设计工具:2011-2017期间使用

Axure RP设计工具:2016-至今期间使用

开发工具:

powerbuilder系列(6、8、9、10)开发工具:1998-2005期间使用

 weblogic开发工具:2005-2006期间使用

jbuilder系列(2006、2007)开发工具:2006-2011期间使用

MyEclipse系列(7、10)开发工具:2006-2011期间使用

eclipse系列(3.1、3.2、3.4、4.7)开发工具:2017-至今期间使用

IntelliJ IDEA系列(2019)开发工具:2020-至今期间使用

borland c++ builder开发工具:2007-2011期间使用

DOTNET开发工具:2005-2005期间使用

数据库工具:

sybase sql anywhere7数据库:1998-2003期间使用

Mssqlserver数据库:1999-2003期间使用

sybase11.5.1数据库:2002-2010期间使用

oracle系列(8i、9i、10g、11g)数据库:2010-至今期间使用

 access数据库:2003-2003期间使用

    

开发技术:

单机应用系统

客户端/服务器(C/S)应用系统

多层客户端/服务器(多层C/S)应用系统

分布式客户端/服务器(分布式C/S)应用系统

 浏览器/服务器(B/S)应用系统

地理信息(GIS)应用系统

混合应用系统

面向对象

socket通讯

ejb

IIS

DCOM

MAPXTREME

数据仓库

Remoting

aspx

JSP

JBOSS

Tomcat

数据库连接池

21 多线程服务:

22 多级数据库服务器数据增量更新技术:

23 动态密钥机制:

24 进程监控机制:

产品可分为工具产品、业务产品(即非工具产品)。我也做了一些工具产品,如:桌面播放器(c++) 、数据库备份恢复工具(pb)、web浏览器(c++)、web远控工具(java)、端口测试工具(c++)、数据集成工具(java)、杀进程工具(c++)、文件下载工具(c++)等,但始终也没做太多的打磨。业务产品按业务领域又可以分为以下几种类型:电力行业、卫生行业、铁路行业、电信行业、教育行业等

在和很多人沟通过程中,我提到了一句话:如何开发一个成功的产品。

我们很多人做产品很多年了,从来也没有参与过一个成功的产品,仍然搞不太清楚什么是一个成功的产品,一个成功的产品应具备什么样特征?很多时候我甚至觉得参与这个过程的所有人之所以没有对现场故障引起足够的重视,就是源于此。正是由于没开发过一个成功的产品,他始终感受不到一个成功产品带给我们自己、带给客户的那种价值带来的愉悦感。

成功产品首先要有用户不停的使用,不见得是十年八年,也不见得每时每分。至少用户在相当长的一段时间(如:3年),每周或每月再或者是干某一件事时,第一念头想到的就是使用这个产品。

成功产品再有就是高稳定性,不是说网络不通、数据库损坏、服务器宕机都可以使用,但至少可以做到在正常环境下,但凡哪些外部因素没有发生时,他都可以正常的给用户提供服务。

成功产品最终的一点就是打动用户,不是说用户所有想的都能实现,用户所有的业务都能覆盖,但至少要做到用户在使用中能不停的感叹这个功能做的挺有想法、哪个设计真是把业务吃透了。

如果我们在处理现场故障时,都是把做一个成功的产品作为目标,而不是仅仅是不情愿的解决这次故障,我想所有的协调、所有的抱怨都是小case了。

说起来我们是在做技术前沿的一些产品,什么大数据、模型架构。。。其实在你做过若干年以后,你就会意识到:其实我们就是在做增删改查的应用,也可以说说输入输出的应用,我们将数据方便、快速的纳入系统,而又重新费尽心思的组装、组合后用各种形式展示给用户。所以说一切开发都是增删改查

一切开发又都不仅仅是增删改查,世界永远在变化,所有事物存在的基础也会发生变化:环境会变化、政策会变化、客户的认知会变化、我们的竞争对手会变化,再加上我们自身也会变化,如果仅仅会增删改查拿什么去应对增添字段、样式变化、业务重构。。。

所以这就需要我们不断锻炼自身的能力,练成很多超出常人的能力,在保证我们基础增删改查每一句代码、每一个调用的质量的同时,不断提升我们的效率。这样我们才有机会去完善一切开发又都不仅仅是增删改查这方面的能力,现实情况明明很简单的逻辑,一眼可以看穿的功能,反复的出现bug,简单功能的计划时间随着时间推移没有任何改变,逐渐趋于平庸。在出现问题的时候,怀疑这地方有问题,哪个地方也有疑问,好好的把大把的青春时间浪费在这些重复、琐碎的日常工作中,真正的程序员,要敢于直面我们的每一句代码、每一个函数、每一次调用,要敢于信誓旦旦的说这地方肯定没问题,要有问题只可能是******的问题,这样即便出现问题我们也能很快定位问题,并解决问题,让我们每个人通过不断练习获得胜任某项工作的能力,同时并提高我们所谓一切开发又都不仅仅是增删改查这方面的能力。

一定要有自信,出自我手的工作在我的意识形态内是不可能出错,每次出错就纳入自己意识形态,可以自我控制不再重复出现的问题出现2次的就要记在桌面(说明还未形成潜意识),每次工作前看一眼直到不再犯同样的错误。一般不要写新代码,要会根据新对象的特点找到以前的完美的解决方案进行复制完善(以前的已多次优化:性能、可读性、可操作性...),日积月累出现重复问题的概率就会大幅降低。———总之软件研发过程本就是一个成功少失败多的活,大概这就是所有程序员的宿命

在产品组封闭开发时,我们这么说:当我们苦思冥想设计陷入困境时,当面对开发的重重困难惴惴不安时,多想想:是谁挑起家庭的重担让我们后顾无忧?是谁在客户面前低三下四的为我们播下希望的种子?是谁在寂静的深夜为讨得客户的一丝好感而辛苦的解答问题?还有谁在悠闲的假期为唤回被折腾得失去信心的客户而不断重复的重现BUG?在公司如此艰难也可以说是最危险的时候大家都把期盼的目光投向我们?因为我们是自己家庭的支柱,是公司所有人的希望。这就要求我们:来即战,战即胜,胜即食。@全体成员 封闭开发时的产品组寄语同样送给深夜奋战的所有人。再度看到封闭开发时的《开发组寄语》,不由得有很多感慨。

搞技术的多少都对技术有些沉迷,谁也不想每天只是代码的搬运工,这就需要我们经常研究一些前沿或者说超前的技术,保持大家的饥渴感,当然有客户愿意为这些买单那就更好了。只有不断的接触、研究先进的技术,你才能不断保持对技术的新鲜感,不至于在技术日新月异的当前社会迷失自己。你选择了开发,注定你就不能轻松的生活,技术不断更新换代,客户需求千变万化,你要生存就需要不断学习新的技术【在你所的技术没有落后的情况下,你可以选择跳槽或不做这个客户项目,但在技术已经落后新技术已经在风口,你不转型你就会被淘汰】。选择了这个职业,也不用过于担心技术的更替,因为万变不离其宗,只要你在某个技术领域站稳脚跟,再学习新技术的时候,应该能很快入手,如果想熟练运用新技术就需要时间的积累了。不过为了你能站稳脚跟,你就要钻研的精神,遇到问题不是得过且过,而是要寻根追源,不是要死记硬背,而是要融会贯通。不要去试图记忆哪些枯燥无悔的语法、函数,而是要有钻研的精神,采用封装的方法,告诉自己下次遇到这些问题时我是不是能很快找到解决之道,如果不是就需要钻研如何找到解决之道。

头脑不灵活的人是做不了开发的,我总是对单位刚入职的人说:你如果遇到一个问题不能从1想到2,再从2想到3,你就要考虑自己是否适合这个行业。因为这个行业技术玩头脑的,一项技术你从入门到融会贯通,一项业务你从一窍不通到成为行业专家,没有相对聪明的头脑是不可能完成这些。也不是说你在这个行业生存不下去,而是你要升到一定高度太过困难了,可能找一个更适合你的职业对你的一生更好。这里说的聪明,不是会写几个算法,会脑子急转弯,而是根据用户一个想法可以快速形成一个相对可行的设计方案,根据用户一个修改意见可以快速把影响的地方考虑清楚并形成初步想法的大智慧、大聪明。并且再把用户凌乱不堪的思路、想法形成行之有效的设计方案、系统原型的过程中,也是需要头脑风暴,项目组献计献策的,没有一个聪明的头脑,客户凭什么为你做出的东西买单。

无论你是刚开始做产品,还是未完整的经历一个产品的生命周期,更或者是已经经历的多个产品的生命周期,希望你能真正珍视这一个个产品的机会。花无千朵好,人无百样红,产品也一样,无论你多么努力,也无论你多么知识渊博,一个产品总有那么一些地方是不如人意的。关键在于你是不是在每做一个产品时,有没有不断的追问自己的内心,你到底想做的是一个什么样的产品,你新做的产品和你以往所做的产品中有哪些不同,有没有什么你至今不可原谅的失误。你思考了,你犹豫了,哪你这个新产品就离成功不远了。

最后祝愿各位程序员都能开发出自己心意的产品,做一个成功的程序员。

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值