質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

12回答

303閲覧

モノの作り方について

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/08/13 12:15

編集2018/08/14 11:56

今回の質問は、開発の仕方に関する質問です。

仕組みを100%理解できていれば、バグが発生するような実装をすることはない

といった考え方を前提とした上で、

ある時間的制約の中で、システムを作らなければならないが、現時点でスキルが不足している

状況だとします。

この場合、100%理解(したという自覚)がなければ、実装にバグが埋め込まれる可能性があることになりますが、
時間的制約のため、100%を目指すことが厳しい、といったジレンマに悩んでおります。

このような場合、どのように開発していくのがベターでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/08/13 21:03

追記が多すぎて結局どの回答も全てに対応しきれません。回答者を振り回すだけになるので問題・課題を絞ってください。愚痴ならやめてください。
退会済みユーザー

退会済みユーザー

2018/08/14 07:04

teratailってこんな質問ばかりなのかよ。しょーもな。
m.ts10806

2018/08/14 21:06

だからといって一気に全て消すのは状況を悪化させるだけですよ。「意図的に内容が抹消された質問」という指摘もあります。編集から履歴を見ることもできます。余計に回答者を振り回しているだけです。
guest

回答12

0

100%理解できていれば、バグが発生するようなことなんてないはずなのです。

んなことないよー

思った通りに動かないのがバグ。
プログラムは思った通りには動きません。作った通りに動きます。
理解していることと、その理解に忠実なコードが書けることとは別だし、
その"思った"がお客様の欲するものと一致してる保証もない。

投稿2018/08/13 13:52

編集2018/08/14 12:59
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

正直に申し上げて、元々の質問の設定がかなり乱暴に思います。質問者の意図が回答者に伝わりづらいので精度の高い回答は得られないのではないかとおもいます。

>ある期間(時間的制約の中)で、趣味で何かを作ろうと思ったが、現時点ではスキルが足りていない。
という時点で理解が難しいんですが、趣味での物作りで時間的制約のある状況がイメージしづらいです。
さらにそれを業務であった場合どうであるか聞かれても、飛躍しすぎです。
業務であれば時間的制約内に達成するのは当然のことです。自分にその能力が無ければ正直に申告して対応を上司なり顧客なりに、できるだけ早く伝えるのは社会人なら当たり前のことでしょう?

投稿2018/08/13 13:37

yutakau8255

総合スコア99

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

趣味に限らず、理解せずに進むと後戻りが必ずあります。
それをどの程度許容できるかは、趣味と業務では天と地程差があります。
趣味でデスマーチを経験するはずもなく。

どんな進め方にするかについては、過去に色々な方法が検討されています。
ソフトウェア開発方法論

あなたの言われる、完璧な状態でなくても先に進むというのはアジャイルと勘違いされているかもしれません。
学習しながら進むということならリーン開発かもしれません。
トヨタに学ぶ!リーンソフトウェア開発の7つの原則

投稿2018/08/13 14:56

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

たぶん「理解」というのが、「誰にとっての」が抜けているように思います。

使っているアルゴリムを9割しか知らないのと、例えば「動的計画法」の9割も理解できているのとでは天地の差です。

今時間的制約があるということは、「わからない人にとって、9割理解できた気がする」、ということなので、これは個人に強く依存する前提になってしまいます。

調べることにもよりますが、とりあえずGoogle検索の上位を全部だいたい理解できた気がしても、たぶん7割も理解したことにならない、そんな感覚です。
のちに180度理解が誤っていたと気づくことも珍しくありません。

ただ言えることは、プログラミング言語は一切の忖度がありませんので、なんとなく書いたものがうまく動くことはありません。
なので、とりあえず10割を目指して理解したと思ってからでないとお話になりません。


それで業務においてですが。

そもそも最初から未知のことについて解を持てることはありません。
解があるようなことに対して車輪の再開発をするのは愚かなことです。
ゆえに、現実的な問題に対しては、とりあえず、ものを作りどんな問題が起き得るのか、知見を積むことから始まります。。

その後既存のものを修正して正すこともあれば、全面的に設計を見直すこともあるかと思います。
個人的な経験では作り直した方がはやいです。

おそらく今の流行りはCI/CDのようなもので、いわゆるfail fastを実現することを目指します。
早めに失敗して修正するのです。

個別の問題に対して良き解を持つことは難しいが、方向修正をしやすい仕組みを作ることは比較的汎用的なやり方があります。


ただモダンな開発のベストプラクティスが意味あるものであることを実感するためにはある程度の経験を積む必要があります。

今質問者がどの段階にあるのかはわかりかねますが、自分がある程度苦労したと思っているのであれば、体系的な手法を学んでみると良いかも知れません。
逆に困ったと考えたことがなければ、とりあえず手を動かすことが大切かと思います。

投稿2018/08/13 14:11

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

業務の場合ですが、まず見積もり段階で要求を達成可能か、納期内に完了可能かといった
判断を行います。
納期内に可能であれば、見積もりも提示できるでしょうしまた、見積もりを提示する以上
受注確定であれば完遂が必須条件となってしまいます。
現状、社内で技術や知識面で不確定要素が多いのであれば、納期に対してデスマーチ発生率が高くなり
収益も悪くなります。
瑕疵期間も少なからずありますし、もろもろ込みで判断したうえで会社として請け負うわけです。
個人がどれだけ意欲的であってもリスクや収益性を考慮した結果、見送りなんてざらだと思います。
見積もりの内訳についてもヒアリングされることもありますしね。

不足している知識、技術がリスクとして低くなるのであれば、受注に向けて周囲や上司を説得しやすくなりますし。
あるとすれば、想定よりも技術的困難度が高い、知識習得が進まないといったケースでしょうか
まずは納期に対してどれだけ遅れが発生しうるかなど別事案になりそうな気もします。
本トピックでは、各技術者個人の技術、知識に関する指標となるものもないので
ざっくりとなりますが、受注して仕事するうえで、納期が守れそうかが重要ではないかと考えます。

趣味である場合
その人がどれだけ意欲を維持し目標到達にむけて時間を割き行えるかになるかと思います。

投稿2018/08/13 13:17

YomogiKOBO

総合スコア187

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まずは成果を求められる環境に身を置くべきですね。
嫌でも分かると思いますよ。

投稿2018/08/13 17:50

shozi3

総合スコア691

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私はソフトハウス(SIerとか孫請けとか言われるところ)で育ったので、
趣味でも仕事でも、変わらず1でした。
そう言う乱暴な環境で育ちました。
プロジェクト毎に、環境が違う、言語が違う、作法が違うのが当たり前で、
そのために学ぶ時間なんて与えられたことなど殆どないからです。
(プロジェクトそのものが研究だった場合を除く)
お陰で、必要になるまで学ばないと言う悪いクセも身についてしまいましたが。

ただ、次のような畑違いの環境では、学ばずに対応することはほぼ不可能だと思います。
事務処理のプログラムしか書いたことがない人に、3Dゲームを作らせるなど。

つまるところ、「仕組みの理解=処理をイメージできること」であるなら、学ばずに作ることは不可能ですし、
「仕組みの理解=環境や言語仕様の理解」であるなら、作りながら学ぶことはじゅうぶん可能だと思います。

投稿2018/08/13 15:28

chun

総合スコア324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

  1. 作りながら仕組みを学び(理解できていない部分があっても気にしない)、とにかく完成させる
  2. まず仕組みを9割理解する。その後、ささっと作る

私の場合は趣味ならほぼ1です。私は技術側に偏っているので、できることが解っているものを作るのはあまり楽しいと感じないからですね。でもコンテンツを作るのが楽しい人はそうでもないかも。

仕事の場合は、その仕事のビジネス・モデル次第です。

  • 自社企画の研究開発要素を多く含む開発の場合は1.が主になる場合も少なくないです。
  • 請負の場合は、まずは見積もりを出します。見積もれないものは受注できないので2.です。100%できることが見積もり完了時までに判っている(=100%理解している)場合が大半です。(それでもたまに見落としがあるので痛いです。)
  • 委託の場合は、クライアントさん次第です。仕組みが解っていないものについてはその旨きちんと説明し、それでもトライして欲しいという依頼であれば遂行します。誠実に遂行する必要があるので結構きついです。

ところで、請負と委託は結構厳密に異なります。30秒で分かる!「請負」と「委託」の違いが分かりやすいです。

投稿2018/08/13 15:27

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

時間が不足する中で、どれくらいの理解度でモノを作るか

100%理解してないのに完成するわけがないので、時間が不足とか関係なく100%理解できるまで手を出してはいけません。

teratailの「質問するときのヒント」にもあるんですが「今置かれている状況を整理し、わかっている範囲とわからない範囲を明確にしましょう
明確にすることで「わかってない」ことがわかるので、その部分の理解度を埋める活動することが最優先です。
100%理解できるまで手を出してはいけません。マネージャーやリーダーの立場であれば、少しでも理解が不足しているメンバーがいれば100%理解できるまで手を出させてはいけません。
100%理解すること、理解させることもモノづくりの一連の活動の一環です。

投稿2018/08/13 13:30

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/08/13 13:32

「○割程度理解」というのも同じ案件であっても定量化できるわけではないので、押し並べて100%理解以外考えるべきではないかと。
guest

0

趣味の場合、

  1. 作りながら仕組みを学び(理解できていない部分があっても気にしない)、とにかく完成させる

お仕事の場合、条件次第です。
とにかく動いて欲しいお客さん案件の場合と、お役所みたいに、後始末が面倒な場合、後からの責任追及が予想される場合、同じ対応はできません。
その他の場合もあるので、一概には。また、管理者として対応する場合もまた、異なります。
あ、あら探しをモットーとするお客さん案件も要注意ですね。

投稿2018/08/13 13:00

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

趣味の範疇なら、

3.そもそも時間的制約など設けない。興味があるなら時間がかかろうとも仕組みを理解しようとする(作りながら)。

ですね。趣味に時間的制約を設けるケースが思いつきません。

業務では、できるかできないかを明確にさせないとまずい場合が多いです。頑張ればできそうなら頑張る分も含めて見積もることはできますが、どれだけ頑張れば良いか判らないほど難しいことであれば「できない」と言うしかありません。当然、依頼主(上司だったりクライアントだったり)との相談・交渉が必要になる場合もあるでしょう。

100%理解できていれば、バグが発生するようなことなんてないはずなのです。

そんなことはありません。車のドライバーは運転方法を100%理解していますが、事故は起こります。それと同じです。

(ヒューマンエラーは理解とは関係がないためここでは考えないこととします)

バグのほとんどはヒューマンエラーです。それを考えないとするのはナンセンスです。

投稿2018/08/13 17:07

編集2018/08/14 00:09
catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問の意図が分からないな。
前提として仕組みが分からないものは作れないというのがある。
仕組みを分からずして作ることなどできるのか。(いや、できない。)

投稿2018/08/13 12:45

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/08/13 12:57 編集

制約がすっかり抜けておりましたので、本文を修正致しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問