Я программирую (одержимо) с 12 лет. Я достаточно хорошо разбираюсь во всем спектре языков, от ассемблера до C ++, Javascript, Haskell, Lisp и Qi. Но все мои проекты были выполнены мной.
Я получил степень в области химического машиностроения, а не CS или компьютерного инжиниринга, но впервые этой осенью я буду работать над большим проектом по программированию с другими людьми, и я понятия не имею, как подготовиться. Я использую Windows всю свою жизнь, но этот проект будет очень Unix-у, поэтому я недавно купил Mac в надежде ознакомиться с окружающей средой.
Мне посчастливилось участвовать в хакатоне с некоторыми друзьями в прошлом году - как со специализацией в CS - так и достаточно увлекательно, мы победили. Но я понял, работая с ними, что их рабочий процесс сильно отличается от моего. Они использовали Git для контроля версий. Я никогда не использовал это в то время, но с тех пор я узнал все, что могу об этом. Они также использовали много фреймворков и библиотек. Я должен был узнать, что Rails было довольно быстро для хакатона (с другой стороны, они не знали, что такое лексическая область видимости или замыкания). Весь наш код работал хорошо, но они не поняли мой, а я не понял их.
Я слышу ссылки на вещи, которые реальные программисты делают ежедневно - модульное тестирование, обзоры кода, но у меня есть только смутное ощущение, что это такое. Обычно в моих маленьких проектах не так много ошибок, поэтому мне никогда не требовалась система отслеживания ошибок или тесты для них.
И последнее, что мне требуется много времени, чтобы понять код других людей. Соглашения об именовании переменных (которые варьируются в зависимости от каждого нового языка) сложны (__mzkwpSomRidicAbbrev), и я считаю, что слабая связь трудна. Это не значит, что я не разбираюсь в нескольких вещах - я думаю, что я достаточно хорош для своей собственной работы, но когда я загружаю что-то вроде ядра Linux или исходного кода Chromium, чтобы посмотреть на это, я трачу много времени на попытки выяснить, как все эти странно названные каталоги и файлы соединяются. Изобретать колесо - это грех программирования, но я часто нахожу, что самому быстрее написать функциональность, чем часами разбирать какую-то библиотеку.
Очевидно, что люди, которые делают это для жизни, не имеют этих проблем, и мне нужно добраться до этого момента сам.
Вопрос: Какие шаги я могу предпринять, чтобы начать «интеграцию» со всеми остальными?
Благодарность!