私は12歳からプログラミングを続けています(アセンブリからC ++、Javascript、Haskell、Lisp、およびQiまで)。しかし、私のプロジェクトはすべて自分のものです。
CSやコンピューターエンジニアリングではなく化学工学の学位を取得しましたが、今年の秋に初めて大規模なプログラミングプロジェクトを他の人々と一緒に作業することになり、準備方法がわかりません。私はこれまでずっとWindowsを使ってきましたが、このプロジェクトは非常に統一されたものになるので、最近、環境に慣れるためにMacを購入しました。
昨年、CSメジャーの両方である友人たちとハッカソンに参加できたのは幸運でした。しかし、彼らと一緒に仕事をするうちに、彼らのワークフローは私のものとは非常に異なっていることに気づきました。彼らはバージョン管理にGitを使用しました。一度も使用したことはありませんでしたが、それ以来、できることをすべて学びました。また、多くのフレームワークとライブラリを使用しました。ハッカソンにとってRailsがほぼ一晩であったことを学ばなければなりませんでした(一方、レキシカルスコーピングやクロージャが何であるかを知りませんでした)。私たちのコードはすべてうまく機能しましたが、彼らは私のものを理解していませんでしたし、私は彼らのものを理解していませんでした。
実際のプログラマーが日常的に行うこと-単体テスト、コードレビュー-への参照を聞きますが、私はこれらが何であるかについて漠然とした感覚しか持っていません。通常、私の小さなプロジェクトには多くのバグはありません。そのため、バグ追跡システムやそれらのテストは必要ありませんでした。
そして最後のことは、他の人のコードを理解するのに長い時間がかかることです。変数の命名規則(新しい言語ごとに異なる)は難しく(__mzkwpSomRidicAbbrev)、疎結合は難しいと感じています。だからといって緩くつなげないわけではありません-私は自分の仕事でそれが得意だと思いますが、LinuxカーネルやChromiumソースコードのようなものをダウンロードして見てみると、これらの奇妙な名前のディレクトリとファイルのすべてがどのように接続するかを理解します。車輪を再発明することはプログラミングの罪ですが、多くの場合、ライブラリを解剖するのに何時間も費やすよりも、自分で機能を作成する方が簡単だと感じます。
明らかに、生活のためにこれを行う人々はこれらの問題を抱えておらず、私はその点に到達する必要があります。
質問:他の全員と「統合」を開始するために実行できる手順は何ですか?
ありがとう!