网友提问:
对程序员来说最难的是写代码吗?
优质回答:
谢谢邀请!
对于不同阶段的程序员有不同阶段的任务,所面临的难点也并不相同,但是对于程序员来说,代码本身的难度只在学习的初期有所体现,随着编程经验的增加,代码本身的难度会逐渐下降,因为编程语言本身就是工具,只要多使用必然会越来越熟练。
通常情况下,编写代码的难度体现在以下几个方面:
第一:算法设计和实现。编程的核心问题是算法问题,编程问题说到底就是个数学问题,这就是为什么很多人认为编程难的原因,难在算法上而不是在编程语言本身上。算法实现还涉及到数据结构的应用,所以编程也被认为是算法设计加数据结构。算法设计和数据结构涉及到程序的执行效率,这对于大型系统来说尤为重要。对于研发级程序员来说,通常需要具备扎实的数学基础。
第二:架构的选择。架构设计、模块化、数据交换、资源规划、分布式处理、并发处理等问题是程序员面临的又一个难点,相对于算法来说,这部分难点需要大量的经验积累和对技术本身的深刻认知,所以往往架构师都需要有丰富的实践经验。如果说算法解决的是核心问题,那么架构解决的就是整体协调性问题。如果把算法设计看成是优秀的球员,那么架构设计就相当于教练员,只有有效的配合才能取得好的成绩。
第三:技术验证和调试。研发人员重要的任务是验证,验证技术是一个漫长且复杂的过程,要模拟出实际的应用场景,然后通过不同的方案设计来验证执行效率,这通常也是一个比较难的工作。技术验证和调试需要一个团队的配合,一个技术的验证过程往往有众多经验丰富的技术专家来进行,所以这是技术含量比较高的工作之一。
程序设计工作是一个门槛相对较高的职业,通常情况下,程序员在整个职业生涯的过程中也需要不断的学习。
作者简介:中国科学院大学计算机专业研究生导师,从事IT行业多年,研究方向包括动态软件体系结构、大数据、人工智能相关领域,有多年的一线研发经验。欢迎关注作者,欢迎咨询计算机相关问题。
其他网友回答
大多数非程序员认为软件开发是非常困难的,但是却不是最难的,在这里给大家呈现9个程序员“难事”,如果你也从事软件开发,哪个是你的痛点?
1.选择最佳解决方案
给你一系列需求,要求设计和构造技术上的解决方案,这包括了设计的结构搭建,算法,逻辑封装等等,还要考虑用户的安全性能。
难点:设计的产品满足客户需求,让客户认为合理,在项目的时间允许范围内。
2.写测试任务描述
编写单元测试,确保代码中每一部分的功能正确。这样做可以尽快发现bug,让后续的测试变得更加便捷。
难点:枯燥乏味,让人觉得在做多余的事情。
3.编写文档
说明你代码的含义并详解应用的工作原理,为了让更多人理解你的代码,这里包括独立的文档文件和代码注释。
难点:编写文档非常耗时,如果没有人看那就是浪费时间,相比于写文档,程序员更爱写程序。
4.实现开发人员并不认可的功能
在工作中,客户会要求实现一些并没有用的功能,你不得不实现,尽管它们并不是你的本意,甚至觉得不应该出现。
解决方法:甲方说什么就是什么,把时间和精力专注于客户提出的要求上。
5.维护他人代码
维护调试别的程序员写的代码。
难点:理解前任开发者的意图,前任开发者是如何设计这些代码的,如果这个代码写的很差,也没有注释和文档,那就很糟糕了。
6.互相沟通
作为程序员,沟通也是非常重要的,从客户那得到需求,给经理提交报告,和测试一起工作等等。
难点:你需要与别人进行技术上的沟通,当你和QA或者其他工程师出现不同意见,沟通就非常重要了。
7.预估项目工期
项目一开始,就要大概预估多久可以完成。
难点:一般情况下你是从来没有做过这个项目的,你只能基于模糊的需求来估算结束的日期,还需要给意外情况分配时间。
8.解释工作
向周围的朋友,家人解释你的工作内容。
痛点:当别人知道你是程序员的时候,第一句话永远都是那你会不会修电脑。你的亲人可能不理解你在做什么,而且还要不断的被问及计算机的相关知识。
9.程序命名
想出一些名字,为你程序中的变量、过程、函数、类、对象、数据库等命名。
难点:命名并不是随便起一个就可以,需要想出合适的,简洁的名称,想一个可能很简单,想多个就比较麻烦了。
其他网友回答
对于大多数程序员来说,代码是最简单的,因为代码是固化的,说白了,如果不纠结于规范和性能,大多数程序员都能按需求写出业务代码来,这个我相信是所有合格的程序员都具备的基础能力,那么什么是最难的?
笔者以自己为例,谈谈自己的看法。在我刚刚入行的时候,写代码确实是最难的,对于开发语言的语法都不熟,很多东西必须有参考代码才能跟着写下去,很难加入自己的东西。
大概半年之后,我感觉代码写来写去都差不多了,常写的代码写来写去也就是那么多,并没有太大的技术含量,只需要改改传参什么的就行了,这个时候对于我来说,最难的是理解需求,当然了,我现在依旧还是处于这个情况之中,有时候我的领导也会带着我一起去客户现场听客户谈论需求,但是我经常听着听着就神游了,我也很想集中注意力,但是客户老是讲着讲着我就有点开始跟不上他的思路了,明明说的是中国话,我居然就是听不懂他想表达什么???慢慢的我就干脆不听了,等着领导给我讲解然后安排任务就好了。因为这个情况,我的领导也会经常批评我,他说想在下个项目提拔我做项目经理,但是我老是不能理解客户的需求,我只能说我也很无奈,和这些人谈需求,我宁可多写几行代码来得轻松。
而后续,我个人感觉最难的应该是保持学习的热情吧,因为程序员是最需要持续学习的工种了,现在我的技术栈大概是SSM+springboot+vue+mysql+mp+redis+git+maven+elk+MQ,后面我打算学一学docket和nginx等等,而上述所谓的现有技术栈,大多也都是停留在配置过,会用且跑得通的地步,你要问我底层一点的东西,我必然也是一问三不知的状态。但是你想要达到资深开发或者架构师的级别,很显然,你只会配置是远远够不上这种级别的,人家只会说你是码农!!!
最后,加油吧,相信努力终究是会有回报的!!!
其他网友回答
程序员,是专业写代码的,对我们而言,最难的,从来不是写代码。当然,刚入行的时候,可能会遇到不知该怎么写代码的情况,比如:我入职的第一个题目就是通过 zookeeper 实现两个应用之间的通信,当时不晓得怎么处理,百度了几个小时,最终才搞定。当然这段时间很快就结束了,一般而言,入行1到2年之后,写代码就不会是问题了。
从技术层面来说,个人感觉最难的是业务的技术选型和个人的技术能力提升。技术选型,从来都不是一个简单的事情,它和我们所经历的业务、所接触到的架构体现密切相关,只有精准的把控到每个中间件、每个技术点的优缺点,对每项技术都有切身的体会之后,才能给业务选择一套比较合理的技术体系。其次,技术选型还受团队技术能力、公司基础服务体系的限制,做到知业务、通技术、熟悉基础能力,才能搞定技术选型。而对于个人的技术能力提升,这块也不是很容易,作为 java 服务端的程序员,遇到的技术体系多种多样,从底层的 jvm ,到微服务的架构生态 spring cloud,再到横向拓展的 mysql、redis、es、mq等种种都需要了解、熟悉,再网上大数据、算法相关的能力也可以拓展,多点多面,选择和坚持下去真心不容易。
从职业发展角度来说,个人感觉最难的是业务总结汇报和跨部门的沟通协调。写 PPT 汇总工作,对程序员来说,从来都不那么简单,很多时候,忙碌了一年,除了做需求还是做需求,要说去总结,感觉又没有什么好总结的,往往 PPT 中体现了一年中20%的工作量,还有80%不晓得该怎么总结汇报。公司发展到一定规模,一个业务很多时候会跨好几个部门来协作完成,此时的跨团队沟通的成本,所需的时间都成倍的增长,需要程序员具备一定的沟通技巧和变通能力,来推进自己负责业务的发展。
综上所述,写代码从来都不是问题,相对于和人打交道,程序员更习惯和机器进行沟通。
作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。
其他网友回答
最难的是跟不是代码的东西沟通……
以上就是小编关于【对程序员来说最难的是写代码吗】的分享,希望对你有用。