ブログ村 子供写真

問題をどう解決するか?

f:id:Ioannes:20171230144257j:plain

ある日のことなんだけど、ハードのお仕事をあれやこれやと新人らしく右往左往してたら、別部署の人がどうしたん?ってちょっと見て手伝ってくれた。「物理法則は嘘をつかんからね。しっかり問題を把握して、一つ一つ切り分けていけば解決できるから。」とアドバイスしてくれた。私はほぼほぼアナログ回路(低周波も高周波も)をやることは多分ないんだろうけど、日々の業務で他の人が取り組んでる姿から学ぶことは多いなと思う。ソフトウェアの開発も同じというか、エンジニアリングのあり方としては同じ。

要望を聞きつつプロトタイプを作って、修正を加えて・・・みたいな開発スタイルがむしろ当然みたいな環境はよいと思う。当然それでやるんでしょ?ソフトも?みたいな感じで話がすすむ。

ビジネスの流れに関しては上司(営業)にくっついて回って色々と教えてもらえるし、ソフトはまあ自分で頑張ればよいし、それが楽しいし。前々職がなんだかんだで知的なハードワーカーだったので(結婚もしてなかったので完全仕事が恋人人間だった)今の状況は非常に楽しい。学んだことが即実践で使えて、実践から周りの環境から刺激を受けて学べる。

ボーンやりしたお客さんの問題をあーでもないこーでもない、あーしたらどうか、こうしたらどーかって一緒になって考えて解決していくのはなかなかスリリングで楽しい。

ソフトでやらすことは計算人(computer)を使役して膨大な計算を統率することで解決できる問題を解決するだけの話になる。なので大事なのはどれだけの計算リソースを投入できるか、投入したリソースを目的に向けて統率することができるかを基本に考える。いかに統率者(ソフトウェアの開発者)が優秀でも計算リソースが目的の解決に見合う量でなければ問題は解決できない。

仮に計算リソースが安く調達できるのでコストをほとんど考えなくてよくなったとしても、解決したい問題の計算量があほみたいに増えるようなら結局無理な話になってくる。なので、お客さんの要求する計算量を切り分けてタガが外れることを防がないといけないし、有限な(お客さんのリソースが無限ならありがたいけど)リソースをいかに効率的に統率するかを考えるのがソフトウェア開発者が考えるべきことでたぶん間違ってはないと思う。

ITに無限の可能性なんてないんですよ。量子コンピュータになろうと計算量は有限値であって、人が解決を欲する問題はその計算量の増大の更に上を行くんです。人間がどん欲だなんて、公理は紀元前から明らか。

あと、色々思うんだけど、なんの言語使うとか、フレームワーク使うとかって関係あるのかな?問題を解決される側からしたら、道具はなんでもよいわけだし、その道具によりリソースが最適に扱われてさえいればそれでよいんじゃないの?あと、なに使おうが計算機に計算させている事実は変わらんではないですか。便利だから使う、楽だから使う。ソフトウェア開発者側の有限な時間リソースを有益に使えるなら採用するし、そうじゃなければ捨てるだけじゃない。なんか、その辺見てて、聞いててもやもやっとする。

コンピュータが仕事を奪う

コンピュータが仕事を奪う

あくまで駆け出しのエンジニアとして思うのは、問題を把握する(お客さんと一緒に)、それを計算可能な問題に切り分け落とし込む能力が必要だし、磨いていけんなと思う。うん、そう思う。来年も頑張ろう。

あと、ソフトウェアのエンジニアに未経験とか他分野から転職考えてる人は自分に問題解決をするのが向いてるか、ないしは好きかをまず考えてみたらよいと思う。それが死んでも嫌ならたぶん向かない。文系とか理系以前の問題で。

いかにして問題をとくか

いかにして問題をとくか

あとは、この辺を読んどくとよいんでないかね。仮によそ様の解決を(コード)をパクるのでもただつぎはぎコピぺするのと、類題とその回答として持ってきて自分で色々分解・結合をしたうえで自分の問題に当てはめてみるのとではぜんぜん違うよね。

他人のコードを初めて読んだけど、コピペはすぐわかる。だって書き方が全然違うんだもの。そしてエラーがでるよね・・・そういう所にかぎって。わからずに使うのはダメ、ほんと。

あと、具体的にいる技術(言語、フレームワーク)は正直な話、必要になってから学ぶ方が早いし、無駄が少ないように思う。なんで、プログラムスクールとかその類似サービスで学ぶのよりもう少し低層の(ハード)興味関心とか、計算量の問題(アルゴリズム)とか、問題解決(もう少し踏み込んでソフトウェアで解決するとは?)の部分に学習リソースをふった方がたぶん良い気がするのです。わたし、間違ってるのかな。あんま自信ないな。これがすでに実績積んでの振り返りならもっと偉そうに言えるんだろうけど。

ほんとはもうちょっとコンピュータサイエンスをやりたいなと思うんだけど時間ない。この辺のことをやるWEBスクールとかあったらお金払ってもよいと思うんだけど。

英語できるなら、海外の講義でも聞いてろ!って話なんだけど、さすがに専門外の大学講義を聞くのは厳しすぎる。なんか学部生とか、その前段階あたりの学生向けのリーダーでよいのないのかね。最初は紙媒体でやらんといきなり耳ではむり。きつい。

相方が娘らにやらせたいとかでディズニーの英語システムをはじめたので、私もいっしょになってさびてる耳を慣らしていきたいなとも思う。