教育培训 > 对程序员来说最难的是写代码吗?

对程序员来说最难的是写代码吗?

2020-09-04 07:39阅读(77)

对程序员来说最难的是写代码吗?:谢谢邀请!对于不同阶段的程序员有不同阶段的任务,所面临的难点也并不相同,但是对于程序员来说,代码本身的难度只在学习的初

1

谢谢邀请!

对于不同阶段的程序员有不同阶段的任务,所面临的难点也并不相同,但是对于程序员来说,代码本身的难度只在学习的初期有所体现,随着编程经验的增加,代码本身的难度会逐渐下降,因为编程语言本身就是工具,只要多使用必然会越来越熟练。

通常情况下,编写代码的难度体现在以下几个方面:

第一:算法设计和实现。编程的核心问题是算法问题,编程问题说到底就是个数学问题,这就是为什么很多人认为编程难的原因,难在算法上而不是在编程语言本身上。算法实现还涉及到数据结构的应用,所以编程也被认为是算法设计加数据结构。算法设计和数据结构涉及到程序的执行效率,这对于大型系统来说尤为重要。对于研发级程序员来说,通常需要具备扎实的数学基础。

第二:架构的选择。架构设计、模块化、数据交换、资源规划、分布式处理、并发处理等问题是程序员面临的又一个难点,相对于算法来说,这部分难点需要大量的经验积累和对技术本身的深刻认知,所以往往架构师都需要有丰富的实践经验。如果说算法解决的是核心问题,那么架构解决的就是整体协调性问题。如果把算法设计看成是优秀的球员,那么架构设计就相当于教练员,只有有效的配合才能取得好的成绩。

第三:技术验证和调试。研发人员重要的任务是验证,验证技术是一个漫长且复杂的过程,要模拟出实际的应用场景,然后通过不同的方案设计来验证执行效率,这通常也是一个比较难的工作。技术验证和调试需要一个团队的配合,一个技术的验证过程往往有众多经验丰富的技术专家来进行,所以这是技术含量比较高的工作之一。

程序设计工作是一个门槛相对较高的职业,通常情况下,程序员在整个职业生涯的过程中也需要不断的学习。

作者简介:中国科学院大学计算机专业研究生导师,从事IT行业多年,研究方向包括动态软件体系结构、大数据、人工智能相关领域,有多年的一线研发经验。欢迎关注作者,欢迎咨询计算机相关问题。

2

谢邀。我是一名Java后台开发,还是一名工作没多久的“码农”。写代码作为工作的一部分其实不算难,甚至程序员写代码的时间比其他事情花的更少。我就分享一下咱们Java后端开发的小体会吧:

初级程序猿大部分都是写增删改查的业务代码,增删改查最需要技术含量的是查,归根结底都是写SQL语句,有的业务逻辑复杂一点就SQL语句复杂一点,或者数据库里不好处理就在Java代码里处理。只要数据库学的还行,MySQL比较会用,Java功底有一定基础,基本上都能胜任敲代码的工作。



文|热心哥哥宇文笑

业务复杂,有的系统尤其是一些toB的系统,比如一个上市公司的超市人力管理系统,这是非常复杂的,人事组织,薪资社保,还要针对不同地区分公司不同类别的员工进行不同的代码处理。

需求变动频繁,有些项目的顾问或者产品经理没把控好,导致需求被客户拖着走,搞产品的可能觉得也就变化一点点东西,实际上有的功能代码需要后端重写,数据库的表结构一变,那改动也是得跟着变。咱们敲代码的朋友最不喜欢的就是返工,我们宁愿去接受更多的开发新任务也不想再去重写自己以前写的代码。(不用说什么重构,这些业务代码重构其实并没有什么技术上的突破)

代码优化,其实比较难得住人得,尤其是难住我们这些刚入行的程序员。有的业务数据量庞大,就得先考虑数据库优化,代码多线程优化,总之优化代码倒是一件比较进阶的拆事,比敲代码难。

来说说,作为程序员的你,最难的什么呢?

3

谢邀~

工作十余年,见过很多代码,也写过很多代码,当面对这些情况的时候,我也会束手无策:

不确定的需求

你见过这样的业务人员/客户么?对方说:

  • “我给你提个需求,但是这个需求我还没有想好。”

  • “ 你们可以先开始开发,等我想好了再随时调整。”

  • “ 你们先画页面吧,页面上有哪些东西我不太确定,等你们做完一版后,一起看看吧。”

  • 想法可能随时在变,好不容易沟通确认下来,刚动手写了几行代码,就接到一通电话:“这个需求,我跟我们领导汇报了,我们领导又有点儿新的想法。”

重构别人的代码

很多时候,程序员都是在做二次开发,可能进入新公司的时候,项目已经运行好多年了,接手的代码一没文档,二没注释,并且没有任何工作交接。

这种时候,每当有新的需求需要做,大部分时候程序员都会选择重新写一套逻辑。万不得已必须要改老代码的时候,一定会战战兢兢的。

程序员最烦两件事:

  • 第一件事是给自己的代码写文档;

  • 第二件呢?是别人的程序没有留下文档。

没有思路的代码

写代码之前,不管是画流程图,还是写设计文档,又或者随手写一些伪代码,这些都是代码的思路。如果面对一个需求,你欠缺业务知识和逻辑思维,那么可能连一点儿思路都没有,写代码更是没影儿的事儿了。

所以我老说,写代码也是需要一些“悟性”的,也是需要业务知识积累的。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

4

对于Java工程师来说,最难写的不是代码。而是


1、算法


2、对Java底层原理的学习、对源码的理解


3、对线上问题的检测和排查


4、对JVM的调优


5、对大型分布式系统技术的理解和实践


6、对不断迭代的新技术的学习


7、对奇葩需求的思考和拒绝

5

写代码是程序员的主要工作,但是却不是最难的工作,最难的是踢皮球和吵架。


踢皮球

说起踢球你是不是脑海中想象着在办公室铺一个绿地毯,两边再架上一个门儿,组织十几个程序员开踢?你想多了,程序员天天加班哪有时间踢球。我说的踢皮球是程序员之间、程序员与测试人员之间互相推诿的意思。

踢皮球是程序员工作中很常见的一个现象,而且某些人学的炉火纯青,走火入魔。自己写的代码出问题了?不可能,在我的电脑上是好的啊?什么,发现一个bug?不能够,肯定是你的环境有问题!运行不了?更不可能了,肯定是你的编译器版本不对,或者是你没安装什么插件。

吵架

程序员之间一般不会有什么矛盾,大家都是写代码的都是加班的难兄难友,不要太团结哦。

不过程序员测试之间就不好说了。测试抛来一个问题,程序员心底本能的反应就是:“哇哇,到底有没有看我写的运行教条件”。测试也不是省油的灯:“我就是按照你给的条件测试的啊,你想抵赖?就是你写的bug”,这么一来二去双方吵起来了。



这个时候产品经理来了:“那个谁谁谁,这有个新的需求,你下班前给做了吧,客户急着要!”程序员一听本来就气在头上,再经产品经理这么一折腾,程序员内心的小愤怒彻底爆发,一言不合就干起来了。这真是一个郁闷的故事。


程序员其实就想好好写代码,为啥就不让人好好写代码,程序员要哭了!

6

绝对不是!

没工作之前,我是这样觉得的,但是工作之后,我才发现,有更难受的!

工作中,最难的是什么?

毫无疑问,是源源不断、千奇百怪的需求!

如果在工作中,遇到好一点的产品经理,他和你商量着,让你开发功能,什么能做什么不能做,都会讨论的清清楚楚!

但是如果遇到比较轴或者没有立场的产品,这才是真的难受!

比较轴,那么你和他就聊不下去,明明一个功能不合理,可是他会和你杠到底!

没立场,这一般都是新手产品,他们面对甲方的需求,只会同意,到头来苦的就是开发人员!

最奇葩的是,没有产品,临时做一个东西,直接给开发发一份需求文档,照着需求文档做界面!

真的是把前端开发当成产品、美工、开发一体的了!

所以,我觉得最难的不是代码,难的是工作中的奇葩事,你觉得呢?

7

最难的是产品经理是你老板

8

最难的是跟不是代码的东西沟通……

9

绝大多数外行人可能会认为对于程序员来说,最难搞定的工作就是写代码,而实际上并非如此。要知道写代码可是程序员的基础工作,也是程序员的看家本领,当然好的代码还要具备高内聚,低耦合,高效率,易维护,易扩展等诸多标准,但是就写代码本身而言,对程序员来说并不是难事,因为还有很多事情远比写代码要头疼的多。不信?那我就一一跟大家吐槽一下:

寻找最佳解决方案

比如在工作中给你一系列的需求,你被要求设计和构造技术上的解决方案。这包括了设计数据结构,算法,逻辑上的封装等等,还要考虑到用户安全方面的因素。最大的挑战在于既要确保你的设计可以满足客户需求,让客户认为合理,同时还要在项目时间允许范围内完成。

编写文档

如果你觉得编写文档so easy,那么我想你是对撰写文档有什么误解。撰写文档需要说明代码的含义并解释应用的工作原理。这就包括了独立的文档文件和代码注释,让更多的人理解你的代码。要知道这是一件非常耗时的工作,如果没有人去读它们的话就是纯属浪费时间了。毕竟相比于写文档,很多程序员还是更爱写程序。

维护他人的代码

这是绝对是一项送命任务。有时候因为离职或者工作调整等原因,你需要维护和调试其他程序员的程序,或一部分代码。在这个过程中你需要用尽一切办法理解前任开发者的意图,特别是当这些代码写得很差,也没有注释和文档可以帮助到你时,简直可以用一场灾难来形容。

解释自己的工作

向周围的非程序员朋友,家人,同学解释自己的工作是在做什么,不做什么。你爱的那些人可能不理解你在做什么,而且你还不断的被问及计算机相关的一切问题。这种感觉比加班通宵还要绝望啊……


作为程序员,大家认为比写代码难搞定的事情还有哪些?欢迎在评论区畅所欲言,分享自己的经历。

10

作为go程序员,除了玄幻需求,其他多不是问题。别谈算法,特别是那些嘴炮,所谓的成果,多能找到已有开源项目或者现成的包。至于利用这些基础包实现复杂算法,几乎是程序员本能。