Под заголовком « и т. Д. » Понимается то, что может занять 50% и более вашего времени.
Узнайте, как отлаживать.
Это означает изучение научного метода . Я имею в виду действительно изучать это. И затем применяя это с жестокой честностью . Узнайте, как точно сказать, что вы знаете, правда, то, что вы знаете, не правда, и те вещи, которые вы не знаете. Каждый раз , когда вы неряшливо присвоить элемент в ту категорию, вы только что сделали вашу жизнь намного сложнее.
Научитесь говорить «я думаю» вместо «я знаю». Вы можете сказать «я знаю» только тогда, когда вы «думаете», что что-то является правдой (или ложью), и тогда вы докажете это!
Многие ошибки тривиальны, но их трудно увидеть, потому что вы «знаете», каким должен быть код ... кроме того, что это не так. Найти друга, чтобы объяснить это. Попросите их стать «опытным идиотом»: кем-то, кто не знает ваш код, но кого вы знаете, вы не можете пройти мимо БС. Не удивляйтесь, если во время описания им вы вдруг остановитесь и скажете: «И поэтому вы можете ... увидеть ... увидеть это ... дерьмо. Спасибо."
Нетривиальные ошибки требуют арсенала приемов. Классик, который может быстро выделить большинство ошибок, не связанных со временем, - Wolf Fence на Аляске. Где-то на Аляске есть волк; построить забор, разрезая государство пополам. На чьей стороне волк? Разрежьте эту сторону пополам. Вспенить, промыть, повторить. Выполнение этого в 20 раз в хорошо выбранных местах в коде уменьшает область, где ошибка (волк) может быть до 1/1048576. Убей этого волка.
Совет: ищите волны - физические, ментальные или любые другие. Как только вы (или ваш коллега) вздрогните / отвлечетесь / сведете к минимуму внимание, уделяемое части кода, начните сходить с ума . Потому что область, где вы просто знаете об ошибке, не может быть, даже если вы потратили часы / дни на поиски этой вещи и все еще не можете ее найти ... это наиболее вероятное местоположение ошибки. Никто не получает «пока» , никто (включая машину, ОС, компилятор или вас ) не получает никакого «должного уважения». Есть ошибка. Период. Конец предложения. А теперь иди убей эту чертову вещь.
Я не знаю ни одной школы, которая бы преподавала отладку как предмет сам по себе. IMNSHO, это может быть самым ярким доказательством того, что они (университеты / профессора) не учат вас быть программистом, а вместо этого учат вас быть ... как они? Суровые? Может быть. Правда? Решайся сам. Теперь докажи это.