I do Software Leadership Dan Fleck 2007

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
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)
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
• 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
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…)
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
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?
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!
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