Hi everyone,
Just wanted to post an update with the latest mind map (which is in Jeremy's drop box for those with access, and attached to this email too).
I've been working on finding the right shape for each of our proposed modules, based on the discussions we had at Jeremy's a couple of weeks back now. Scroll down (or open the attached map) to "Content" to see what this might look like.
Each module probably needs an ID. I've gone with topic-area/topic/LXXX, (e.g. TS/NI/1001) where
* topic-area is something like Technology Stack (abbrev to TS)
* topic is something like Development Environment (abbrev to DE)
* L is the NVQ level (1-5)
* XXX is a three-digit number starting at 001, to give us plenty of room to replace modules in the future.
All the IDs I'm using in the mind map are meant to be examples; I'm sure we'll want to assign final IDs once we're happy with the modules and their content (and, of course, the ID structure too).
Each proposed module has three main components so far. This will probably need to change once we've looked at NVQ material created by other groups.
* Objective: summary of what the module is there to achieve
* The Student Should Be Able To (TSSBAT): a list of the skills and understanding that the student should be able to demonstrate to the assessor after completing the module
* Assessment: how will the module be assessed?
I haven't added any module content; a mind map isn't really suitable for that.
Please have a read when you have time, and feedback (whether positive or negative; all feedback gratefully received!) on the suggested module structure.
The other thing to briefly mention is the modules themselves. At this early stage, where we're very much still kicking around ideas for topics to be covered, it is starting to feel that we could end up with a long list of smallish modules in the main. Anyone have any opinion on the size of module you think we should be aiming for?
Best regards,
Stu
--
- Standards
- Aligned with UK NVQ stages
- Level Definitions
- Foundation Level
- Stuff You should know before embarking on a web developer career
- Level 1
- Day to day activities
- Staff under the supervision of more senior staff
- Competence that involves the application of knowledge in the performance of a range of varied work activities, most of which are routine and predictable.
- Level 2
- Competence that involves the application of knowledge in a significant range of varied work activities, performed in a variety of contexts. Collaboration with others, perhaps through membership of a work group or team, is often a requirement.
- Level 3
- Supervisory level
- Supervising level 1 & 2 staff
- Competence that involves the application of knowledge in a broad range of varied work activities performed in a wide variety of contexts, most of which are complex and non-routine. There is considerable responsibility and autonomy and control or guidance of others is often required.
- Level 4
- Managerial
- Competence that involves the application of knowledge in a broad range of complex, technical or professional work activities performed in a variety of contexts and with a substantial degree of personal responsibility and autonomy. Responsibility for the work of others and the allocation of resources is often present.
- Level 5
- Senior Management
- Competence that involves the application of a range of fundamental principles across a wide and often unpredictable variety of contexts. Very substantial personal autonomy and often significant responsibility for the work of others and for the allocation of substantial resources features strongly, as do personal accountabilities for analysis, diagnosis, design, planning, execution and evaluation
- Assessment
- Tracks
- 0. This mindmap
- Record of topics that need covering
- Looking to separate out tools from practices
- Both are important
- Some overlap inevitable
- Keeping tools pages separate from practices might help us structure and grow the site
- Feels like a wiki appropriate
- With something like Moodle to teach the material in a specific order
- Not looking to teach PHP the programming language
- Looking to promote PHP practices
- Looking to promote sound engineering practices
- Less is more; hardest challenge will be agreeing what to leave out :)
- 1. Our Objectives
- 0. A standard the community supports and trusts
- 1. The absolute minimum a PHP developer must know to do her job
- Where do we draw the line?
- Where do we expect prior knowledge?
- What do we consider too advanced to be fundamental?
- 2. An awareness of advanced topics and techniques
- 3. An understanding of the PHP way
- 4. Where to go to get more in-depth information
- 5. Grass-roots training and accreditation
- 6. A community of good practice
- How agnostic will we be?
- Will we push standards?
- Or should we push "what works / is commonly used"?
- 2. Technology Stack
- Client-side
- HTML
- Dialects
- HTML 4
- HTML 5
- XHTML
- Browser-specific extensions
- Fundamentals
- Tags
- Tag IDs
- CSS styles
- CSS classes
- Attributes
- Entities
- Structure
- CSS
- Javascript
- AJAX
- Libraries
- Common tools
- Flash
- Network / internet
- DNS
- How DNS works
- TTL and caching
- HTTP
- Proxy servers
- HTTP caching headers
- Evil reverse proxy farms
- File transfer
- Firewalls
- NAT
- Private networks
- Public IP Addresses
- Server-side
- Web Servers
- Databases
- SQL
- Relational Databases
- MySQL
- Storage engines
- Admin tools
- phpMyAdmin
- Command-line tools
- Microsoft SQL Server
- NoSQL
- CouchDB
- Cassandra
- Memcached
- PHP
- Installing
- Upgrading
- Execution Model
- PEAR
- PECL
- Build your own
- Frameworks
- Introduction
- CakePHP
- CodeIgniter
- Kohana
- Symfony
- Yii
- Zend Framework
- Make your own
- Bytecode caches
- Configuration
- php.ini files
- Output buffering
- register_globals
- magic_quotes
- memory limits
- File uploading
- Operating Systems
- Windows Server
- Linux
- Different flavours
- Debian
- Ubuntu
- Redhat Enterprise
- CentOS
- Basic concepts
- Processes
- stdin & stdout
- Filesystems
- Basic skills
- Users
- Logging in
- Changing passwords
- Creating users
- sudo
- Networking
- Server administration
- Text editors
- Command-line basics
- Directory listings
- UNIX shells
- Basic shell usage
- Bash programming primer
- Services
- Hosting
- Shared hosting
- Dedicated hosting
- Cloud hosting
- Other Technologies
- Web Services
- File and data formats
- Protocols?
- Development Environments
- Desktops
- Choice of operating system
- Virtual Machines
- Editors and Tools
- Editors
- IDEs
- Eclipse PHP Development Tools
- Komodo
- Netbeans
- Zend Studio
- Debuggers
- Profilers
- Version Control Systems
- subversion
- git
- mercurial
- CVS
- Issue Trackers
- Bugzilla
- Basecamp
- Lighthouseapp
- Mantis
- Redmine
- Trac
- 3. Development Practices
- Architecture
- Design
- Coding Practices
- Organising your code
- PHP objects layout
- MVC
- Protecting config files
- Error checking
- E_STRICT
- Don't use @ ever!
- Exceptions
- FIEO
- Filter input
- Escape output
- To the browser
- htmlspecialchars
- urlencode
- To the database
- mysql_real_escape_string
- PDO
- User authentication
- HTTP basic auth
- Doing it yourself
- PHP sessions
- Explaining session IDs
- When to create a new session ID
- HTML form handling
- $_GET / $_POST / $_REQUEST
- Cross-site scripting (XSS) attacks
- Cross-site request forgery (CSRF) attacks
- Redirect 303 after POST
- Change state only on POST
- Web services
- Global variables
- Proper use of parameters
- Passing variables into functions and methods
- Pass by handle
- Pass by reference
- Pass by value
- Treat your code as your own library
- Coding Skills
- Debugging PHP Code
- Optimisation
- Caching
- Memcached
- Pre-generation
- Output buffer
- Code Profiling
- Assume nothing, profile everything first!
- Built-in instrumentation
- MySQL EXPLAIN
- xdebug
- valgrind
- Bytecode Caching
- Zend Optimizer
- Testing
- Unit Testing
- Continuous Integration
- Acceptance Testing
- Source Control
- Version Control Systems
- Branching
- Tagging
- Documentation
- Deployment
- Packaging
- Tarball / ZIPfile
- PHAR files
- Handling dependencies
- Installing
- 4. Project Practices
- Requirements
- Prototyping
- Specifications
- Test Management
- Project Management
- Service Management
- Content
- Foundation Level
- Level 1
- Technology Stack
- Client-side
- Network / internet
- HTTP
- How HTTP Works
- HTTP Proxies
- Correct headers for caching
- File transfers
- TS/NI/1001
- Title
- Objective
- Gain an understanding of DNS
- TSSBAT
- Explain the role of DNS in web browsing
- Configure DNS for a new website
- Assessment
- TS/NI/1002
- Title
- Objective
- Gain an understanding of HTTP status codes
- TSSBAT
- Explain the role of HTTP status codes
- Choose the right HTTP status code for common situations
- Assessment
- TS/NI/1003
- Title
- Objective
- Gain an understanding of MIME content types
- TSSBAT
- Explain the role of a MIME content type
- Choose the right MIME content type for common situations
- Know where to find the right content type for other types of data
- Assessment
- TS/NI/1004
- Server-side
- Other technologies
- Development environments
- TS/DE/1001
- Title
- Personal development environment setup
- Objective
- Setup a basic development environment
- TSSBAT
- Install PHP binaries
- Install a suitable IDE
- Install a source-control client
- Transfer their work to a test environment
- Transfer their work to a live environment
- Assessment
- TS/DE/1002
- Title
- Commonly-used Environments
- Objective
- Gain an understanding of the common environments used in web development
- TSSBAT
- Explain what a development environment is
- Explain what a test environment is
- Explain what a live environment is
- Explain the appropriate environment for new development
- Explain the appropriate environment for debugging
- Assessment
- Development Practices
- Architecture
- Design
- Coding Practices
- Coding Skills
- Testing
- Source Control
- Documentation
- Deployment
- Project Practices
- Requirements
- Prototyping
- Specifications
- Test Management
- Project Management
- ServicevManagement
- Community and Ecosystem
- Free / Open Source Software
- PHP Community
- Wider IT Community
- Internet
- Level 2
- Technology Stack
- Client-side
- Network / internet
- DNS
- Setting Up A Host
- Moving A Host
- HTTP
- TS/NI/2001
- Title
- Objectives
- Gain an understanding of how to pass additional metadata back in a response
- TSSBAT
- Explain what X- HTTP headers are
- Explain when it is appropriate to use X- headers
- Explain alternatives for when X- headers are not appropriate
- Assessment
- Server-side
- Other technologies
- Development environments
- Development Practices
- Architecture
- Design
- Coding Practices
- Coding Skills
- Testing
- Source Control
- Documentation
- Deployment
- Project Practices
- Requirements
- Prototyping
- Specifications
- Test Management
- Project Management
- ServicevManagement
- Community and Ecosystem
- Free / Open Source Software
- PHP Community
- Wider IT Community
- Internet
- Mentoring
- Level 3
- Technology Stack
- Client-side
- Network / internet
- Server-side
- Other technologies
- Development environments
- Development Practices
- Architecture
- Design
- Coding Practices
- Coding Skills
- Testing
- Source Control
- Documentation
- Deployment
- Project Practices
- Requirements
- Prototyping
- Specifications
- Test Management
- Project Management
- ServicevManagement
- Community and Ecosystem
- Free / Open Source Software
- PHP Community
- Wider IT Community
- Internet
- Level 4
- Technology Stack
- Client-side
- Network / internet
- HTTP
- Load balancing
- Creating new content types
- Server-side
- Other technologies
- Development environments
- Development Practices
- Architecture
- Design
- Coding Practices
- Coding Skills
- Testing
- Source Control
- Documentation
- Deployment
- Project Practices
- Requirements
- Prototyping
- Specifications
- Test Management
- Project Management
- ServicevManagement
- Community and Ecosystem
- Free / Open Source Software
- PHP Community
- Wider IT Community
- Internet
- Level 5
- Technology Stack
- Client-side
- Network / internet
- Server-side
- Other technologies
- Development environments
- Development Practices
- Architecture
- Design
- Coding Practices
- Coding Skills
- Testing
- Source Control
- Documentation
- Deployment
- Project Practices
- Requirements
- Prototyping
- Specifications
- Test Management
- Project Management
- ServicevManagement
- Community and Ecosystem
- Free / Open Source Software
- PHP Community
- Wider IT Community
- Internet
- 5. Community and Ecosystem
- Free / Open Source Software
- PHP Community
- Popular blogs
- PHP user groups
- Conferences
- Wider IT Community
- Internet
- 6. Mentoring & Accreditation
- Train the trainers
- Mentoring groups
- Accreditation
- A points system like on college courses
- Required to take a set number of modules from a set number of groups
- Certificate website, where you can show anyone what you've passed