techlead

advertisement
Yeah but.. What do I do?
Software Leadership
Dan Fleck
2007
The Question
• Often the question comes up after a
lesson in Software Engineering,
“I know all these practices, and
techniques, but what do I REALLY do?”
Who you are
• First, we need to know who you are
Project
Manager (PM)
Technical
Lead
Developers
Testers
QA
CM
Responsibilities
• Tech Lead




Deliver the software on time
Managing the process
Guiding the solution architecture
Scheduling
 Development tasks
 Testing tasks
 Deployment
 Managing requirements and change requests
 Providing status information to your boss
Question?
• You are the tech lead of a team. The
customer asked you to do three new
features, which you agreed to because
programmer Joe said they’d be done on
time. The project is late by 3 weeks.
Whose fault is it?
• A Customer
C Yours
• B Joe
D The Man
Deliver Software on Time
• No excuses -- it’s not on time, it’s your
fault
• Key Strategies
 Constantly be aware of the schedule and
update it if needed
 Communicate updates to the team and the
customer
 Don’t make up the schedule -- Ask for
developer’s estimates then review them for
reality
Manage the Process
• You set the process for the team.
 Establish a software CM repository if one
doesn’t exist
 Establish a build process if one doesn’t exist
(time spent automating repetitive tasks pays
off in the long run!)
 Think about all the things from this class,
which do you need to do and to what extent?
Different developers may need to apply
process in different ways (junior/senior)
Management Question
• On your team, how detailed should you
know schedules of your team members?
• A It depends B Daily
• B Weekly
D Monthly
Managing Developers
• Know what they are doing, but don’t micro-manage
• Help when problems occur
 Let people figure things out
 Don’t let them struggle and jeopardize the schedule
• They estimate tasks - you then hold them to those
estimates
• Ensure they are working on the customer’s priorities
• Make them unit test and write documentation required of
them
• Recognize differences in style -- if you don’t know, ASK
THEM!
Managing Testers
• How do we manage testers?
•
•
•
•
A More closely than developers
B Less closely since their job is easier
C The same
D It depends how they perceive their job
Managing Testers
• Same as developers, but additionally…
• During a testing cycle make sure they are the priority --if they need help from a developer, they should get it
• Make sure everyone understands testers job is to find
bugs -- we’re all on the same team
• If the development schedule slips, do NOT reduce the
testing time to compensate
How do you motivate people?
•
•
•
•
•
A Buy pizza
B Give them a promotion
C Let them leave early some day
D All of the above
E Who cares… I’m the boss
Managing People
• We’re not parents -- “because I said so” is not
acceptable
• All of us are smarter than any of us
• Have fun -- buy food!
 If people are working late into the night a couple times, have the
company buy dinner for them. YOU make it happen!
 At the end of a successful release cycle, have the company take
the team to lunch
 Take a 2 hour bowling lunch every 4-6 months
 Other ideas????
• Take the time needed to work with them -- you always have time for
your people!
Manage Requirements and
Change Requests
• Always do what the customer wants or explain why they
don’t really want it. Say “yes” to the customer!
• Don’t say “yes” to the customer and pay for that by killing
your team
 add time to the schedule
 Remove other features
• If your boss does this, require them to provide the
resources you need or go back and explain their mistake
to the customer
• Use an automated bug tracking/feature request system
(Bugzilla, Gnats, PVCS Tracker, many others…)
Behind Schedule
• Your system is behind schedule. You are
working on it and your team says you will be
able to catch up and deliver on schedule. What
do you tell your boss?
• A Nothing… we’ll hit the deadline
• B Tell him all is good
• C Tell her that we are behind schedule, but will
catch up
• D Get him drunk, then B
Provide Status Reports
• Provide realistic information to your boss
 What are the current risks
 How is the team feeling
 Are we on schedule
• Become a great demo-er of your system
Your job is technical and political - you
must always be able to sell your product
As a tech lead how much do you
need to know about the system?
•
•
•
•
A High level information
B All Low-level details
C Be a serious power user
D Be able to use the system in a cursory
manner
Other tasks
• Be an expert on the system
 Test it
 Be able to demo it completely
 Clearly understand all features
• Setup a periodic meeting for the team to discuss
how we can make this project better
• Don’t be afraid to try new things
• If you believe in something, don’t be afraid to
force it on your team for a short amount of time
(eat your vegetables!)
Other tasks
• Change slowly (not all at once)
• Provide feedback to the team that you hear
 Customer loves feature X
 Customer doesn’t seem so happy today about us
removing feature Y
• Give credit wherever you can
 Glad you liked feature X, I’ll let Robin know because
she developed it.
• Be honest -- we screwed up… how do we fix it?
Summary
• Monday
 Update the schedule
 Determine what people are working on this week
• Tuesday
 Think about risks
 Look through change requests to see if anything is
now higher/lower than it should be
• Wednesday
 Build the latest system
 Spend some time testing it/using it
Summary
• Thursday
 See if developers seem to be on schedule
 Anyone needing help?
• Friday
 Do all the tasks you were supposed to do Mon-Thurs,
but really you were to busy to do any of them!
• Saturday
 Drink
• Sunday
 Sleep
Summary
Everything on the team is your responsibility.
Success or failure is all up to you!
Afterthoughts
• Wait, wait, wait… I’m not going to manage
yet…
What should I do as a software engineer?
Problems on the team
• If you are a software engineer and ask
your boss for help, but he doesn’t have
time to talk to you or help. What do you
do?
• A Talk to your co-workers for help
• B Talk to boss’s boss for help
• C Get a new boss
• D Work harder to solve the problem
yourself
Software Engineers
• If they don’t ask, tell the boss when you
will get a task done
• If they don’t ask, tell the boss what you are
working on this week
• If they don’t ask, tell the boss when you’re
having problems and need help
• If they don’t help --- get a new boss!
I’m great.. but no promotion!
• You believe you’re a great leader, but have not
had the opportunity to lead. You want a
promotion, how do you get it?
• A Tell the boss how good a leader you are
• B Work harder in your current role and do an
exceptional job
• C Take classes and show your boss your
resume
• D Start your own company
Getting the promotion…
• Don’t say
 “I’m a really good leader, they should promote me into that role where
I’ll shine!”
• If you’re not “shining” in a smaller role, there is
no incentive to promote you to a larger role!!!
• Shining is : getting work done on schedule,
working well with others, being helpful to others,
taking on more tasks, getting to work on time
(sober), not complaining!
Download