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.
In this lesson, you’ll learn about the essential elements of a successful project kick-off meeting or on-site, including who should be there and what should be done during this time.
In this lesson, you’ll learn strategies for identifying and dealing with problems, risks, and red flags on a project. You’ll also learn tips for being a proactive and diplomatic communicator, ensuring that progress and velocity is up to speed, and the importance of minding the boundaries of your relationship with the client and how to effectively advocate for the project, without forgetting the people who can ultimately make the project successful.
Additional resources
In this lesson you will learn about different approaches to Quality Assurance (QA), the importance of doing QA throughout the project, and how QA can be used as a basis for documentation and help for the client.
Additional resources
Testing the front end with CasperJS
Automate Your Life with Phing
CSS Regression Testing with Resemble.js
Write A Hello World Test for Drupal 7 with SimpleTest
Automated Testing in Drupal 7 with SimpleTest
Quality Assurance with Selenium
Careful with that Debug Syntax
In this lesson, you’ll learn about demoing your progress to the client and the team, along with some things to consider in a prototyping process. We'll also talk about retrospectives, when the team takes time to review not just the work produced but the process behind it as well.
In this lesson, you’ll learn some tips for ensuring a successful launch and the importance of celebrating the accomplishments of the team.
PHP Service Classes
FreeIn this course, we're going to continue on from the Introduction to Object-Oriented PHP series. We're working on the same spaceship project: it has ships, you choose them, then they engage in epic battle!
In an editor, far far away, you'll see a simple application that runs this: index.php is the homepage and battle.php does the magic and shows the results. In the first course, we created a single class called Ship
, which describes all its properties—it's like a container for one ship's details. In this tutorial we're going to replace our flat functions and create a BattleManager
service class to provide the methods we'll need to do that.
What's New in Drupal 8
CourseThis video was part of a series of presentations produced in anticipation of Drupal 8's official release. For information about theming based on official releases of Drupal 8, view tutorials in our Drupal 8 Theming Guide.
[# card #]
nid: 2512
title: D8 Theming series
[# endcard #]
This presentation outlines some of the major changes to the way that themes are built in Drupal 8 and is intended to help you generate a list of the things you're going to need to know in order to start making awesome Drupal 8 themes. A lot has changed, and there are a lot of new things to learn. However, one of the primary focuses has been on making the theme layer easier to understand, and easier to get started with.
Almost every aspect of the theming layer has been touched in one way or another during the Drupal 8 development cycle. We think some of the important ones to learn about are:
- How Drupal 8 makes the theme layer easier to understand
- Changes to help make Drupal responsive and mobile friendly
- The adoption of current best practices for HTML5, CSS, and JavaScript
- The addition of a new template engine based on Twig
After watching this presentation you should have a better understanding of the things you'll need to learn in order to create themes in Drupal 8 and where you might need to brush up.
Additional resources
- Drupal 8 Theming Guide (Drupalize.Me)
- Changes for themers
- Twig Theming video tutorial series
- Acquia's Ultimate Guide to Drupal 8: Episode 5 - Front-End Developer Improvements
- DrupalCorn Presentation by Marc Drummond: Building a Drupal 8 theme with new fangled awesomeness
- DrupalCon Sydney Presentation by Jen Lampton: Twig, and the New Theme Layer in Drupal 8
- DrupalCon Austin Presentation by Scott Reeves and Joël Pittet: Drupal 8 Theme System: hook_theme to Twig Template
This video was part of a series of presentations produced in anticipation of Drupal 8's official release. For information about configuration management based on official releases of Drupal 8, view tutorials in our Configuration Management series.
[# card #]
nid: 2458
title: Config Management series
[# endcard #]
This presentation introduces the Drupal 8 configuration management system (CMI). Learn why configuration management is one of the most eagerly anticipated features of Drupal 8, and how it has the potential to completely change the workflow we use for building sites with Drupal. By addressing a number of long-standing issues in Drupal, CMI helps to separate content from configuration, provides a simple user interface for transporting configuration changes between multiple instances of the same site, and gives developers a consistent way to store and retrieve configuration in their code that is guaranteed to work with the rest of management tools provided.
Here's what we'll cover in this presentation:
- What is configuration management, and what problems does it solve
- The CMI user interface, and changes for site-builders
- The CMI API, and changes for modules developers
- What you can start learning now to ensure you're ready to use CMI
After watching this presentation you should have a better understanding of the importance of the new configuration management system and be excited about the improved workflows and ability to follow current best practices that it introduces to Drupal.
Additional resources
- Configuration Management tutorial series (Drupalize.Me)
- Introduction to YAML video tutorial
- Drupal.org documentation: Configuration API in Drupal 8
- Drupal.org documentation: Managing configuration in Drupal 8
- Principles of Configuration Management - Part One article by Chapter 3
- Principles of Configuration Management - Part Two article by Chapter 3
- The Drupal 8 configuration schema cheat sheet
This tutorial provides an overview of the major shift in Drupal 8 to an object-oriented architecture and was created to help you understand which concepts and terminology you will need to learn in order to interact with modules at a code level.
Other tutorials in this series on "What's New in Drupal 8" will cover major changes in specific areas of Drupal 8 module development, such as entities and fields, configuration management, web services, and hooks. This tutorial will focus on object-oriented PHP architectural changes, concepts, and terminology you will need to know as a module developer.
Specifically, we will present:
- an overview of object-oriented PHP
- why it was introduced into Drupal 8
- how it differs from procedural programming
- major OO-PHP concepts you'll find in core
To learn object-oriented PHP, you should begin with our OOP topic page.
[# card #]
nid: 2926
title: OOP topic
[# endcard #]
Additional resources
- Object-oriented PHP topic page (drupalize.me)
- Why the big architectural changes in Drupal 8 article (buytaert.net)
- PHP Manual: Classes and Objects (php.net)
- Objected-oriented programming conventions (api.drupal.org)
- Services and Dependency Injection Container (api.drupal.org)
This video was part of a series of presentations produced in anticipation of Drupal 8's official release. For information about Drupal 8 module development based on official releases of Drupal 8, view tutorials in our Drupal 8 Module Development series.
[# card #]
nid: 2766
title: Drupal 8 Module Development Guide
[# endcard #]
One of the things that makes Drupal an attractive platform for developers to build their applications with is its extensibility. If you've ever used a contributed module, or written your own, you've taken advantage of this fact. Almost everything about the way that Drupal core works can be altered, extended or even replaced in order to allow developers total control. Historically that's always been done by implementing hooks. In Drupal 8 however, we've got some new tools to allow module developers to extend, alter, and enhance core's functionality.
In this presentation we'll take a high-level look at these new options, including:
- The role of hooks in Drupal 8
- The new plugin system for adding functionality
- Using routes to map HTTP requests to custom code
- Events and event listeners
- The service container and adding new services
- Using the Entity API for data storage
After watching this presentation you should have basic knowledge of the various ways in which Drupal 8 can be extended, and when to use each one. You'll also get information about what you can do now to start preparing for using these new tools.
Additional resources
API Documentation on api.drupal.org:
Articles and Video Tutorials:
- Module Development Essentials (KnpUniversity on Drupalize.Me)
- Dependency Injection and the Art of Services and Containers video tutorials
- Responding to Events in Drupal 8 article
- Unravelling the Drupal 8 Plugin System article
- An Introduction to YAML (Drupalize.Me)
DrupalCon:
- Altering, Extending, and Enhancing Drupal 8 — Joe Shindelar (eojthebrave) (DrupalCon New Orleans, May 2016)
Drupal's Change log:
This video was part of a series of presentations produced in anticipation of Drupal 8's official release. To learn about Drupal 8's new Entity API, take a look at our Entity API series.
[# card #]
nid: 2792
title: Entity API series
[# endcard #]
In this presentation we're going to take a high-level look at the new Drupal 8 Entity Field API. This is an improved version of the Entity API and Field API that was started in Drupal 7. Entities are the new recommended way of dealing with data in Drupal and as such, familiarizing yourself with the workings of the Entity API will be important when it comes time to store or retrieve data from your custom modules. It's a big change from what we're used to in Drupal—directly accessing the database via the database abstraction layer—but the Entity Field API also has some distinct advantages.
This presentation covers:
- Improvements to the Entity API
- Improvements to the Field API
- Handlers, Controllers, and ways to manipulate entities
- Discussion of new types of things we can build with these changes
- What you can do to start learning now
After watching this presentation you should be able to articulate the improvements made to the Entity Field API in Drupal 8 and start to understand how you might make use of it in your own code. We'll also cover some of the things you can start doing now in order to prepare yourself to use the Entity Field API in Drupal 8.
Additional resources
- Community documentation for Entities (drupal.org)
- Entity API (api.drupal.org)
- Drupal 8 Entity API DrupalCon Austin presentation (austin2014.drupal.org)
- Topic: Entities (Drupalize.Me)
This video was part of a series of presentations produced in anticipation of Drupal 8's official release. For information about responsive design tools based on official releases of Drupal 8, view tutorials in our Responsive Web Design topic.
[# card #]
nid: 2968
title: Responsive Web Design topic
[# endcard #]
Drupal 8 is now a friend of mobile—mobile users, mobile developers, and even mobile site administrators. In this presentation, we'll look at the variety of mobile-friendly features added to Drupal 8 in the areas of site administration, site building, and module development.
"Mobile" means different things to different folks. For a content editor, being able to quickly update a piece of content from any device means one less barrier to getting a task done, when and where they want. For a developer, the prospect of diving into web services and building APIs that can be used for mobile apps or in conjunction with the latest Javascript framework is empowering and exciting, especially since the work of structuring entities and fields and administrating content can stay in Drupal. For the site builder, who simply wants to quickly get a site up and running out-of-the-box with a theme that "just works on mobile," the default responsive theme, Bartik, is a time-saver for sure.
By the end of this lesson, you'll have a better idea of the depth and breadth of what "mobile" means for Drupal 8 users of all kinds.
Additional resources
This course introduces important concepts in object-oriented PHP. It is authored and produced by our partners at KnpUniversity (now SymfonyCasts). In this PHP course, you'll be building a PHP app using PHP and refactoring the code, step-by-step, using concepts in OO-PHP such as classes, methods, access control, type hinting, and constructors. You'll learn how to have one object interact with another and by the end of this project, your PHP app will be sporting some shiny new object-oriented PHP.
In this lesson, Leanna introduces you to the project and shows you how to get it up and running. So, look for the Course code download link below and we'll walk you through the process of getting the app up and running on your computer using the built-in PHP server. As long as you have PHP installed on your computer and a code or text editor, you should be able to complete the lessons in this series. (A full stack web server (i.e. Apache/MySQL/PHP) is not required, only PHP.) Follow along by running commands from the start
directory.