1c01feb4155d047bd4dc177295ed5fc7.ppt
- Количество слайдов: 19
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 w w Deliver the software on time Managing the process Guiding the solution architecture Scheduling § Development tasks § Testing tasks § Deployment w Managing requirements and change requests w Providing status information to your boss
Deliver Software on Time • No excuses -- it’s not on time, it’s your fault • Key Strategies w Constantly be aware of the schedule and update it if needed w Communicate updates to the team and the customer w 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. w Establish a software CM repository if one doesn’t exist w Establish a build process if one doesn’t exist (time spent automating repetitive tasks pays off in the long run!) w 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 w Let people figure things out w 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! w If people are working late into the night a couple times, have the company buy dinner for them. YOU make it happen! w At the end of a successful release cycle, have the company take the team to lunch w Take a 2 hour bowling lunch every 4 -6 months w 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 w add time to the schedule w 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 w What are the current risks w How is the team feeling w 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 w Test it w Be able to demo it completely w 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 w Customer loves feature X w Customer doesn’t seem so happy today about us removing feature Y • Give credit wherever you can w 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 w Update the schedule w Determine what people are working on this week • Tuesday w Think about risks w Look through change requests to see if anything is now higher/lower than it should be • Wednesday w Build the latest system w Spend some time testing it/using it
Summary • Thursday w See if developers seem to be on schedule w Anyone needing help? • Friday w Do all the tasks you were supposed to do Mon-Thurs, but really you were to busy to do any of them! • Saturday w Drink • Sunday w Sleep
Summary Everything on the team is your responsibility. Success or failure is all up to you!
Afterthoughts • 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 w “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!
1c01feb4155d047bd4dc177295ed5fc7.ppt