Я програю (нав'язливо) з 12 років. Я досить добре обізнаний у мовах, що знаходяться там, від складання, до C ++, до Javascript, до Haskell, Lisp та Qi. Але всі мої проекти були власноруч.
Я здобув ступінь хімічної інженерії, а не CS або комп’ютерної інженерії, але вперше цієї осені я працюю над великим проектом програмування з іншими людьми, і не маю поняття, як готуватися. Я використовую Windows все своє життя, але цей проект буде дуже unix-y, тому я придбав Mac нещодавно, сподіваючись ознайомитись із оточенням.
У минулому році мені пощастило взяти участь у хакафоні з деякими друзями - обома спеціальностями CS - і, що хвилює, ми перемогли. Але я зрозумів, як працював з ними, що їх робочий процес сильно відрізняється від мого. Вони використовували Git для контролю версій. Я ніколи не використовував його в той час, але з тих пір я дізнався про це все, що можу. Вони також використовували багато рамок і бібліотек. Мені довелося дізнатися, що Rails було майже за ніч для хакатону (з іншого боку, вони не знали, що таке лексичне обстеження чи закриття). Весь наш код працював добре, але вони не розуміли мого, і я не розумів їхнього.
Я чую посилання на речі, які реальні програмісти роблять щодня - тестування одиниць, огляди коду, але у мене є лише невиразний сенс того, що це таке. У моїх маленьких проектах зазвичай не буває багато помилок, тому мені ніколи не потрібна система відстеження помилок або тести на них.
І останнє, що мені потрібно багато часу, щоб зрозуміти код інших людей. Конвенції про іменування змінних (які змінюються в залежності від кожної нової мови) є складними (__mzkwpSomRidicAbbrev), і я вважаю, що розв'язання зв'язаного каналу складно. Це не означає, що я не злегка парую речі - я думаю, що я досить добре в цьому можу власну роботу, але коли я завантажую щось на зразок ядра Linux або вихідного коду Chromium, щоб переглянути це, я витрачаю години на пробування щоб зрозуміти, як з’єднуються всі ці дивно названі каталоги та файли. Гріх програмування - винаходити колесо, але я часто вважаю, що просто швидше написати функціонал сам, ніж витрачати години на розбирання якоїсь бібліотеки.
Очевидно, що люди, які роблять це на життя, не мають цих проблем, і мені потрібно буде дійти до цього питання самостійно.
Питання: Які кроки я можу зробити, щоб почати "інтегруватися" з усіма іншими?
Спасибі!