先日,最終回を迎えたTVドラマ「下町ロケット」を見て,ふと思いました.
ソフトウェアに携わるエンジニアが開発した新たな製品を受注先に納める,コンシューマー向けに販売する,
そういった中でエンジニアが誇れる『技術力』とは,どういったものになるのでしょうか?
ここでいう『技術力』は,エンジニアの自己満足レベルでかまいません.
--
「下町ロケット」ではハードウェアの開発でしたので,製品試験でその製品の性能が数値として表れることで,エンジニアが高い技術力を誇りに思うことは可能です.新規特許の取得もそれに当てはまるでしょう.ところがソフトウェアの場合,製品試験では要求を満たしているかどうか,それまでであり,性能を数値に表わし技術力を評価できるようなことはない気がします.
ソフトウェアにおける技術力は,言うならば「バグが発生しないこと」でしょうか? だとしても,バグなんて「一定期間内に発生しない」ことでしか評価できませんし,良くも悪くも何とでも言えると思います.数値のようにはいきません.
私の認識では,ハードウェアには限界があっても,ソフトウェアには限界はない,何でも実現できる,と思っています.IT事業においても,実現性における事業の妨げとなるのはハードウェアだったり法関連だったりであって,(プロジェクトのコスト面以外で)ソフトウェアの問題で実現不可能になることはないと.そのため,こういった疑問が出てくるのかもしれません.
--
繰り返しになりますが,先述の通り,
製品を受注先に納める,コンシューマ向けに販売する
に限定しています.
例えば,「同じCPU資源で,より正確な円周率を算出できるアルゴリズムを発見した」といったようなものは除くこととします.
最後に,かんたんに私のプロフィールを載せておきます.
現在学生で,翌4月からSEへの門を叩きはじめます.
ですので,業界のことは就活等で得た知識がある程度で,わかっているようで知らないことだらけです.
本格的にコードを書き始めてから10年ほどで,開発経験としてはWindowsアプリケーション,Webサイト,組み込みシステム,低レベルAPIを用いた処理,スマートフォンアプリ,といった具合です.スマートフォンアプリに関しては地域活性化をテーマに企画からリリースにメンテナンスまで,今年はコンテストで賞獲得を目標に設定し,SEごっことでも言いますか,来年以降を意識してプロジェクトを立て,チームで開発に取り組んできました.
以上となります.
ぜひ,みなさんのご意見をお聞かせください.
よろしくお願いいたします.
--
あまりうまく質問を記述できていない点,ご容赦願います.
また,いくらでも補足いたしますので,なんなりとお申し付けいただければ幸いです.
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答19件
0
既に皆様が回答されている点はどれも正しいと思いますが、自分なりの言葉でまとめてみると
真の技術力とは「いかに適切な落とし所を見いだせるか」だと思います。
これは対象がハードウェアかソフトウェアかは関係ありません。相反する複数の条件を如何に折り合いを付けて問題解決へ導くかが腕の見せ所ということだと思います。
コストや納期の制約はいずれの場合でも益々厳しくなっています。
加工やメンテナンスの容易さは、ソフトウェアの製造でも重要な要素です。
速度やサイズや容量の大きさなども、ハードウェアだけでなくソフトウェアについても重要な制約条件となり得ます。
では、ハードウェア開発とソフトウェア開発で一番異なる部分はどこかと言えば、真の要件(求められる仕様)を漏れなく正確に表現するのが、ソフトウェアの場合非常に困難であるという点です。発注者自身にも正確な要件の分かっていないケースが殆どです。
ですから、適切な落とし所を見つける前に、先ずは適切さの判断基準となる「真の要件」を引き出す力も非常に重要であり、技術力の差が最も端的に現れる部分だと思います。
投稿2015/12/28 11:16
総合スコア5936
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
こんにちは。
面白い視点ですね。
製品を受注先に納める,コンシューマ向けに販売する
お客様の存在を強調されてますので、「お客様に評価して頂けるソフトウェア技術とは何か?」って問いのように感じました。そして、「技術」に拘るということですので、何を作るか?ではなくどうやって作るか?に着目するのですね。
逆に言うと、需要があり、しかし、作りにくいソフトウェアとは何か?とも言い換えることができそうに思います。(外してたらごめんなさい。)
取り敢えず身近なところでは、Googleの検索システムは凄いと思います。検索の使いやすさはGoogleによって革命的に良くなりました。Google前は検索しても数ページ~十数ページめくることが普通でしたが、Google後はほとんど最初のページにでてきます。
それ以前では、Internet Protocolも凄いです。世界中を繋げることに成功してますが、プロトコルの基本設計が素晴らしいからだと思います。
CDやDVD等の圧縮技術もソフトウェア技術と言って良いと思います。
他にもいくらでもあると思います。
確かにこれらは数値化し辛いので定量比較できませんが、「ソフトウェアの技術力」が物を言っていると思います。
ハードウェアには限界があっても,ソフトウェアには限界はない,何でも実現できる
いいえ、むちゃくちゃ限界ありますよ。Windowsはよくエラーがでます。Linuxはエラーは少ないらしいですがWindowsより使い方が難しいです。AI技術は人間に遥か遠く及びませんし、Computer Visionの貧弱さには泣きたくなります。自動翻訳とか...
結局、「技術力」を比較するって、人間同士の「技術力」の比較ですので、その点ではハードもソフトも一緒ですよ。人間が設計する以上、高い技術力、そうでない技術力どちらもあります。
ただ、ハードウェアとソフトウェアの決定的な差は、「投資」と考えています。
ハードウェアの技術力を育てるためには初期投資が必要です。自分が食べていくだけでなく、実験するにせよ製造するにせよそれなりの実験装置や製造装置が必要になります。その資本を集める力も重要です。
しかし、ソフトウェアはPCさえ持っていれば開発できます。せいぜい十数万円+開発期間の間食ってくためのお金です。ハードウェア開発に比べると一般に少ない金額で済みます。
ということは、チャレンジできる人がハードウェアに比べて多いです。従って、個人の持つソフトウェア技術力がハードウェアの場合よりも、より物を言う世界だと考えています。
投稿2015/12/25 12:58
総合スコア23272
0
ソフトウェアの場合,製品試験では要求を満たしているかどうか,それまでであり,性能を数値に表わし技術力を評価できるようなことはない気がします.
本当にそうでしょうか。
ソフトウェアの性能のうち目に見える点として、応答速度が一番わかりやすいですが、この点を軽視しているソフトウェアが結構世の中に出回っていると思います。
動作環境をハイスペックなマシンに限定することで、パフォーマンスに対する批判をそらすことが多いと思いますが、本当に技術力があるプログラマーが開発したソフトウェアでは少ないリソースで最大限のパフォーマンスを発揮することを可能にしている場合があります。
ユーザからは当たり前のように受け止められることが多いので表に現れにくいですが、私はそういったソフトウエアに技術力を感じますし、自分でもできる限りそうであるように常に気を付けています。
投稿2015/12/26 08:05
編集2015/12/26 08:27総合スコア3041
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ソフトウェア製品は、知識生産によって形にされたサービスだと思っています
サービスというのはなかなか数値にはしにくいものです
ある人にとっては満足できても、別の人にとっては満足できないものかもしれないからです
お客様に納めるソフトウェア製品において最も優先されることは
それがその人の問題を解決する助けになること
であり
そこで要求されることは、品質、早さ、安さ、だと思います
その実現に必要なものがすべて、ソフトウェアにおける技術力だと思います
バグの少なさは、製品の信頼性においてとても重要な要素のひとつです
不具合が少なく安定した性能を長期に発揮させるための知識、経験、コーディング力は、技術力のひとつと言えるでしょう
また、お客様の本当に解決したい問題はなにかを引き出し、理解し、解決方法提案できる力もまた、ソフトウェア製品の生産には欠かせない技術力と言えます
こんなところで回答となりますでしょうか
投稿2015/12/25 13:36
総合スコア3116
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
SEなら、顧客の要望をきちんと引き出せることかなーと思います。
ソフトウェアエンジニアなら、求められたことをさくっと実現できることかなーと思います。
自己満足でいいなら、ちゃんと「隅っこまで閉じてる」ことかなーと思ってます。
投稿2015/12/25 12:15
総合スコア2493
0
完全に持論ですが、参考になれば幸いです。
※専門卒で20名程度の会社に入社し、プログラマと営業を兼任して5年目になります。
私の考えるIT技術者(プログラマ)としての「技術力」とは、
『日々進化している技術に対して、どれだけアンテナを張れて、
どれだけ興味を持ち、そしてどれだけ実践に適用できるか?』
という感じですかね。
アンテナの無い人は新しい技術も身に付けられずにいくので、
世界と比べて「技術力」は落ちる一方だし、
アンテナを張ったところで、実践しないのも同じ結末になるんじゃないかなぁと思います。
このように、
好奇心・探究心・解決力が大事だと考えていますが、
数値化出来ないところにもどかしさを感じています。。。
まぁ、周りをギャフンと言わせる資格でもとれば、客観的な「技術力」としての証明になるんじゃないかなと!
※資格を取ったからって即戦力人物ってわけじゃないけど、合格したのは事実ですからね。
IT技術者(営業)としての「技術力」については、長くなりそうなのでやめておきます!笑
投稿2016/01/11 10:56
総合スコア94
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
「製品試験では要求を満たしているかどうか,それまでであり,
性能を数値に表わし技術力を評価できるようなことはない気がします. 」
技術力を数値に表す事は、意外かもしれませんが大手では、きちんとやっている事ですよー。
まず、記述されているバグの数値化、数処理速度の数値化等はやっていますね。
特に、大量データ処理などは、100件の場合、1万件の場合、10万件の場合、100万件の場合、1000万件の場合にどのくらい時間がかかるのか?
また、CPU負荷率なども数値化して提示する事もありますね。
さらに、処理速度が極端に要求されるシステム(例えば電子カルテなど)の場合、
1秒でも早く処理が済むように設計されている場合もあります。
「製品試験では要求を満たしているかどうか,それまでであり,」
要求を満たしていればOKというのは、ちょっと甘いかもしれませんね。
例えば、酸素の計量表などのシステムなど人の命にかかわるシステムも存在しています。
>バグなんて「一定期間内に発生しない」ことでしか評価できませんし,
バグなんてと言っていると、本気でバグに泣かされることになります。
「一定期間内に発生しない」ことではなく、たった100行のプログラムテストに1000件以上のテストをしていたりしますね。
バグを出すテストなので、バグが一件もないと逆に不良とみなされ、納品出来ないケースもあります。
まぁ、中小ですとここまでやっていないケースが後を絶たず、不幸なプログラムが世の中に出回りますが・・・。
>ハードウェアには限界があっても,ソフトウェアには限界はない,何でも実現できる,と思っています.
限界ありまくりですが・・・。
特に、文字数制限や行数制限、列数制限がネックですね。
では、エクセルで1000万行を表示出来るでしょうか?
まぁ普通に、1000万行なんてのは世の中に溢れています。
「ハードウェアには限界があっても,ソフトウェアには限界はない,何でも実現できる,と思っています.」
この認識は、営業系SEの認識ならこれで良いかもしれませんね。
ただし、この認識しかない営業系上司だった為に、プロジェクトが炎上してプログラマが何ヶ月も寝ずに火消をするなんて、
プロジェクトを何度も目の当たりにして来ました。
>「同じCPU資源で,より正確な円周率を算出できるアルゴリズムを発見した」
これ、普通に客先から求められますよ・・・まぁ円周率ではなく、処理速度や数値の正確さですが。
例えば先述の医療系は人の命にかかわりますので、より正確なアルゴリズムは求められますし、
例えば金融系や経理系ならば金額のミスは絶対に許されません。
プログラムの知識というより、IT系の歴史に目を向けると、また違った世界が開けるのかもしれません。
また、プログラム系ですと、プログラムのみならず、
業界によって求められる知識が色々違ってきます。
例えば、
金融系や経理系ならば、簿記、会計の知識、
電子カルテならば、医療の知識、
製造業ならば、その製造業の知識がいる事になります。
プログラムだけ出来ても、あまり意味のない業界かと思います。
投稿2015/12/27 16:52
編集2015/12/27 17:04退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/12/27 17:17 編集
0
プログラミング自体始めたばかりのばりばり初心者の意見ですが、
このプログラマはすごい、このSEはすごいと思うことで、
まずソースコードが見やすい上にコードに遊びがあるようなものはすごいと思います。
製品を受注先に納める,コンシューマ向けに販売する
ということとは離れるのですが、IOCCCでいつだか、飛行機のプログラムを作った際にコードで飛行機を視覚的に作り出していて、すごかったのですが読みづらく面白いCコードを競うコンテストなのでやはり詠みづらかったです、ですがそのようなコードを読みやすく、だれが見てもわかりやすく描かれているコードなどは、普段の利用者が見えない所にもこだわっている、ということで良いポイントになると思います。
恐らく、日本より他国のプログラマの方々に見られるコードの書き方だと思います。
またそのほかにも、提示されたハードウェアの条件内で、どれだけコストを抑え、軽量化でき、たくさんの機能を実装できるか、という事もソフトウェアの技術力になると思います。
もし質問の意図と違う回答をしていたらすみません。
初心者の初々しい感想という感じで考えていただいて結構です。
投稿2016/01/19 00:57
総合スコア35
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
業務系ソフトウェアと科学技術系ソフトウェアで、技術力の内容や範囲がかなり違うと思います。
私は、40年以上科学技術系のソフトウェアの開発・販売をしてきました。現在は、磁場解析ソフトウェアのパッケージを自己開発して多くの大学で利用してもらっています。
今までの経験の中で、最も技術力が要ると思った例は、ユーザの要求定義書に偏微分方程式が紙一枚に書いてあり、それで2次元シミュレーションコードを作って下さいというのがありました。ユーザ自身もどのようにして解けば、良いのか分からないのです。
請け負う側は、数学とその背景にある科学技術計算の知識から、解くべき理論と解法・アルゴリズム、それにパフォーマンスも含めた提案ができなければなりません。この仕事は1年がかりでしたが、当初の開発が上手くいき、その後数年続きました。
数学や物理・化学・医学などの理論が分かっても、コードを作る人によって精度・性能が大きく変わるのが科学技術系ソフト開発の世界です。優れた研究者・学者でも優れたソフトウェアが作れる訳ではないのです。
先の例では、元の解法から考えるものでしたが、最近多いのが、既存のソフトウェアの改良として、OpenMP, MPI, OpenAcc など多数コアの並列化・GPGPUによる並列化などです。これらも、作成する人の技術力の差がそのまま、コードの性能に表れます。
業務系も科学技術系も、ソフト開発の技術力とは、予算・期間・人的リソース・開発環境の範囲内で、ユーザの要求定義が求める機能を満足し、性能が一定範囲内のものを満たすだけのものが作れるかということで一見同じように見えるのですが、中身がかなり違います。
業務系のソフトウェアはロジック自体が分からないというのはあまりないと思います。それに対して、科学技術系では、選択したロジックによって計算が上手くいかない・所定の性能を満足しないというリスクが常につきまといます。それを技術力によって、このリスクを如何に軽減するかということが重要な要素となります。
投稿2016/01/12 07:57
総合スコア19
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
『技術力』の「技術」とは、「技」と呼べる事柄のうち「技能」でないものを指します。
その「技能」とは、平たく言ってしまえば「能力」であるため、
「~する能力」と置き換えられる言葉、という事になります。
そして、『技術力』の「力」は、「レベル」だとか「水準」を指します。
つまり、「ソフトウェアにおける『技術力』」とは、
ソフトウェア開発で使用される「技」のうち「能力」ではないものの「レベル」や「水準」
です。
例えば、ソフトウェアを開発する能力は当てはまりませんが、ソフトウェアの開発の仕方は当てはまります。
投稿2016/01/07 17:45
総合スコア1124
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
私もソフトウェア技術者に置き換えたら・・?という勝手な想像(妄想?)をしながらドラマを見ておりました。
佃製作所の高い技術力は、「品質」や「スペック」を中心に表現されていたように思います。
資金面で苦労はしていたものの、与えられた工期でより良いものを納期までに作るためには製作費に糸目はつけていないように感じました。
これはエンドユーザーである帝国重工がロケット開発においては金に糸目をつけない大企業だったからなのかもしれません。
実際に私たちがシステムを開発する上では、
○機能性
○操作性
○品質/サポート
○コスト
などが重要な要素になってきます。
それを踏まえて、ソフトウェア開発における技術力とは
・ユーザーのニーズを的確に把握し、必要な機能を提供する
・適切なプラットフォームや開発ツール等を選択する
・言語知識やアイデア、創意工夫により操作性や処理速度を高める
・メンテナンス性を高めることで保守対応や流用開発を容易にする
・開発効率を高めることで開発期間を短くし、コストダウンや余剰の時間を品質改善にあてる
他にもあると思いますが、これらを円滑に行うための知識や技術、アイデアなどを総じて「技術力」なのではないかと思います。
手塩にかけて製造したソフトウェアをリリースするときの達成感もさることながら、そのソフトウェアを利用されたお客様から満足の声を戴いた瞬間は開発者冥利に尽きるものがあります。
私はその声を聞くために日々自分の技術を磨きながら開発に携わっています。
持てる知識やアイデアを駆使してお客様に本当に満足されるものを作るという意味では、ロケット開発もソフトウェア開発も同じなのだと思います。
投稿2016/01/05 09:08
総合スコア3013
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
“手数の多さ”ではないかと考えています。
ソフトウェア開発者ではないのですが、内科医の能力の高さの尺度の一つに「いくつ鑑別疾患を挙げることができるか」というのがあります。
症状や所見を診たとき、どれだけ疾患名の候補を出せるかで絞り込むためのアクション、検査なり処置なりが変わってきます。適切な検査とその実施順を選択するにはまず挙げた候補が大事なわけです。
ソフトウェア開発者だって似たような尺度が使えます。
実現したいある課題があるとき、実現する手段をどれだけ思いつけるか、それらのメリットデメリットをどれだけたくさん挙げられるか、それによって、どれだけ適切な手法にたどり着けるかが変わってきます。
バグの少なさなどはご指摘の通り結果に過ぎず、それは何を背景にしたものかというとソフトウェア製造に・テストに・保守に適切な手法を選んで適切に実施したことです。
もちろん手法として思いつきはしたものの知識不足や構成力不足で実現できないこともあり、「挙げられる可能な手法の多さ」と言った方がより合っていますかね。
で、思うのですが、こういう尺度は当然ハードウェアの開発者にも同じことが言えると思いませんか?
「ハードウェア開発者の技術力は簡単に評価できるがソフトウェア開発者の技術力は表現しにくい」なんてことはなく、どちらも同様に評価の難しいものであるのではと指摘しておきます。
投稿2016/01/05 09:07
総合スコア5570
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
人力で動かす機械でもない限り、ハードウェアにはソフトウェアが組み込まれます。
一方が価値を発輝するにはもう一方が不可欠なので、評価方法も共通になるはずです。それを分けて考えては余計に難しくなってしまうでしょう。
ソフトウェアにもハードウェアと同様の性能面はあります。(円周率に限りません) それは例えば処理量・必要なメモリー量の少なさであり、ソフトウェアの性能が高ければハードウェアの性能が低くても実用になりえます。一方でハードウェアの性能をソフトウェアで補えることもあるでしょう。
ライブラリやコード例が充実している現在では、実装よりも設計で性能低下が起きやすいでしょう。ハードウェアとライブラリをつなぐだけのソフトウェア開発であっても、設計次第で実用不可能な性能になることはありえますし、達成不可能なプロジェクトになることもありえます。
投稿2016/01/05 05:34
編集2016/01/05 05:36総合スコア33
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
顧客満足度と保守性の高さ だと思います。
それを、ブレイクダウンしていくと、
設計力(知識と経験?)
コーディング力(読みやすさとかかな?)
伝えることの上手さ(所謂、コミュ力というやつ)
あたりになっていくとは思いますが、大凡、みなさんが既にお答えになられている内容なので、割愛します。
あと、ソフウェアは単体では何も出来ないものです。
ハードウェアとセットにならなければ、存在すらし得ない。
なので、どういった意図で、「何でも出来る」と書かれたのかがわかりませんが、少なくとも、「ソフウェアは何でも出来る」というのは間違いだと思います。(ハードウェアが出来ないことは、ソフウェアは出来ません)
投稿2016/01/05 04:27
総合スコア30
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。