С 1974 года, окончив Ленинградский сельскохозяйственный институт по специальности «инженер-электрик», работал инженером-конструктором на Старорусском авторемонтном заводе, с 1975 — бригадиром, инженером-технологом в Новгородском районном объединении «Сельхозтехника» (Сырково, Новгородский район).
В 1977—1981 годы работал в Новгородском райкоме ВЛКСМ (второй, затем — первый секретарь).
С 1981 года — на партийной работе: заведующий промышленно-транспортным отделом (1981—1984), второй секретарь (1984—1987) Новгородского райкома КПСС. В 1987—1991 годы — председатель Новгородского райисполкома. До августа 1991 года состоял в КПСС. В 1990 году окончил Ленинградскую высшую партийную школу (преподаватель, политолог).
В 1991—1993 годы — заместитель председателя Новгородского областного Совета народных депутатов, в 1993—1994 — заместитель Главы администрации Новгородской области.
Депутат Новгородской областной думы 1—5-го созывов. Председатель думы 1—4-го созывов (2.4.1994 — 14.10.2008), председатель комитета по законодательству и местному самоуправлению (с 22.10.2008, в 4 и 5-м созывах), член комитета по социальной политике (с 26.1.2011, в 4-м созыве), заместитель председателя думы (с 21.12.2011, в 5-м созыве). Одновременно в январе 1996—2001 годы — член Совета Федерации (член Комитета по аграрной политике, Комиссии по регламенту и процедурным вопросам); в 2006—2007 годы — председатель Парламентской Ассоциации Северо-Запада России.
Одновременно с 14 октября 2008 года — директор Новгородского регионального филиала ОАО «Россельхозбанк».
С 2010 года — председатель конкурсной комиссии по отбору кандидатур для назначения представителей общественности в квалификационную коллегию судей Новгородской области.
С 2016 года — уполномоченный по правам человека в Новгородской области.