サイトロゴ まいの雑記帳
「プログラミングができる」とは何か

「プログラミングができる」とは何か

投稿した日
2025/04/29
読了まで
2.06分で読み終われます (1,236文字)

「プログラミングができる」とは何か

目次はありません。

プログラミングができるって、どういうことなんだろうって、時々考えます。
世間では、難しいコードをすらすら書ける技術、みたいに思われているかもしれません。もちろん、それも大事な一部だとは思うんですけど…。

しかし、わたし自身が日々コードに触れる中で感じているのは、少し異なる実感です。
もちろん、特定の言語構文を理解し、APIを利用して具体的な機能を実装するスキルは、プログラミングの根幹を成すものです。設計通りにコンポーネントが連携し、意図した動作を実現できた際には、難解なパズルを組み立て終えたときの感覚に似た、一種の達成感も覚えます。

でも最近は、本当に価値があるのって、そのキーボードを叩くスキルだけなのか?って。過去の私はがむしゃらに言語やツールを覚えたけど、本当に難しいのって、そこじゃないよなって思うんです。
それは、対象となる問題を分析し、適切な粒度で微細化し、それらの依存関係や処理フローを厳密に定義していく力と言えるかもしれません。

実際に私が開発をする際には、コードを書き始める前に、頭の中、あるいは設計ドキュメント上で、解決すべき課題を小さな構成要素へと分解していきます。「この機能を実現するには、まずAという処理が必要で、次にBというデータが求められ、条件Cに応じて処理DかEに分岐する…」といった具合に、です。

コンピューターは決定論的に動作するため、曖昧さを排した厳密で構造化された命令シーケンスを構築しなければなりません。
そのため、必然的に問題を細分化し、要素間の関係性を明確にし、実行順序を定めるというプロセスが不可欠となります。この抽象化と構造化の作業こそが、ソフトウェア開発の成否を分ける核心的な要素となるのではないでしょうか。

そして、この「微細化」と「序列化」を徹底する思考プロセスは、多くの人もそうであるように、わたしの思考特性にも高い親和性があるようなのです。物事を細部まで突き詰めたり、要素間の論理的な繋がりや順序性を重視したりする傾向が、プログラミングというタスクにおいては、ある種の要求される資質と合致するのかもしれません。
もちろん、この思考特性にはトレードオフも存在します。現実世界の不確実性や変化に対して、時に過剰な分析や設計を招いたり、あるいは一種の完璧主義に陥り、柔軟性を欠いてしまったりする側面も自覚しています。日常生活においては、それが円滑さを欠く要因となることも少なくありません。

それでも、プログラミングという領域においては、その思考の特性が直接的に価値を生み出す場面がある。その事実に、少しだけ自身の在り方を肯定されるような感覚を覚えることもあります。

ですから、私にとってのプログラミング能力の本質とは、流行りの言語を知ってるとか、特定の言語やツールへの習熟度とか、そういう表層的なスキルではなく、複雑なことをちゃんと見つめて、要素の依存関係を正確に見抜いて、それをきちんと整理して構造化する力そのものであると思います。