Official Python Certification and Training
- Basic Structure of the Proposed Certification Program
- The implementation, deployment and oversight of the certification program
- Issues not within the scope of this Proposal
It is proposed that the Python Software Foundation (PSF) should establish a certification program for the Python programming language. This is expected to have beneficial effects on industry adoption of Python as well as direct benefits to the Python community and the PSF. It could also provide a source of commercial revenue for the PSF through the licensing of the program content to external providers and those wishing to self-train.
In briefest form, the availability of certification may increase acceptance of Python as an acceptable commercial choice, both in organisations and by individuals. By controlling the certification mechanism, the PSF may position itself to ensure that community values, such as quality, elegance and accessibility be furthered. The specifics of the program outlined below include the creation of a certification program and associated training programs by which developers may work towards a variety of certified accomplishments, including test, assignments and community contribution.
The proposed certification program will have three levels - "Python Certified," "Python Certified Professional," and "Python Certified Expert." For ease of reference, these will be called "certified", "professional", and "expert", respectively.
The lowest level of certification will require testing only. For the higher levels of certification, there will be two activities that provide credits towards certification, referred to here as "Training and Testing" and "Community Involvement." Both types of activities will be required for certification, although it is expected that the certification program could allow varying proportions of the two activities.
The "certified" level will be designed to test substantial competence with the Python language. It will test familiarity with the language syntax, core libraries, and very common third party libraries. Knowledge of the internals of the Python interpreter would not be required for this certification, except perhaps an understanding of the complexity characteristics of the built-in datatypes. This level of certification would mark a developer as having a level of competence in the language and a familiarity with its libraries and idioms that would be appropriate for a junior contributor to a Python codebase.
The "professional" certification will be designed to test strong competence with the Python language and a substantial understanding of the internal structures of Python as well as the differences between the different implementations of Python. It is expected that a developer with a professional Python certification will be familiar with the challenges of both embedding and extending Python relative to a particular runtime. A professional level certification would be associated with the skills required for a senior Python contributor.
The "expert" level certification will be for those who had demonstrated strong competence with the Python language and its implementation and had used that competence to benefit the community in some fashion. It is anticipated that the award of expert level certification will require significant involvement in the Python community and demonstrated commitment to Python generally.
Significant community involvement which demonstrates both technical ability and the kind of awareness required for driving the community forward could be recognized in place of some coursework units completed towards any qualification level.
To understand the role of community involvement in this certification program, consider by analogy the three levels of secondary education in the United States. Bachelors degrees signify the completion of a course of study; Masters degrees the completion of advanced study and a thesis; Doctoral degrees signify the completion of a dissertation. Similarly, the "certified" level could be achieved through study only, whereas the "professional" and "expert" degrees will require contributions to the Python community in the same sense that Masters theses and Doctoral dissertations require contributions to the body of thought.
Up-front development of the certification program will be funded by the Python Software Foundation. Ongoing costs, including general administration, updates of testing materials, grading of examinations, and supervision of expert-level contributions will be met by charging for the certification services and by the commercial sale of certification training materials. Certification trainers may choose to license the course content (and possibly examination materials) from the PSF at a yearly rate, allowing the PSF to recover some of the sunk costs.
Due to the significant work which will be required to implement this program, the amount of this funding should be sufficient that a professional could dedicate time to this. No budget has been set for this activity as yet.
The practice of IT certification can be controversial. Regardless, there are many drivers towards certification, often as the result of the desire to build a resume or to enhance (the appearance of) professional status. As a result, certification achieves a measure of popularity when it is available; both vendor certifications such as those offered by Microsoft and Cisco and independent certifications such as the CompTIA series have achieved wide popularity. Creating an official certification regime will have both up-sides and down-sides for the PSF.
In some cases the people with the most skill oppose certification as unnecessary; skill is not measured by a certification, they argue, any more than intelligence is measured by a college degree. It may be concluded that certification program places undue emphasis on assessment and insufficient value on practical experience and genuine learning.
On the other hand, the provision of a certification program may well help to drive Python uptake. Also, because there are currently no accepted Python certification programs in industry, an official certification program will allow the PSF to perform a measure of quality control. By establishing the program and having input into the course content and goals, the PSF may be able to reach some of its constituency that is currently under-served, and control certification standards more effectively.
Further, studies have shown that Open Source projects with better documentation and higher community involvement have greater uptake. This certification program is designed to produce both better documentation and higher community involvement, hopefully leading to broader use and acceptance of Python across industries.
This certification program is also unique in our experience relative to the amount and nature of the community involvement. This higher level of community involvement - both in the definition and regulation of the program, as well as in the requirements for certification - is unprecedented and will positively affect the Python community and the PSF.
The purpose of this proposal and this rationale in particular is to describe how and why a PSF-sponsored certification program will be beneficial for the PSF and the wider Python community.
Specifically, there are several different ways in which a PSF-sponsored certification program will be useful:
Building the Python Community
Each level of the proposed certification program will help build the Python community, but they would do so in different ways.
In some posts on c.l.py there seems to be a desire by new users to know what they can do to start learning Python. Although there have been some noteworthy efforts to introduce people to Python, a certification program - and in particular, the first level certification - will give prospective or new Python users a set of concrete goals and a benchmark by which they can measure their progress in the language. This concrete learning program will benefit all those who prefer more structured learning.
Although there have been some prior efforts to provide introductory material for Python users, the certification effort will largely be complementary, not competitive, to other efforts. For example, "Learning Python" or "Dive Into Python" could serve as basic introductory texts; the "Python Challenge" could serve as a skills test for those on the way to certification.
Professional and Expert Level Certification
The professional and expert level certifications offer clear benefits to the Python community. A certified professional in the Python community will not just be a person who demonstrates technical mastery on the tests, but also someone who works to produce a substantial benefit for the Python community. Because community involvement will be a mandatory component of the professional certification, it will also help ensure that the Python community has reach into commercial organizations.
There already seems to be substantial demand for Python training. This certification program is designed to be compatible with and supportive of existing efforts. Further, having a PSF-blessed curriculum could spur greater demand for existing services. A standard curriculum could help others enter the training business, and would serve as a benchmark for employers wishing to train their own staff.
Independent Verification of Skill
Python programmers are in increasing demand, but it is very difficult for prospective employers to judge whether potential candidates have good Python skills or not. Having an independent verification of some basic level of skill introduces some transparency into the market and makes Python programmers more employable.
On the applicant side, it allows people to differentiate themselves on the strength of the qualification. For people starting their careers or newly looking for a job the ability to demonstrate some level of skill at Python could be an advantage.
Addressing Business Hiring Practices
In connection with the independent verification of skill above, a Python certification will also work well with standard hiring practices. Because certifications are used to independently verify skills, they are easy "resume fodder" and are frequently included in the list of required or desired qualifications for new job openings.
It is important to note that the introduction of certifications makes certified programmers more employable even if the certification does not effectively guarantee minimum skill levels. First, a certified programmer is more likely to have a higher base skill level, making that person a better risk, and second, the demonstrated completion of a task is indicative of other skills or traits (such as initiative or determination) that are also valuable in a business context.
Further, due to network effects, increasing the visibility and viability of some Python programmers will probably increase the visibility and viability of Python programmers in general.
Increased Viability and Visibility for Python
A certification program for Python will significantly increase the long-term viability of the language. As demonstrated by the very successful Novell, Cisco, and Microsoft certification programs, there is a link between technology-specific education and skills and the success of that technology.
Although IT certification may have started as an extension of training, it has potential as a marketing tool. One recent discussion about Python advocacy focused on how to make occasional Python users into Python advocates. One answer to this question is to increase people's investment in and knowledge of Python; those with a greater stake in the Python community will naturally become better advocates of Python.
Further, the development of a certification program could lead to substantial press coverage for Python. There are no other OSS groups - nor any other dynamic language groups, commercial or OSS - that have worked out a similar standardization and certification program. It is likely there will be substantial public relations benefits for Python and the Python community.
Increased funding for the PSF
The PSF is currently funded through contributions and dues from commercial PSF members. Under this plan, the PSF will receive a portion of the fee from test-takers, and could also generate revenues by approving third-party training materials and selling its own materials, providing an independent revenue stream to fund continuing PSF activities.
Finally, as demonstrated by regular inquiries about Python certification, as well as by the success of existing Python training enterprises, there is demand for Python training in the marketplace. Simply making the certification products available will have a feedback effect, generating further demand. Ongoing demand generation will come from new users of Python and from those seeking to become more marketable to Python-using companies.
Looking forward to the future and considering the broader movement toward dynamic languages, a Python certification could even become a forerunner for other "Dynamic Languages" certifications. This could have the effect of encouraging market adoption of dynamic languages generally, which would also indirectly benefit Python.
There are a number of foreseeable objections to a PSF-led certification program:
"I am not personally interested in certification."
This is probably a common point of view among skilled, community-involved programmers. However, they are not the target market for certification. The target market is the larger group of programmers that do not pursue self-directed or self-initiated training.
More broadly, there is already a market for Python training. The market for certification is almost exactly a superset of the people who will be interested in training classes. Certification is also a means to grow that market. By providing an official program, the PSF can extend its influence into the training arena to the benefit of the language and the community.
"A certification program is hard to put together."
This is true - and that is part of the reason why few people do it. This is not a reason why it should not be attempted.
That is why part of the proposal is that the development of this program should be funded by the PSF. This is not something that most people would want to do in their spare time. In an important sense, it is documentation work (which usually gets short shrift). Funding allows somebody to make this part of their "day job."
"Certification doesn't measure anything."
This objection is also sometimes expressed: "The ability to pass a test doesn't mean that any actual learning has taken place."
Superficially, certification requires that some training take place, followed by a test. The difficulty is that it may be easier to pass the test than it is to gain the level of fundamental competence that the test is designed to assess. However, there are tools and processes available in other certification programs to address this issue. It is expected that the certification will adopt these tools.
Further, the mandatory inclusion of a community involvement is a unique aspect of this program that will help it avoid being a "paper certification." We will be able to see and measure the increased contributions coming from those pursuing certification - proof that this is more than just piece of paper.
To address this issue another way, it is worth noting that there are already training programs that are accepted by the community. Completion of those training programs is already a "certification" of a sort; it means something to the community. This proposed certification is intended to build on existing programs to create something that is meaningful, consistent, and official.
The essential difference is the expectation. If a certification is a "piece of paper from filling out a form on the web," then of course it will be worthless. The idea is to make something of value, recognized by the PSF and the community, and possessed of elements unique in the industry.
To continue the earlier analogy, a certification is somewhat like a college degree. A degree in computer science does not mean that the graduate definitely has a certain skill level. However, it is generally recognized as valuable because there is an expectation that substantial work went into getting the degree.
The Python certification will be rigorous - sufficiently rigorous as to require substantial study and practice before passing the test. As noted in the implementation section below, there is provision for "Authorized Education Centers" for providing classes and training - and there is the expectation that such classes and training will be necessary.
If passing the test is sufficiently hard, it will be recognized as such. The progression to Professional - where a professional is someone who has demonstrated substantial benefit to the community - will also tend to engender support.
"There are many aspects to Python. What will be tested?"
As much as possible! It is also true to say that the certification program is about involvement and teaching as well as simple testing. The knowledge of how to use Python, the ability to use Pythonic idioms, an understanding of common algorithms, a knowledge of Python's libraries, and involvement with the Python community will all be included.
Also see the certification Q&A document.
Point One: A program manager will be employed (on a contractual basis) to:
- create the details of the certification framework,
- create the contents of the certification coursework,
- create the testing regime, and
- establish the licensing framework for interaction with training providers.
This program manager will report to a PSF oversight committee, who will be responsible for guiding the activities of the program manager, accept or reject each stage of the development of the project and provide material assistance on an ad-hoc basis as required.
The program manager will work closely with existing Python trainers to develop both the course syllabus and initial time and cost estimates. A proposal describing the initial stage of program development will be provided to the PSF Board. The proposal can then be accepted or rejected by the membership of the PSF. Further stages may be approved by the oversight committee on the basis of successful completion of each stage.
Point Two: The PSF will establish an oversight committee to guide the activities of the program manager and sign off of each stage of the project.
Point Three: The PSF will create a loose tender process to retain the services of the program manager. The first task of the program manager will be to establish the scope and goals of the initial development, plus the timeline and costs: we propose that a study be funded at a maximum cost of $2,500 to determine the scope and likely cost of such activities; the study should be completed in time to allow a Board vote on whether to proceed in August or September.
The initial development of the program itself can be split into several aspects:
- Scope of initial development
- Course content and training
- Course provision and testing
- Testing and recognition
- Marketing and recognition of quality
There is significant temptation to leap directly into the specification of the content of the initial program. However, the existence of coursework alone is insufficient. In parallel to the creation of an initial course, there must also be activities surrounding the takeup and recognition of the course. Regardless, let us first examine the program content and discuss the other issues subsequently.
It is an important goal of this proposal that the certification program support both individual study as well as the existing Python Training market. Accordingly, there are three parts to the course content:
- The Course Syllabus, which describes the topics covered by each certification level.
- The Base Text, which provides a common foundation for training.
- The Training Materials, which are provided in association with an authorized trainer.
The Syllabus will be provided by the PSF and will be freely available on the Python.org website.
The Base Text will be developed by or in association with the PSF and will be sold commercially for self-study and company-internal use. Selected portions of the base text - those parts that may be suitable for use as Python documentation - will be made freely available on the Python.org website.
The Syllabus and Base Text will be commissioned by the PSF and will be works for hire with the copyright owned by the PSF. To the extent that the training materials incorporated previously-developed work, the PSF will obtain a license to distribute and modify the previously-developed materials. The suggested mechanism for payment for these previously- developed materials is a negotiated share of any royalties collected from direct sales of the materials.
The Training Materials will consist of books, documentation, sample tests, and classroom materials - all in formats already established as effective in the training industry.
These Training Materials will be developed by or in association with those who already have experience with training generally and Python training in particular. It is expected that existing Python training materials will be able to be re-purposed or adapted for the certification program.
The Training Materials will be provided by independent Python trainers and will be approved by the PSF. The Training Materials will only be available from Authorized Training Providers (discussed below).
This multi-tier program is designed to allow people to understand what is expected at each level of certification and pursue self-study efforts. It also allows trainers to have proprietary training materials that they can use to differentiate themselves and make their courses attractive.
PSF development of the course content will be limited to the Syllabus and Base Text. Other Training Materials will be developed by outside trainers and approved by the PSF.
This component therefore involves the creation of Authorized Training Materials and liaising with potential Authorized Training Providers to establish a training course.
An Authorized Training Provider is either an Authorized Trainer (AT) or an Authorized Education Center (AEC).
An Authorized Trainer is a single person that provides training for clients, frequently on-site at client locations. However, nothing would prevent an AT from setting up or holding a training class at another location.
An Authorized Education Center is a training center for professional training. There is no need for the AEC to only offer Python training; rather, it is expected that AECs will typically provide training in many different technologies and for many different vendors.
The use of AECs is suggested according to the model pioneered by Novell in the 1980s. By providing a consistent, high-quality Syllabus and Base Text for third-party instruction firms, we can grow the virtual base of Python knowledge without having to build and staff direct training capacity.
Authorized trainers will be able to submit their own training materials for accreditation under the certification program. Periodic re-accreditation may be necessary as the language changes and accreditation may specify the particular version of Python which was considered.
The tests will measure as directly as possible the skills needed to use Python effectively in a professional context. Thus the material tested will not only include information on Python syntax, semantics, and the standard library, but could also include test-driven development, debugging, basic algorithmic knowledge, and code hygiene.
It is acknowledged up front that it may be difficult to test skills such as debugging and code hygiene in a traditional testing environment. These skills may need to be tested in conjunction with the community involvement portion of the certification.
Existing Python trainers and Python experts can help detail what skills and knowledge are necessary to develop effectively with Python; those skills can be categorized and prioritized, and questions written for each objective. Tests will be delivered through independent testing vendors to reduce administration costs. Such vendors would need careful selection to ensure the tests were administered at a fair price and under good conditions.
A "bootstrapping" process is needed, similar to that required when starting a professional body. There are already many individuals in the community who would be widely recognized as qualified for Python certification, and some accelerated process for admitting them to certification will be required. These individuals could then be the spearhead for further public relations work to promote certification to the broader community.
Some formal review process will have to operate, requiring the initial applicants to make a case as to why they feel certification is appropriate.
It may be useful to for the PSF to adopt particular legal or corporate formalities to assist in carrying out the implementation of this proposal. It is expected that the program manager in charge of developing the certification program will have input on this issue, but in general the legal formalities required to carry out this plan are orthogonal to the decision of whether to pursue a certification program in general.