失敗から学ぶこと

こんにちは mtjです。

失敗から学ぶということで ソフトは基本失敗から学ぶ事が多いです
なので自分は成功事例も失敗事例も色々な物を見ています、開発秘話等の難しかった所等を見るのはかなり好きです。

そういった事例を蓄えておくことで事前に収集しなければいけない情報もわかるようになります
その情報を元に発生するかもしれない動作以外の問題について対策していきます

よくある話だとサーバーのログイン関連でしょうか
同時にログインされる想定人数等を元にソフト、サーバーの規模等を決めていきます。
同時に約10人しかログインしないサーバーに1万人規模のログインサーバーを建てる必要はないので

それ以外にもサーバーであれば今後のスケール等を元にそういった実装も加えていくのもいいかもしれません

というように設計は経験、知識で要求機能以外の問題点を確認していくと思います。
自分は同じ業界の友達とニュースになったような不具合等で雑談する時もあります
いろんな業界の人がいるので勉強になることも多いです。

プログラマーの知識

こんにちはmtjです。

プログラマーという職業はおそらくですがプログラムに詳しいと思われるでしょう
しかし、プログラムに詳しいという事は大体がPC自体の動作に詳しい人達です。

そしてソフトの使用される分野に対しても詳しい人が多いです。
画像処理であれば画像処理の動き、カメラ等の知識
3Dプログラムであれば3D空間の演算等それらの処理
ゲームプログラミングであればゲームの知識

その分野の知識がなければ言われたコードは書けるもののその先に踏み込む事は不可能だと思っています。
なので自分たちは新しい分野のソフトを作る時にその分野の知識も同時に仕入れています。

そういった知識を入れる事を忘れずに 取り残されないようにしていきたいです

システムを検討する難易度と金額

こんにちはmtjです。

自分たちの仕事ではお客さんの要望によってシステムを検討することが多々あります。
そして同時に金額も伝えるのですが その時の精度はそのシステムにどんな機能を付けるか、何が必要かを正確に把握できるかだと思います。

例えばレジの無いお店に 在庫、売上管理システムを入れたい場合にどういうシステムを入れるか
PSOシステムの知識があればまずPOSシステムをイメージすると思います。
そしてPOSシステムにどのような物が必要かをイメージできればそれを最初から作る工数をイメージすればある程度金額の予想はつくと思います。

上記のようにPOSシステムを知っていればそれらのパッケージ等を提案する事もできるでしょう
しかし知らない場合は回りくどい方法で作って無駄に金額が上がるかもしれません。
機能の把握が十分でなく 十分なシステムを提案できないかもしれません。

そういったシステムを提案できるようにするためにも日々IT系のシステム、技術を取り入れる事は大事だなと感じます。

プログラミングの難易度

こんにちはmtjです。

プログラミングという物は行うことによって難易度がバラバラです。
同じ物を作る場合でも知識のある人であれば一瞬で終わり、無い人は1日かかってしまうという物もよくあります。
特にC++等メモリを理解していないと躓きやすい言語はその傾向が強いと思います。

そういった異常事態、異なる言語でもそれなりに対応できるように日々勉強していきたいです。

できればスレッド操作、メモリ操作等は全く気にせずに実装できるようになるといいですね

無人化の弱点

こんにちはmtjです

海外の人に電車の切符の取り方を聞かれた時に 明らかに在来線の切符売場では買えない範囲の切符だった時に無人機ではそういった状況には対応できないなと感じてしまいました。

京都の地下から有人のみどりの窓口が消えてしまってのでその時は新幹線の売り場まで案内しましたが
その人達はどんだけ頑張ってもあの場所で新幹線の切符は取れなかったんだろうなと思ってしました。

自動機は目的の物が売っている前提で買うなら優秀ですし 早いのですが
目的の物が無い物を買おうとする時がどうしても弱い

人であれば目的の物がなければ その場所を伝えてくれたり
そもそも近辺では売ってないという事を伝えられますが 自動機相手の場合は売ってない事自体も自力で調べないといけないので何も知らない状態で行動するには不向きだなと感じました。

それこそAIが発展しても 何を聞けばいいかわからないというような状態の人にはAIもかなり厳しいと感じます
AIも操作する人が質問等を行って初めて使うことができるので 順を追ってやりたい事を聞き出せる人にはなかなか敵わないだろうなと感じました。

ソフトの作りのこだわり。

こんにちはmtjです。

ソフト開発の費用について。
ソフトの費用というと機能である程度平滑化できるように思われますが 実際は同じ金額で全く同じソフトができるわけでは有りません。

同じ人が作ればある程度は平均化ができますが別な人、会社が作ればUIの作り、処理の作り等により金額もばらばらです。
UIのアニメーション、綺麗さ等に凝れば金額は上がります
処理も1秒も待たせたくないという仕様であれば金額は上がります

そこで大事になっていくのが営業の手腕だと思います。
アニメーションが必要無い箇所で凝ったアニメーションを作る必要はないですし
処理も別に時間がかかってもいいような物であれば即終わるような仕組みを作らなくてもいいです。

相手にとってどの部分が重要かを判断し提案できるかが技術者の腕だと思いました。

ソフトウェアの価値。

こんにちはmtjです。

ソフトウェアの価値についてですが ソフトウェアは基本買ってきただけでは価値を生まないと思っています。
それこそ普段使うプログラム開発用のIDEも買うだけでは何も生産を行いません。

IDE等もプログラムを効率よく開発したいから買うので購入して即成果が上がるような物でもありません。
道具を使いこなして価値を産む人がいて初めて価値が生まれます

流行りのIOT等の機器も遠隔で情報を知れるだけの物ですが
その情報を使って価値を生んでいくのは利用者側です。

自分たちもソフトを作る上でその先に価値があるのかを考えながら開発していきたいです。

新しい言語と古い言語

こんにちは mtjです。

世の中には様々なプログラムの言語がありますが その中にももうサポートされていない古い言語だったりできたばかりの言語があります。

自分は古い言語、フレームワークは基本しかたなく使う者だと思っています。
新しい言語はそれこそ使う側の負担、言語自体の新たな不具合、仕様等未知の部分が多く使う場合のリスクが読み難くなります。
慣れた言語の方が開発スピードも既存のライブラリ等も使用できるので開発費用も低く済みます。
しかし新しいOSで動かなかったり 新しい機能が使えなかったりします。

では新しい言語の利点で自分が思うことは
・新しい言語のほうがセキュリティ懸念が低い
 現在のOSのセキュリティ機能を使ったりするので言語自体のセキュリティは高い場合が多いです。
・新しいOSの機能が使える
・コードの書き方等が簡潔だったり古い言語では使えない用な機能があり 速度が結果的に早くなる場合がある。
・最新のサービス等の機能が使える。

プログラム言語は基本新しい物を取得していくのが最良だと自分は思います。

しかし、MACネイティブの場合はOSで強制的にSDKが移行されてしまうので 古い機能を全部消して新しい機能に置き換える事が強制されてしまいます
既存のコードはもちろんまともに動かない場合が多いです そういった意味でもMACは開発者に優しく無いとは思っています。
ちょっとの機能追加でも莫大な時間がかかってしまう場合があるのがMACです。

AIとプログラム

mtjです。

とある人がAIでプログラマーがなくなると言ってから結構経った気がします。
いずれかはそうなるかもしれませんが 正確性が必要なソフトになればなるほどAIでの自動化は難しいと感じます

絵とか エンタメ等間違っていても問題ないような物ではAIでの自動生成は有用で 速いと思いますが
正確性が必要な部分ではAIで出力したソフトのテスト等 実運用での問題点等を把握できる人の介入が現状どうしても必要です。

これは数年でどうにかなる問題ではないと感じます。
例えばあるOS、環境等では動かないPGが生成された場合それを修正するためには動かないPGを生成させないための仕様等をAIに指示できるエンジニアが必要でしょう
止まっても問題無いようなシステムであれば止まるたびにAIに指示をしエラーを修正させることも可能でしょうが 可用性は皆無だと思います。

限られた環境で動かすプログラムを作るにはそれ相応の知識が必要になると自分は思っていますが
それらを考えずにAIで指示し良いプログラムを作ることができるのかは今後が楽しみではあります。
(特にスレッド関連、メモリ関連、実行速度関連がAIでいい感じに作れると平和になるエンジニアが多いと思います)

AIでプログラマーが無くなるという点についてはなくなると思います。
エンジニアが仕様書をしっかり作るだけでソフト、テストコードまでできるのであればそのエンジニアの下に在籍していた開発者は全員いなくなると思います。

変なシステムを作らないために。

こんにちは mtjです。

プログラマーの仕事をしていると 世の中のどうしてこうなった ようなシステムを見るともやもやする機会が増えます。
そこからこうなった原因はどこなんだろうと考えるのも面白いですがそうならないためにを考えていきます。

まず変なシステムを作らないためにはお客さんの要望をしっかり聞く事が大事です
・何をしたいか。
・その後どう使うか。
・どのような人が使うか。
のようにしっかり要点をまとめ、お客さんの依頼通りのシステムだけでなく 用途にあったシステムを作っていくことが重要だと思います。

依頼主は依頼主の知識内でしか想像できませんし、開発側も開発側の知識しかありません。
その2つを上手くすり合わせし必要なシステムを作ることが大事だと思います。

しかし、提案だけではシステムは上手くいきません。
システムはそこから作る人の問題もあるため結局はお客さんの伝える能力、開発側の依頼を受ける能力、開発側の開発自体の能力等すべて揃って初めて良いシステムになると思います。

自分も変なシステムを作らないようにそういった意識を持って開発していきたいと思います。