GitHub is a great, free service that lets you share your Git repositories online with others. In this tutorial, Blake gives a quick tour of our Git Series Example GitHub project, and then explains how pull requests work, letting you merge changes into the repository through the UI. Feel free to try it out by adding jokes to our new jokes.txt file!
This tutorial takes a look at applying a patch from Drupal.org to your local copy of a module or Drupal core using Git. Afterwards we'll look at how you can create your own patches, using git diff
and git format-patch
, in order to contribute code back to Drupal or any of the module's on Drupal.org. You can see a full Git workflow using GitHub in the lesson Git Workflow: Putting It All Together.
Additional resources
Git Best Practices: Upgrading the Patch Process article
Applying a patch in a feature branch
In this tutorial, Joe walks you through a typical Git workflow. We start with cloning a repository, creating a branch, and getting some work done. Then we go ahead and commit our work, merge it into the master branch, and push our changes back up to the remote repository.
We've now learned about all sorts of commands in git and the flags that accompany those commands. We've also seen that some of those commands can get to be a bit long and are used quite often. In this lesson we're going to take a look at how to create command aliases in our .gitconfig file so that we can have a shorthand for accessing some of these more esoteric commands. We'll also take a quick tour of Joe's personal .gitconfig file that he uses in his day-to-day work.
What is version control? Why should we be using it? Where do we even start? Managing your code is very important, both to make sure you don't accidentally lose a lot of work, but to also make it clear who is working on what and be able to track those changes over time. There is a big world of version control systems and this Do it with Drupal session with Blake Hall will explain the general concepts and best practices around using version control, as well as provide some demonstrations of one of the most popular ones being used today, Git.
Additional resources
This video shows you how to create your own custom shortcuts for various commands. We'll look at some common aliases and see how to add them to our command line environment. This is super handy for commands that you type in all the time and don't want to go through the tedium of typing the whole thing out every time. For example, we show how to automatically go to a particular directory with just one word (e.g. type "clients" and go to the /Users/add1sun/lullabot/clients directory immediately).
This video looks at the basics of working with MySQL from the command line. We get into the mysql environment and look at databases, tables and fields. We cover creating and deleting databases, creating a user, and querying within a particular database.
Note: In some places the command line prompt is cut-off. The YouTube version of this video doesn't have the cut-off problem. We are working on getting this fixed, but in the meantime, check out the YouTube version instead.
Command Line Basics 13: Using MySQL from Command Line (youtube.com)
This is an introduction to the Tail command, available on Unix/Linux systems. Tail has many applications, but this video concentrates on its basic usage and useful options, as they pertain to Drupal developers.
You'll learn how to take a quick peek at recent log messages from a single log file, how to do the same thing with multiple logs, as well as watching log files in real time! We'll finish up with a practical application, to see why this is useful.
Commands used in this video:
To view the documentation (or manual) for the tail command:
man tail
To show the last 20 lines of the webserver's access log file:
tail /var/log/apache2/access.log
To show the last 20 lines of the webserver's error log file:
tail /var/log/apache2/error.log
To show the last 20 lines of the webserver's error log file and continue to print new lines added to the file:
tail -f /var/log/apache2/access.log
Welcome to a special series on Project Management from Drupalize.Me. This series differs from our usual format of screencasts and presentations. We interviewed Lullabot's technical project managers, the Chief Operating Officer, and the Account Director, and organized the footage into a series of lessons on topics that project managers (PMs) deal with on a regular basis, including contracts, communication, estimation, tools and methodologies.
Here's what we'll be covering in this Introduction to Project Management series:
- Project Management Methodologies: Learn about terminology and methodologies used in the world of software project management and how combining methodologies from different traditions can work effectively on service projects.
- Tools for Managing Projects: Learn about the kinds of tools that are used in software project management for tracking progress, reporting, and team and client communication.
- Traits of a Project Manager: What makes a great project manager? What characteristics, skills, and approaches are great to have in someone in the role technical project manager?
- Types of Services Contracts: Learn about the different types of services contracts; in particular, the three that Lullabot uses in their client engagements. As you will see, the type of contract can have different implications in a project manager's needed skills and approach.
- Estimation on Drupal Projects: Learn about the challenges of estimation, and insights into the what estimates should communicate and how they should illuminate the various degrees of risk and uncertainty in a project.
- Resourcing and Scheduling: Learn about the challenge of determining how many people are needed for a project, and what questions to ask when determining capacity.
- Putting Together Teams: Learn strategies for how to put together teams, especially for large projects.
- Being Human on Projects: Learn about the people skills that are important to have, ways to detect burnout, and how to help team members get back on track.
- Client Communication: Learn about the many facets of client communication.
- Managing Expectations: Learn strategies for aligning and managing client expectations from the perspective of sales and account management.
- Project Kick-Off Essentials: Learn about the essential elements of a successful project kick-off meeting.
- Problems, Risks, and Red Flags: Learn strategies for identifying and dealing with problems, risks, and red flags on a project.
- Quality Assurance (QA): Learn about the various kinds of QA that you can implement in your project.
- Demos and Retrospectives: Learn about demos and retrospectives, some things to consider in a prototyping process, and what you can learn from these activities.
- Launch and Celebration: Learn some tips for ensuring a successful launch and the importance of celebrating the accomplishments of the team.
Whether you are a developer-turned-project-manager or a seasoned veteran, we think you will find insight into the art and science of project management in this series.
In this lesson, you’ll learn about methodologies and techniques that are often used in project management. These methodologies provide a set of processes for a development team to utilize, and a framework that a project manager can use to structure a project’s tasks and progress. You’ll hear from project managers at Lullabot who explain terms such as Waterfall, Agile, Wagile or Consultancy Scrum, Kanban, Scrum, and Sprints and how a tailored combination of these techniques often leads to the best results.
Additional resources
In this lesson, we’ll hear from Lullabot project managers about what they think makes a good ticket tracking system, some helpful ways to organize tickets, and other features including tracking conversations, email notifications, and reporting features that many ticket software platforms can provide. We’ll also hear about a tool called a Gantt chart which can help a project manager answer questions such as “when the project will be finished”, “what the critical path is”, and “what are the dependencies in this project?”
Additional resources
- Gantt Charts (SmartSheet)
- Burn down chart
- zenhub.io for GitHub
- Agile for JIRA
- Trello.com (standalone w/some integrations)
- JIRA: Agile plugin has a nice tool for planning sprints
- GitHub: use Milestones
In this lesson, you’ll hear from Lullabot’s Chief of Operations, Account Director, and several technical project managers about what they think makes a good project manager. These traits of a good PM include: being a great communicator, having the ability to distill a project into tasks, taking initiative to clear blockers for developers, probing stakeholders for requirements, assumptions, and other vital information, demonstrating leadership, and finally being able to have difficult conversations with clients—discussing uncomfortable truths with tact and diplomacy. Are you on the path to becoming a project manager? Or maybe you’re looking to improve your skills? With these insights, learn about the variety of technical and people skills that make for a great project manager.
Additional resources
Want to dive deeper? Here are some books recommended by project managers at Lullabot:
- Peopleware: Productive Projects and Teams by Tom DeMarco & Timothy Lister
- Making Things Happen: Mastering Project Management by Scott Berkun
- Tribal Leadership: Leveraging Natural Groups to Build a Thriving Organization by Dave Logan, John King & Halee Fischer-Wright
- User Stories Applied: for Agile Software Development by Mike Cohn
- Analysis without Paralysis: 12 Tools to Make Better Strategic Decisions by Babette E Bensoussan & Craig S Fleisher
- Software Estimation by Steve McConnell
- The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks, Jr.
In this lesson, you’ll learn about three types of services contracts: the fixed bid or fixed scope, time and materials, and a retainer-based contract. You’ll also hear about the Iron Triangle: budget, scope, and timeline, and how these elements are controlled or can flex in these different types of agreements. Finally, you’ll learn about how a contract can imply a certain level of trust and how building successful relationships with clients can lead to future, more mutually favorable agreements.
Additional resources
In this lesson, you’ll learn what makes a good estimate and what some good questions are to ask in the estimation process. You’ll also hear about how an estimation process can detect unclear requirements and what kind of communication needs to happen as a result of that discovery. Finally you’ll learn some helpful techniques for estimation that provide just the right amount of detail.
Additional resources
Want to dive deeper? Here are some books recommended by project managers at Lullabot:
Books
- Peopleware: Productive Projects and Teams by Tom DeMarco & Timothy Lister
- Making Things Happen: Mastering Project Management by Scott Berkun
- Tribal Leadership: Leveraging Natural Groups to Build a Thriving Organization by Dave Logan, John King & Halee Fischer-Wright
- User Stories Applied: for Agile Software Development by Mike Cohn
- Analysis without Paralysis: 12 Tools to Make Better Strategic Decisions by Babette E Bensoussan & Craig S Fleisher
- Software Estimation by Steve McConnell
- The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks, Jr.
Online Resources
- Systems development life cycle
- Scrum Breakfast (blog)
- Agile Software Development .com
- Certifications in Scrum
- Software Effort Estimation Considered Harmful
and on the opposite spectrum: How to Estimate
Templates
Articles by Lullabots
- Building a Development Matrix by Jerad Bitner
- The Art of Estimation by Seth Brown
- An Update on the Art of Estimation by Jerad Bitner
Methods
In this lesson, you’ll learn about the challenge of determining how many people are needed for a project, what questions to ask when determining capacity, and finally signals that may indicate that it’s time to bring others in or remove team members from a project.
Additional resources
The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks, Jr.
In this lesson, you’ll learn some strategies for how to put together teams, especially for large projects. You’ll hear about the advantages of organizing a project into work streams, what that means, and how it can be advantageous to break up a large project team into smaller, more efficient groups.
In this lesson, you’ll learn about the human side of project managing; what people skills are important to have, and ways to detect burnout and help team members get back on track.
In this lesson, you will hear a variety of perspectives on the many facets of client communication. As trust directly impacts communication, you will hear about how trust varies depending on the type of project. In difficult conversations, learn about the importance of listening. To build trust and manage tricky situations, learn about transparent, proactive communication of risk factors. On a practical level, you’ll learn about the importance of translating client discussions into action items for the development team, and how the ticket queue can be a great place to capture important discussions and facilitate client communication with the project team.
In this lesson, you will learn some strategies for aligning and managing client expectations from the perspective of sales and account management. Learn how you, as a project manager, can work with an account manager to effectively communicate with a client to find out whether or not expectations are being met.