学妹问,学网站开发还是打 ACM?
聊聊我的选择
大家好,我是鱼皮,前几天看到一位大一计科同学的问题:我想学做 Web 项目,又想学算法搞 ACM,如何取舍呢 ?
ACM 是国际大学生程序设计竞赛,旨在展示大学生创新能力、团队精神、编写程序、分析和解决问题的能力,认可度极高。
这个问题我相信不少同学都纠结过,四年前的我也一样,下面给大家聊聊我的选择。

我的选择
刚上大学的时候,我面对各种编程语言和新奇知识无从下手,也不知道自己适合学习什么。于是大一期间,我胡吃海喝,学了 C 语言、C++、Java、web 开发、Python 等,持续为学校做网站的同时,也在学校的课堂教育和熏陶下做了不少 ACM 算法题目。
吃多了容易拉肚子,这个比喻虽然土但却非常贴切。当时的我就是这种状态,每天要学的东西都很多,再加上算法题目做不出,简直压力山大。时间长了,我竟然都已经麻木了,开始机械性地学习、机械性地刷算法题目,甚至有些做不出的题直接复制粘贴应付了事。

这种高压状态持续一段时间后,我意识到,大学的时间有限,我的精力也有限,一定要 懂得取舍 !
舍得舍得,小舍小得,大舍大得,不舍不得。
在一番考虑下,我决定放弃 ACM 了,专心去学习软件开发,从此在做项目的路上无法自拔。
原因
为什么放弃 ACM 选择学习 web 和其他开发呢? 对我而言,主要是以下几个原因:
难度
ACM 竞赛专业性强,题目大多数是英文描述,考察数学思维和逻辑,难度较大,不好上手。我在做 ACM 初级题目时就已经感觉非常枯燥了,做的脑阔疼。
而 Web 开发入门相对简单很多,可以即学即练,比较轻松有趣,还能发挥创意做出自己的作品,收获成就感。
对我来说,做 ACM 就犯困,还不如学 Web 开发,起码能有动力学下去。

性价比
学任何知识都需要时间,都要多投入才有收获,所以这里我们只考虑 性价比 。
ACM 本就是比赛,竞争非常激烈,各种叫得上名号的名校学子、数学天才、算法大牛,想要获得一个能拿出手的奖,要么你很聪明有天赋,要么就投入比别人更多的时间去日常训练,否则你凭什么超过别人呢?
而 Web 开发的学习时间相对自由灵活,也几乎感受不到竞争。当然,不是完全没有竞争,毕竟就业找工作时还是要看你的能力。而且竞争小也未必是好事,容易让人懈怠。

未来发展
在选择时,要先问问自己,对什么感兴趣呢?今后打算朝哪个方向发展呢?是做算法工程师,还是开发工程师呢?
对于任何方向的程序员来说,算法思维都非常重要。虽然多做 ACM 题目能训练算法思维,但是如果你不是想从事算法工程师工作的话,绝大多数的算法在今后工作中是用不到的,甚至求职面试时问的算法题也不会达到 ACM 题目的难度。
的确,如果你能在竞赛中拿奖,成为算法大牛,那么求职面试时录取机会加倍放大;但如果你没有很好的奖项,在平时又没有精力去学习开发知识,只是沉迷于刷 ACM 算法题目,那么在找工作时,你完全处于不利状态。

我从小就想开发自己的软件,梦想搞一番大事业,可谓是年少有为不自卑。在入学时就定下了目标,想从事软件开发方向,因此选择学 web 对我来说帮助会更大。
风险
我高中时数学其实是不错的,但在 ACM 题目和算法大佬面前,仍是一介草民。做学校 OJ 题的时候还好,但是后来看《挑战程序设计竞赛》等 ACM 书籍时,就有些吃力了。看完之后,再做 ACM 题目时,经常还是一道题折腾几个小时仍然做不出,写出了代码也不能完全理解,还老是忘,就很怀疑自己的智力。即使去参加竞赛了,我也是充当背景板或者只是 “到此一游”。

总之,在做 ACM 题目时,我看不到自己的未来,很担心做了半天题目,还是做不出,浪费了时间,搞崩了心态。而学习 Web 开发时,网上资源多,解决方案多,我的进步更平稳。
虽然我在学习上有冲进,但不会为了自己的未来而冒险。
头发
还有就是,我发现自己刷 ACM 题的时候,头发掉的明显比写 Web 时要快,看似合理又很不合理!

虽然我选择了 Web 开发,但不是说建议大家放弃 ACM。其实大一到大二的上学期,多做一些 ACM 算法题目对自己也是很有帮助的,接受过一些训练,以后找工作刷算法会更轻松。此外,不少同学就是对算法、对数学感兴趣或者有天赋,那么参与 ACM 是一个很好的选择。但也千万 不要把一切堵在 ACM 上,还是要抽出时间学习基础开发技能的,多一条路会更稳一些。
关于程序员如何高效学习算法,欢迎看下这篇文章:刷了 1000 多道算法题,一点心得
地址:https://mp.weixin.qq.com/s/LCPMhE1-Bh-XKDU9Re0wkw
最后,无论选择哪个方向,都要努力呀,毕竟越来越卷了。
相信自己有能力,那么你就真的会有!
觉得本文还不错的话,希望朋友们能 点赞 + 在看 支持下,给俺点创作的动力 ️

学妹问,学网站开发还是打 ACM?的更多相关文章
- 有个计算机专业的学妹问我:我这个zip文件密码破解运行起来为什么内存爆了?
1.这篇博文的由来 2.跑下错误代码,找病根 先把学妹发给我的错误代码放上,能发现他为了提高速度加了多线程的代码,很聪明哦: import zipfile import itertools from ...
- 学妹问的Spring Bean常用配置,我用最通俗易懂的讲解让她学会了
你好呀,我是沉默王二,一枚有趣的程序员,写的文章一直充满灵气,力求清新脱俗.昨天跑去王府井的小米店订购了一台小米 10,说是一周之内能到货,但我还是忍不住今天就想见到她.见我茶不思饭不想的,老婆就劝我 ...
- 给学妹的 Java 学习路线
大家好,这篇文章主要是讲解下如何自学 Java,这个问题有很多粉丝私信问过,今天又有直系学妹问我如何学习 Java? 我就以我的经历,总结下分享给大家,有不当指出或者有更好的方法建议也欢迎留言指出,大 ...
- 给大一的学弟学妹们培训java web的后台开发讨论班计划
蓝旭工作室5月大一讨论班课程计划 课时 讨论班性质 讨论班名称 主要内容 主讲人 第一讲 先导课 后台开发工具的使用与MySQL数据库基础 后台开发工具的基本使用方法与工程的创建,MySQL数 ...
- 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入
使用react全家桶制作博客后台管理系统 前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基 ...
- C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi
C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...
- 靠这些秋招秘笈,齐姐的学妹今年已经拿到了 8 个offer!
小齐说: 现在秋招进行时,正在找工作的小伙伴进度都怎么样了呀? 今天这篇文章是我武大的学妹今年秋招的经验分享,庆妹去年才决定转行,现在已手握 N+ 个 offer - 这篇文章干货满满,庆妹对每一块面 ...
- 手机APP开发:学JAVA转安卓APP开发是不是很容易?
成都亿合云商小编为您分享:Android开发是以Java语言为基础的,Android 虽然使用Java 语言作为开发工具,但是在实际开发中发现,还是与Java SDK 有一些不同的地方.Android ...
- 循序渐进学.Net Core Web Api开发系列【0】:序言与目录
一.序言 我大约在2003年时候开始接触到.NET,最初在.NET framework 1.1版本下写过代码,曾经做过WinForm和ASP.NET开发.大约在2010年的时候转型JAVA环境,这么多 ...
随机推荐
- Selenium3自动化测试【17】元素定位之Link定位
Link定位 find_element_by_link_text方法是通过文本链接来定位元素. 以Bing首页中顶部的[学术]链接为例,如图所示. 查看对应的html代码.从html中我们能看出这是一 ...
- uni-app&H5&Android混合开发一 || 最全面的uni-app离线打包Android平台教程
前言: 为什么会写这么一个教程,因为很久之前做过一个对接银行POS我们的系统是使用的H5开发的app应用.但是假如对结果银行相关业务的小伙伴应该都清楚,银行的业务相对于其他的对接方而言安全性比较高,而 ...
- 浅谈Asp.net Mvc之Action如何传多个参数的方法
最近,工作上有一个需要:用户查询日志文件信息,查看某一个具体日志信息,可能同时查看该日志所在日期的其他日志信息列表. 为完成此功能,我打算在URL中传入了两个参数,一个记录此日志时间,另外一个记录日志 ...
- 【责任链模式】责任链模式结合Spring实战Demo
备注: 责任链与策略模式有很多相似之处,如都是行为型设计模式,都能够处理代码中的if-else逻辑 主要区别在于: 策略模式 封装了算法,通过上下文对象去接受客户端的数据,根据数据类型执行不同的算法 ...
- python 第三方库大全
Python 作为程序员的宠儿,越来越得到人们的关注,使用 Python 进行应用程序开发的越来也多.那么,在 2013 年有哪些流行的 Python 项目呢?下面,我们一起来看下. https:// ...
- [CTF]培根密码
[CTF]培根密码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_40836553/articl ...
- Webpack的热更新是如何做到的?原理是什么?
一.是什么 HMR全称 Hot Module Replacement,可以理解为模块热替换,指在应用程序运行过程中,替换.添加.删除模块,而无需重新刷新整个应用 例如,我们在应用运行过程中修改了某个模 ...
- 【maven】下载阿里云上没有的依赖
问题截图 去maven仓库找了,也没有找到这个项目(github中拉去的项目)中的,然后以为这个仓库没有,不知道要去哪里下载. <dependency> <groupId>or ...
- PhpStorm 配置本地文件自动上传至服务器
目的:本地文件夹下的文件实时同步至指定服务器的文件夹,减少代码移植的成本和风险 添加一个SFTP连接 Tools - Deployment - Browse Remote Host 配置连接参数 Co ...
- 深入源码理解SpringBean生命周期
概述 本文描述下Spring的实例化.初始化.销毁,整个SpringBean生命周期,聊一聊BeanPostProcessor的回调时机.Aware方法的回调时机.初始化方法的回调及其顺序.销毁方法的 ...