[1] A lead programmer's duties are often "hands on", meaning they typically write software code on a daily basis, assisting their team to meet deadlines and improve the quality of the codebase.
[3] They ensure that sections of software projects come in on time and under budget, and assisting technically with hiring and reviewing performance of staff.
Lead programmers also serve as technical advisers to management and provide programming perspective on requirements.
Where teams follow the waterfall, extreme programming, or kanban approaches, the lead programmer is referred to as an engineering manager, or a software development manager, and collaborates directly with a peer, the product owner, who gathers the customer requirements that the end product must meet.
In a true Agile approach, the lead programmer collaborates with a separate position of scrum master, who acts as an intermediary seeking a compromise between business demand (product owner) and team capacity and skillset, e.g. which story tickets from the product backlog will be passed into the next Agile sprint.