为什么只会编程的程序员无法成为优秀的开发者?

目录

1 开发者的工作目的

2 开发者的工作流程

3 计算思维是很多人可以具备的能力

4 技可进乎道:坚持工匠精神避免实用主义


今天我尝试从计算教育的角度,解释为什么只会编程的程序员无法成为优秀的开发者。希望大家从问题出发,培养定义问题、分析问题、设计测试解决方案并优化解决方案的能力,从工程方法论的角度,打造自己的计算作品。

1 开发者的工作目的

计算机科学和技术已经极大地改变了我们的世界, 计算机科学的思维方式、问题解决方法和创造方式对于生活的各个方面都变得非常宝贵。当我们讨论计算机相关话题的时候,我希望大家能够开阔思路,用计算领域的相关知识,用计算领域的一些基本思维方法和自己创建的工件(或者叫程序),来做一些有意义有价值的事情。如果只是为了能做什么程序可以显摆,能参加什么竞赛可以帮助升学,这样一定在计算领域无法走远。谈到计算机科学基础教育,我非常建议大家去学习参考美国K-12计算机科学教育框架(以下简称框架),大家可以到 https://k12cs.org/wp-content/uploads/2016/09/K%E2%80%9312-Computer-Science-Framework.pdf下载这份框架。

我非常认同框架提到的计算机科学教育的愿景,我也希望更多的人能理解这段话背后的意义。

所有学生都批判性地从事计算机科学问题; 以创新的方式解决问题; 并创建具有实际 、个人或社会意义的计算工件。

英文内容如图所示。

具体内容如下,

框架描述了美国基础教育里学生经历的计算机科学历程。

框架包括核心概念和核心实践。

从这里我们可以看到,算法和编程是核心概念的一部分,用编程创建计算工件也只是实践中的一个环节。如果我们只看到或者只教孩子们学习编程,会有很大的局限性。因为一提到编程,大家马上想到语言和算法,缺乏对计算领域整个体系的系统理解。除了算法和编程,要想理解计算机科学,还要了解计算机系统、网络和互联网、数据和分析以及理解计算给我们带来的正面和负面的影响。坦率地说,在计算机领域,编程真的是很小的一个部分。当我们想用工件或者程序来解决一些问题来创造一些价值的时候,我们需要了解很多关于编程以外的内容,做除了编程以外的更多时间,比如把一个问题抽象成算法,然后变成可以顺利进行的代码程序,还要为这些代码搭建可以让其运行的系统环境,比如云服务器、网络、应用服务器、操作系统或者硬件。

2 开发者的工作流程

相比程序媛(Progarmmer)这个词,我更喜欢称自己为开发者(Developer),因为程序媛这个词实在不能说明我的工作内容以及我的全部价值,作为一个开发者,当我遇到自己想解决的问题时,我会按照下图的过程来做。

要把想解决的问题最终变成一个可以应用的计算工件,作为一个开发者,我会完成以下的过程:

  1. 分析问题,将问题转换成软件产品的功能点,这个过程中就需要我有把问题转换成功能的分解能力;

  2. 针对每个功能点设计计算工件,运用将具体转换成抽象的能力,寻找技术解决方案,建立数据对象、程序逻辑以及与使用者的外部连接等等,设计的过程中也会考虑用户体验、信息安全以及第三方接入等等的问题;

  3. 选择某种或者某几种语言编程实现工件;

  4. 当工件完成时,我找到用户做测试,获取用户的反馈。

在这个过程中,大家会发现,如果我只会编程是无法完成一个作品的。我需要分析问题的能力,需要与人沟通协作,将具体的问题转化到抽象的实现,还要将抽象的计算实现还原到具体问题或者情景,我还需要创新等等软技能。这些都要求我有较好的工程思维和科学思维,建议大家阅读【教育】科学思维和工程思维的学习和研究资料。作为一个开发者,我感受着计算领域工作对我自身的发展以及带来的乐趣,我喜欢计算领域工作者这个群体,因为他们大多数谦虚、诚实、肯于承认自己的错误、有耐心、有着好奇心和强烈的求知欲,懂得与他人合作,有创造力却也遵守一定的纪律,懂得坚持也懂得放弃,紧跟潮流,坚持学习,会用高明的手段偷懒,有些好习惯。大家可以阅读     【趣说】程序猿/媛特有的个性魅力_苹果二的博客-CSDN博客获得更多信息。

3 计算思维是很多人可以具备的能力

作为现代社会的一员,不管是不是计算领域的从业者,都可以在遇到问题的时候问自己,我可以用计算领域的知识、思考和解决问题的方法以及具体的工件来解决问题吗,如果可以解决,我需要做哪些事情?因为计算思维这个能力,其实很多人是具备的,大家可以看看【哲思与实战】计算思维 Computational Thinking以及【计算机教育】看《计算机科学导论》,发展计算思维能力

我曾在

非常建议大家去读计算机教育学家 Mark Guzdial的文章:计算机教育的意义:计算机教育是21世纪文化的基础Computing Education as a Foundation for 21st Century Literacy,大家可以到 Computing Education as a Foundation for 21st Century Literacy | Proceedings of the 50th ACM Technical Symposium on Computer Science Education下载论文,

访问https://www.slideshare.net/markguzdial/computing-education-as-a-foundation-for-21st-century-literacy  https://www.slideshare.net/markguzdial/computing-education-as-a-foundation-for-21st-century-literacy 可以下载演讲的幻灯片。

4 技可进乎道:坚持工匠精神避免实用主义

拉拉杂杂写这些内容,是希望当谈到计算机教育时,教育者应该让学习者体会到计算领域的一些思维方式、解决问题的方法和创造方式,感受到这些方式和方法背后的核心理念对提出、发现以及解决问题的作用,然后在这些基础上,真正地可以做出自己的计算作品。希望大家能离开一些误区,比如以为计算机学习就是要学那些能去参加比赛的内容,学那些能马上看得见可以显摆的技能。魏源曾说过”技可进乎道“,希望我们的教育能多传些道,同时又区分工匠精神和实用主义显摆主义,因为这两者本来就不是一回事。工匠精神事实上是建立在对理念和方法深深的理解后,然后利用知识创造出自己的作品。这一点,我们最近而又最远的邻居日本早就给我们做了示范。学计算机科学,请不要只强调编程,因为要能在计算领域做实实在在的事情,编程只是很小的一部分。所以建议做机构的大家以后起名字,也不要只会用编程两个字,用计算(Computing)相对更全面些。可以用核心理念和核心实践来代替局限的编程这个词。

最后,希望在这个计算机科学的黄金时代,通过我们优质的计算机教育,培养更多的人才,创造出有价值的作品,改善或者改变我们的工作和生活。也希望读了这篇文章的开发者朋友,积极培养自己的功力,愿大家技艺精湛,做出优秀的计算作品!

猜你喜欢

转载自blog.csdn.net/weixin_38575258/article/details/125359085