意図せずにプログラマーになる:正しい方法 [閉まっている]


21

私の経歴は電気工学、より正確にはDSPです。私が現在働いている会社は、アナログハードウェアを構築する、多くの多様なプロジェクトを行っています。ここにいる他の誰よりもコンピューターにやや近いので、私は多くの場合、組み込みデバイス(これで問題ありません)とWindowsまたはLinux OSの両方のコードを書いています。後者が私にとって外国の領土です。

私はコーディングでき、いくつかの言語(C / C ++、Java、一部のVB.NET)を知っていますが、それらは信号および画像処理、ニューラルネットワーク、およびその他の同様のアプリケーションのアルゴリズムシミュレーションにのみ使用しました。私にとって、プログラミングは何よりも計算ツールでした。しかし、適切な本格的なソフトウェアを作成しなければならないプロジェクトがますます増えており、それを行う必要がなく、本当に興味がなかったので、どうすればよいかわかりません。私は、仕事の要求のためにある程度コーダーに変換されたかなりの数のエンジニアを見てきましたが、彼らのほとんどは彼らがしたことでそれほど良くありませんでした。多くの人が同じに遭遇したと確信しています。

優れたユーザーインターフェイス、優れた内部アーキテクチャなどを備えた適切なソフトウェアの作成を学ぶ場合、どのようにすればよいですか?何が良い習慣で何がそうでないのかを教えてくれる仕事をしている人はいません。言葉の生の意味でコードを書くことができるとすれば、良いソフトウェアを書くことについて他に知っておくべきことはありますか?


あなたが使用している言語を教えてくれたなら、私たちはあなたにもっと詳細な答えを与えることができるかもしれません。それから再び、それは一般的な答えのポイントを否定するでしょう。
サルダスリオン

2
正式なトレーニングやメンターとの直接的な仕事経験がなければ、Right Way™は現実的ではありません。貴方は、学んでいます。コンピュータサイエンスとエンジニアリングが電気工学から分岐する理由があります。健全な会社は、ソフトウェアエンジニアを雇って、アプリケーションインターフェース、アプリケーションドライバー、さらにはファームウェアを作成します。なぜなら、彼らは品質を望み、それを適切に行い、保守できるようにするためです。私はあなたの上司に、あなたがしていることはあなたの専門知識の領域を少し超えていること、そしてこれらのタスクはソフトウェア技術者に任せるべきだと説明します。
maple_shaft

4
...私はあなたの状況がタイトルで述べているほど「不随意的」であるとは思わないことも付け加えたい。あなたは、あなたの仲間はコンピューターの使い方さえ知らないと言いましたが、あなたはまた、思わずソフトウェアエンジニアになる必要がありますか?それはほとんど公平ではないようです。良いソフトウェアを書く能力と、物事を正しい方法で学び、やりたいというあなたの願望を賞賛しますが、上司や自分自身に、自分の能力にないものがあることを認めるのは恥ずべきことではありません。彼らがあなたをこの役割に任せることに真剣であるなら、あなたのために訓練に費やすよう彼らに頼んでください。
maple_shaft

@maple_shaftあなたが言っていることのほとんどに同意します。しかし、私は同僚がコンピューターの使い方を知らないとは決して言いませんでした。それらのどれも私を苦しめることができるソフトウェアエンジニアではありませんが、彼らはすべて非常にコンピュータに精通しています。私はコーディングをしなくても問題はありません。新しいことを学ぶのが好きで、それをすることに本当に問題はありません。
フォノン

6
@Phonon Great、それは良い態度ですが、あなたの会社があなたに本、トレーニングコースを買ってもらい、彼らがあなたにその役割を果たして欲しいかどうかを学ぶ時間を与えるようにしてください。それが私が言っているすべてです。多くの企業は、これらのものを自分で購入するのはあなたの責任であると納得させて、あなたをだまそうとします。
maple_shaft

回答:


11

あなたを大いに助けるいくつかの本があります。常にあなたの隣にCode Completeを置くことをお勧めします。これは非常に貴重なリファレンスです。私が働いていた以前の会社では、これは雇用された後にすべてのジュニアプログラマーに提供した本でもありました。

Pragmatic Programmerも非常に有用なリソースであり、かなり短いですが、コードの完了後に読むことをお勧めします。

これらの本はあなたを始めさせ、それからコード、コード、コード、そしてコードをもっと...しかし、いつ止めるべきかを知っていれば、あなたのソフトウェアは決して完璧ではないでしょう。


6

私の会社は常にこれをしています...そして、それは私を夢中にさせます。

「私はソフトウェア開発者ですが、どうすればEEになりますか?」

答えはかなり明白だと思います。それには多くの時間と努力が必要です。そしてもちろん、適切な学習教材。私の大学では、エンジニアリングのバックグラウンドが役立ちます。CSとエンジニアリングの学校は同じ建物内にあり、多くの重複がありました。アルゴリズムと数学の基礎があります。

ほとんどの新参者が犯す間違いは、噛むことができる以上に噛み付いていることです。UI、アーキテクチャー、品質コード全体で材料を学ぶ...だと地面がたくさん。本当に何年もかかり、多くの場合、ソフトウェア会社のさまざまな専門家のチームによって行われます。

あなたが時間を入れれば、自分でかなりまともなことができないと言わないでください。ちょうどあなたがあなた自身を圧倒していないので、材料の大きさを認識し、どちらかA.が終了またはB.のあなたの学習過程で主要なショートカットを取ることによって、アプリに組み込む主要な技術的負債を。

このすべてのために、この本で素晴らしい開発者になる「キャッチオール」はありません。最も使用頻度の高い言語で評価の高い本を選択し、特にコードレビューのためにStackコミュニティに参加することから始めることをお勧めします。

Amazon.comを試してください。彼らは良い本のレビューを持っています。


3

:主なことは、選択した言語の(良い)本を読むことです。選択した言語がわかれば、「より効果的な X」または「Yベストプラクティス」などを取得できます。クックブックは、ギャップを埋めるのに非常に優れていると思います。したがって、少なくとも3冊の本を入手する必要があると思います。1つのこと:演習を行い、カタをコーディングして、言語の理解を深めます。もちろん、適切なxUnitパターンが必要です。

アルゴリズムは特に重要であり、アルゴリズムを詳細に説明する本を選択する必要があります。これも選択した言語で行います。デザインパターンアンチパターンは、どの言語でも何でも知っている価値があります。

結論:時間はかかります。急がないで。


+1、ただし常に例外を持たないルールは1つだけであることに注意してください。すべてのルールには例外があります。
ジャン・ヒューデック

@JanHudec:ここで念頭に置いたのはどれですか?
サルダスリオン

3

あなたはコーディングに夢中です。はい。

しかし、これはソフトウェアを提供できないという意味ではなく、人々を幸せにします;)

謙虚になりなさい。書く「ビジネス」という、ロジックをあなたが必要です。他のすべてにライブラリコードを使用します。基本的なアルゴリズム(配列の並べ替えなど)を記述したり、「派手なトリック」を使用したり、厳格なコード規約に準拠したりしないでください。

良いIDEを使用してください。これは、コードをフォーマットし、タイプミス/単純なミスを追跡するのに役立つため、不可欠です。

Code Complete」や「Pragmatic Programmer」などの本を読んで、強制的にOOPを学習してみてください(簡単で、コードをより保守しやすくするのに役立ちます)。

SVNを使用し、頻繁にコミットします-変更を元に戻すことができます(何かを台無しにする場合)。

可能であれば、学歴のある本物のプログラマである誰かを見つけてください。だから、あなたは彼とあなたの初心者の問題を共有し、啓発的な答えを得ることができます。

そして、もちろん、最も重要なことは、コーディング、コーディング、コーディング続けることです。


ps:動作するC ++コードを記述でき、ニューラルネットワークを記述する場合(!)-脳はプログラミングに適しています;)頑張ってください!


2

ここには良い答えがあります。

あなたの好意の大きなスピンは、あなたが知りたいという単純な事実です。

ソフトウェアエンジニアリングの大部分(もちろん、健全な懐疑心を持って行う必要があります)は、後悔しない方法でそれを行う方法に関するものです。1つの例は、ソースコードバージョン管理システムの使用です。もう1つの方法は、コードをファイルに分割して、少しずつ簡単に作業できるようにすることです。もう1つは、コードの書式設定と命名規則である秩序についてのこだわりです。厳密な規則は、一貫していることほど重要ではありません。

そうすれば、1年以上後にコードに戻っても、「だれがこの混乱を引き起こしたのか」とは思わないでしょう。破損の危険があまりない状態で、物を見つけて変更することができます。**

始めるための良い方法は、さまざまなサンプルプログラムを見つけて、それらを通して作業することです。その後、ニーズに合わせて調整できます。

**私の最大の頭痛の種の1つは、フォーマットや命名が重要だとは思わなかった人々によって書かれたコードを扱うことです。


1

物事を行う方法としない方法に関する多くの優れたリソースがありますが、最終的に最も重要なことは、多くのコードを見て、それを操作し、自分で維持することがいかに簡単か複雑かを確認することです。

学ぶための良い方法は、誰かに初期設計を経験してもらい、コードをレビューして、使用するときに役立つテクニックを紹介することです。ですから、万が一、上司に(小規模な)ソフトウェアプロジェクトをリードし、プロジェクトをリードするソフトウェアを設計した経験のあるソフトウェアエンジニアを少なくとも1人雇うよう説得できたら、それが最良の選択肢だと思います。

誰もあなたをだますことができないなら、最近の強力なオープンソースの動きがあります。おそらくあなたはあなたの仕事でいくつかのオープンソースツールを使用しているので、それらのバグを修正するか、使用しているシンプルな機能を追加して、それぞれのコミュニティでそれらのことをする方法を議論してください。実際の実際の問題に関する本にある一般的なルールを適用する方法を学ぶのは、実地学習ではありません。


0

質の高いコーディングとアーキテクチャの問題を学ぶために私が本当にお勧めすることの1つは、「Uncle Bob」(Robert Martin)の教えです。彼は1ドルのビデオを持っています。一口サイズで、おそらくあまりにも気まぐれな場合もあれば、良い本もあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.