Your ability to have an impact on projects and organizations depends on more than just your coding skill, or your official title. It also depends on your ability to influence people - your team members, your managers, your employees, your clients, and your peers. This course teaches the leadership and management skills that every developer, manager or not, needs in order to succeed.
Dan Appleman is a well known author, software developer, and speaker. Currently the CTO of Full Circle Insights, he is the author of numerous books, ebooks, and online courses on various topics (technology and other). His latest book is "Advanced Apex Programming" - advancedapex.com Personal Website http://danappleman.com.
Inside The Black Box In this module, I'm going to state a lot of facts that you already know. In fact, you'll probably find much of what I have to say obvious and at times even trivial, but bear with me. What matters in this module are not the facts, most of which are largely self-evident, but the way to look at those facts. Think of this module as the philosophical foundation on which the rest of this course will be built. Don't worry though, I'm not going to start discussing the beliefs of ancient Greek scholars. I somehow missed most of that in high school and never looked back. What I'm referring to is the idea that facts alone are not enough when it comes to gaining expertise in a subject. The way you think about those facts and the attitude you bring to your understanding of those facts are important as well. For example, many beginning developers, when they see a problem, tend to dive right in to coding solutions. Sometimes this is inexperience and sometimes it's over-enthusiastic adoption of agile philosophies, interpreting agile to mean that the best way to solve a problem is to build something and then keep iterating over it until you've found a solution. More experienced developers, even those who adopt agile methodologies, tend to adopt the philosophy that design is important, and you should put some serious effort into design, both at the start of a project and at the start of every sprint. Placing a high value on design is a philosophy, a way of looking at the software development process and life-cycle. If you adopt that philosophy, good things tend to happen. Your software becomes more reliable, schedules become easier to predict and meet, software life-cycle costs go down. Two developers may have the same knowledge and the same tools, but the one who embraces a philosophy that values design will always do better.
Leadership Topics In this module I'll cover a variety of topics and techniques relating to leadership. In the next module I'll focus on those topics that are more related to management. It is essential that you keep your commitments. The simple reason for this is obvious; people tend to respect those who keep their promises and lose respect for those who don't. the other reason relates to the old saying that if you want something done you should always reach out to someone who is already busy. This seems counterintuitive; wouldn't it make more sense to ask help of someone who has plenty of free time? Not really. Consider why one person might be busier than another; in many cases, a person will be busy because people trust them to do the work. They are trusted because they are good; they do a good job, and they meet their deadlines—they keep their promises. This applies to leaders as well. The strongest leaders are followed because people trust them to do what they say and keep their promises. One of the best techniques for keeping promises is to use great care in making them. It is always best to under promise and over deliver. You'll hear more about that in the next module.
Management Topics Throughout this course I've tended to combine leadership and management, and they are closely related, but as you've seen you can definitely be a leader without being a manager, and as it turns out, you can be a manager without being a leader. The question is can you be a good manager without being a leader? This is actually a question that provokes some debate, but for the purposes of this course I would argue that no matter how good a manager you are you'll be better for also having leadership skills. In this module I'll focus on those leadership skills that are largely specific to the management role, or at least most useful when you hold a management position. As mentioned in the introduction, I'll be completely ignoring most of the traditional subjects that are covered in books and courses about software project management; such as scheduling, budgeting, software development processes, tools, and so on. This course is about managing people.