Программистские книжки
Dec. 28th, 2008 08:51 pmЧитаю по наводке
object уже третью книгу подряд. Вот они в порядке прочтения:
1. Agile software development
2. Test driven development by example
3. Refactoring (это та, которую сейчас читаю)
Мне, такому всему из себя "матерому зубру", должно быть немного неловко, но эти книги были для меня настоящим eye opener-ом. В отличие от традиционных книг по программированию, которые либо описывают конкретную технологию, либо говорят о дизайне в идеальном мире (см., скажем, Буч либо гэнг оф фор), эти книги говорят о том, как решать проблемы, с которыми большинство программистов вынуждены сталкиваться на практике в течении 90% своей профессиональной деятельности (время, потраченное на заседания, перекуры и тренинги - не в счет). Например - как быть, когда приходится иметь дело с кодом, написанным годы назад неизвестно кем, а потом поддерживающимся еще кучей народу, мало кто из которых до конца понимал, как работает код, который он изменяет. Как вести себя в условиях постоянно меняющихся требований, в условиях, когда эти новые требования тянут код в направлении, о котором не думали при певоначальном дизайне. И так далее. Очень рекомендую всем, кто еще не (и кто не дошел до всего своим умом).
1. Agile software development
2. Test driven development by example
3. Refactoring (это та, которую сейчас читаю)
Мне, такому всему из себя "матерому зубру", должно быть немного неловко, но эти книги были для меня настоящим eye opener-ом. В отличие от традиционных книг по программированию, которые либо описывают конкретную технологию, либо говорят о дизайне в идеальном мире (см., скажем, Буч либо гэнг оф фор), эти книги говорят о том, как решать проблемы, с которыми большинство программистов вынуждены сталкиваться на практике в течении 90% своей профессиональной деятельности (время, потраченное на заседания, перекуры и тренинги - не в счет). Например - как быть, когда приходится иметь дело с кодом, написанным годы назад неизвестно кем, а потом поддерживающимся еще кучей народу, мало кто из которых до конца понимал, как работает код, который он изменяет. Как вести себя в условиях постоянно меняющихся требований, в условиях, когда эти новые требования тянут код в направлении, о котором не думали при певоначальном дизайне. И так далее. Очень рекомендую всем, кто еще не (и кто не дошел до всего своим умом).
no subject
on 2008-12-28 07:09 pm (UTC)Рыдать?
no subject
on 2008-12-28 07:10 pm (UTC)Змеиное масло
on 2008-12-28 07:18 pm (UTC)Re: Змеиное масло
on 2008-12-28 07:20 pm (UTC)Re: Змеиное масло
on 2008-12-28 07:22 pm (UTC)no subject
on 2008-12-28 07:24 pm (UTC)Re: Змеиное масло
on 2008-12-28 07:27 pm (UTC)Немного
А вот это, увы, совсем нет. И дело даже не в каких-то там плохих разработчиках, а в самой принятой процедуре. Ее-то мы и пытаемся изменить.
Не сисадмины, не айтишники мы
on 2008-12-28 07:30 pm (UTC)Лучше чем ничего.
И дело даже не в каких-то там плохих разработчиках, а в самой принятой процедуре.
За 25 лет моей карьеры я ни разу не сталкивался с тем что принятая процедура, whatever it be, мешала бы чему нибудь, да и с процедурой как таковой тоже. Так что я не очень понимаю как то чего нет, может помешать чему-нибудь.
Re: Не сисадмины, не айтишники мы
on 2008-12-28 07:34 pm (UTC)Duck and cover
on 2008-12-28 07:36 pm (UTC)Re: Duck and cover
on 2008-12-28 07:37 pm (UTC)Re: Duck and cover
on 2008-12-28 08:01 pm (UTC)no subject
on 2008-12-28 08:21 pm (UTC)TDD хорош именно для рефакторинга. Насколько он хорош для кода, который пишется с нуля - я пока не поняла. Если у тебя будут какие-то соображения, я бы их с удовольствием послушала. Вообще тема интересная.
Хотя, как и во всех таких делах, здравый смысл - условие хоть и недостаточное, но необходимое для хоть сколько-нибудь осмысленного применения любой системы. Вон ООР вроде тоже неплохая штука - а сколько народу на ней погорела.
no subject
on 2008-12-28 08:22 pm (UTC)Очень хорош. Причем TDD в чистом виде только для нового кода и применим :).
no subject
on 2008-12-28 08:28 pm (UTC)no subject
on 2008-12-28 08:29 pm (UTC)no subject
on 2008-12-28 08:30 pm (UTC)no subject
on 2008-12-28 08:35 pm (UTC)В компанию ко всем перечисленным очень хорошо идёт Continuous Integration, и если вы ещё не там, то я тебе с удовольствием подкину линки (я это, собственно, сейчас и настраиваю в конторе).
no subject
on 2008-12-28 08:35 pm (UTC)no subject
on 2008-12-28 08:36 pm (UTC)no subject
on 2008-12-28 08:45 pm (UTC)Единственное что, эти все игрушки требуют (как, впрочем, и многие другие) определённого уровня программеров. Что, к сожалению, дано не всегда.
Вы, кстати, на чём ваяете - на Java или C++? Java к TDD ласковее.
Есть ещё (в ту же копилку) довольно изящный functional testing framework FIT - http://msdn.microsoft.com/en-us/magazine/cc163841.aspx. Мы проверяли, это вполне нормально функционирует.
no subject
on 2008-12-28 08:47 pm (UTC)no subject
on 2008-12-28 08:51 pm (UTC)Наши взяли какой-то невнятный cppunit, ну да бог им судья, они ж всё равно ни хера не слушают.
А в FIT ты загляни при случае - он занятный.
no subject
on 2008-12-28 08:54 pm (UTC)Однажды мне пришлось добавлять некий замысловатый фичер в систему, после тщательного изучения системы мне удалось добавить сотню-другую строчек кода и стереть полторы тысячи без потери предыдущей функциональности. Так что рефакторинг изучал на практике. В упомянутой книжке открытий для себя не нашел, но книжка и впрямь славная.
Re: Змеиное масло
on 2008-12-28 08:56 pm (UTC)Изучая историю и разработчиков, узнаешь кто на какие глупости горазд.
Да и слишком частые интеграции всегда сопряжены с ляпами и искривлениями начального дизайна.
Очень помогает при анализе начальной логики и отклонений от нее.