在涉及编程时,希望你意识到的事情
为了什么
作为一个名为”编程是什么”的主题,但其实并不是什么太过复杂的东西。我想和涉足编程/软件开发的人或初学者分享一下我的经验,希望能在开发过程中意识到什么样的事情,并讨论在开发时需要考虑的问题。(一开始并没有做出什么决定。)
关于我
用户名:kigawa
GitHub:https://github.com/kigawa01
组织:OneServer,Pixelsia,kigawa-net
-
- java/kotlin 2年
-
- PHP/typescript 1年
- C#/go 半年
我有在業務經驗中開發過與網站和Windows應用程序相互配合的系統。
最近我主要在开发Minecraft的插件,改造游戏,并且还制作了一些库和控制台应用程序。
希望你能意识到的事情
在进行开发时,有四个主要的事项需要注意。
-
- 不要忽略/排除細節。
-
- 不明白的事情就是不明白。
-
- 要思考詞語的意義。
-
- 不只尋求簡單的答案。
-
- 蟲子總是會發生。
- 修復/更改很難。
不要读行间/不要包含其中
请在交谈或其他场合中不要读出或包含空白。有些人常常会感到被逼问原因,即使只是简单地想知道而已,但事实并非如此。相反地,我希望对方能明确地表达,而不是试图让对方察觉我的意思。
不明白的事情就是不明白
開発に関することはすべてを知ることが不可能なほど様々な知識や、物があるので、無知を恥だと思わず素直にわからないことはそういってください。
取り繕ってもばれますし、大事な場面でのミスにつながりかねないのでやめてください。
思考词义
たまにコードのミスや変数なども命名の指摘に対して「細かいことはどうでもいいでしょ(意訳)」といった返事が返ってくることがあります。
しかし、プログラムというものは「,」と「.」では全く意味が違いますし、「A」と「a」でも全く違うものとして扱われます。そして変数などの名前が適当なプログラムはとても分かりにくく、直せるバグも直せなくなってしまうほか、かかる時間もどんどん増えていきます。
ですので変数などの名前もよく単語の意味を考えてつけてください。
不只是追求简单的答案
例えばコードを書いていて何かしらのエラーが発生した際、どこに何を書けばそれが治るのかを聞く人がいます。しかし問題はそんなに単純には解決できないことがほとんどですし、聞かれた側にも大きな能力/労力を要します。そして、プログラミングのうちそれをすると何が起きるかという知識は教えることができますが、それを組み合わせて作るのはあなたにしかできません。どこに何を書けばいいのか事細かに教えてもらうという行為はプログラミングを教えてもらっているのではなく、ただ代わりにキーボードを打っているだけです。
Bug是不可避免的事情。
请不要认为没有Bug是很常见的事情。即使是大家熟悉的东西也会存在Bug,能够感受不到Bug存在是因为开发人员付出了巨大的努力。
修正/修改很困难。
即使程序的行为略有差异,也并不意味着修复或更改会变得容易。在某些情况下,甚至可能需要重新构建几乎所有内容才能添加一个功能。
在进行这种修复或更改时,请与开发者进行咨询,以确定开发期限并决定内容。
在开发时需要考虑的事项
開発 = コードを書くことではありません。
開発では、ユーザーにとって使いやすいのはどんなソフトウェアか、今後のメンテナンス(※後ほど説明します)がしやすいのはどんなコードか、ほかの人が開発しやすいのはどんなコードかなど、いろいろなことを考える必要があります。
ただ単純にコードを書くだけでなく、これらを考えることでよりよく、より早く、ソフトウェアを作ることができます。
ユーザーにとって使いやすいソフトウェアとは
ユーザーの要望通りに作ることは使いやすいソフトウェアを作ることではありません。ほとんどの場合においてユーザーは、どのように作ると使いやすいのか知りませんし、人によって答えも変わってきます。
例えば、ユーザーの要望道理に作っていると、機能がどんどん増えていくことがあります。機能が増えることはいいことだと思う人もいるかもしれませんが、そうではありません。
AdobeのPhotoShopを想像してみてください。機能がたくさんあって使いこなすまでにたくさんの労力がかかります。それを使いこなすことが大変なソフトウェアは使いやすいソフトウェアとは言えません。
然而也有例外。如果能够熟练运用PhotoShop等软件,它们非常有用,值得学习。然而,在大多数情况下,它们无法提供相等的价值,并且最终没有人真正需要这些功能。
在制作过程中,我会考虑如何设计出更易用的UI和引导线等。
维护是指维护和保养。
即使软件完成了,也不是结束。
有时候需要在服务器上持续运行它,还可能发现未知的错误,或者因为外部变化而无法运行。
在这种情况下,进行维护是为了能够更新软件以使其能够正常运行。
最后
我经常和非开发人员一起合作做一些项目,或者给初学者提供一些指导。但是由于感受到开发者和非开发者之间的认知差异,所以如果这种差距能够缩小一点,我会感到非常高兴。