现在咱们不讨论技术,而是来聊一聊最近发生的一些事情和以后的主要方向。总是思考技术其实也是一件很累脑子的事情。
我其实很不擅长写与人相关的文章,这或许也和我自闭的性格有关——喜欢与技术打交道多于与人打交道。但是时间越久,我越觉得写这篇文章是很有必要的。所以思前想后,还是来写了。
前言
其实应该有不少人是因为我在CTF方面的一些文章而关注我的。这几天我也简单翻了翻以前的文章,确实,CTF相关的很多文章阅读量都非常高,那些文章的点赞数量在所有文章中也显得很多,也能看出大家对我在这方面的努力的认可。
一开始我来写文章,实际上是为了有一个稳定的云端平台可以来存储我的笔记,方便随时查看,当时也完全没有想到自己写出来的东西可以帮助别人学习。直到有一次,小组里有个同学跟我说他的舍友正在看着我的文章入门CTF,当时我就惊了,原来我的笔记还可以对其他人产生帮助。
但是由于从今年六月开始接二连三发生的一些事情,我决定淡出CTF圈了。在这里还是要跟那些因为CTF方面的文章而关注我的读者说一声对不起,今后大概不会再更新CTF相关的文章了。
淡出CTF圈的一些原因
最直接的原因,还是因为我发现自己完全不是打CTF的这块料吧。我一直以为兴趣可以弥补一切先天上的不足,但是前几天的省赛给了我一个响亮的耳光——我被同小组的一个几乎不学习、从未做过笔记的人打得落花流水。那一瞬间我就觉得,我十几万字的笔记几乎全都白做了,将近一年在CTF和安全方面的努力也全都白费了。兴趣和努力果然还是赶不上天赋来的实际。
当然,其他的原因也不是没有——比如脑洞不够大,总是想不到题目考察的是什么;不擅长打比赛和考试;逆向思维不行;知识面太窄……等等。
安全和CTF是一个很需要天赋的行业。而我恰好不具备这个行业所需要的全部天赋。所以就算再怎么努力,还是赶不上那些不努力却拥有极大天赋的人。
既然如此,为什么不去做真正适合自己做的事情呢?我在从前端开发转到后端开发的时候就说过,“与其花大量精力去填补自己的短板,还不如将自己擅长的事情做精做深,因为这个社会需要的不是什么都懂但是什么都不精的所谓‘全栈’,而是能将一个领域研究到高精尖的人”。这个道理对于CTF来说也是一样的——既然比起CTF更擅长开发,那还不如专心去学习开发呢。
为什么选择了Web开发
一句话:擅长,适合自己。
实际上我主要选择的还是Java后端。
在暑假里我就发现——我患有严重的GUI恐惧症,每次写界面都会写得“欲仙欲死”,JavaScript还好说,毕竟与界面的关系不是很大,但是写CSS的时候,那叫一个要命。不仅如此,因为审美比较诡异,写出来的界面的美观程度也真叫一个一言难尽(具体参考那个PHP项目的前端吧,我已经不想承认那是我写的了)。
虽然前端的SPA、MVVM之类的东西确实很有意思,但是只要是前端,就与界面脱不开联系。
客户端应用和移动端应用也是一个道理,因为写这些就无可避免地要涉及到很多与界面相关的东西——又是界面!快跑!
底层开发?实在是太难了,学不来。。。
而后端,是真正与界面没什么联系的领域。而尝试过PHP、Node.js、Java、.NET、Python、Go等语言之后我还是选择了Java,一个是因为Java的安全性相对较好,比起PHP和Python来说不需要关注那么多的安全问题;另一个是因为Java是一门“约定大于配置”的语言,这门语言本身在很多情况下只是提供一个规范,真正的实现是由社区完成的,这个特点也使得Java很容易组织大型项目;还有一个原因就是Java在Web后端领域成熟的解决方案非常多……嗯,这杯咖啡真香。
为什么要去研究算法、打ACM
因为算法在开发中所起到的地位实在是太重要了。算法的优劣可以很大程度上影响到功能的好坏。前几天做了一个数据导出的功能,完全没有考虑到算法和效率的问题,结果导出500多条数据居然要用三分多钟。。。
至于打ACM,也算是为我学习算法提供一个动力吧。
最后
虽然技术转型了,但是笔记还是要做的,文章还是要写的,只是内容不一样了。