Monday, May 14, 2007

A Call for Professional Trainers of Python

I am seeking to organize the list of those, both individuals and companies, who offer training on Python and related frameworks and technologies.

This is for those who provide classes, typically to businesses, as part of their professional offerings, in order to provide an answer to Forrester Research. They are surveying the various dynamic programming languages and want to know, essentially, how easily can an IT manager get his people trained up on Python in comparison to other languages.

There is a wiki page at:

http://wiki.python.org/moin/PythonTraining

with some training organizations. If your information is already there and current, no response is necessary. But if you are not mentioned, please update that wiki page so we can get an accurate accounting and hopefully send business your way.

Thanks,

Jeff Rush
Python Advocacy Coordinator

Wednesday, May 02, 2007

Need Help in Preparing for Study of Python by Forrester Research

Forrester Research is doing a study on dynamic languages and has asked that Python be represented. As advocacy coordinator I've volunteered to drive this, collecting answers from the community and locating representatives to participate in interviews.

The goal of the study is to:
  • identify the criteria to use for evaluating such languages
  • identify the relevant choices of dynamic languages
  • identify how the different dynamic languages stack up
  • examine where dynamic languages work best
Initially, they'd like feedback (not yet the answers themselves) from us regarding their proposed evaluation criteria - questions to add or that give no value, rewording to make them more clear. I've posted their draft criteria, which came as a spreadsheet at:

http://dfwpython.org/uploads/Forrester/DynamicLanguagesCriteria--Draft.xls

Later, between May 8 and 25, the researchers will need to interview via 1-hour telephone calls, several developers with experience using Python. And they want to also interview one person with an executive viewpoint, able to describe relevant background, positioning, value proposition, customer base, and strategic vision.

And later they would also like snippets of Python code that illustrate the power of Python, and I hope to call upon community members to help in producing that. The snippets do not have to be originally written and can be pulled from existing projects.

But those steps come later. For now let's focus on analysis of the evaluation criteria at the above URL. Time is short as they'd like that feedback by May 3, so please get any responses to me as soon as possible. And be thinking who would best represent the executive view of Python in an interview.

Thanks for your help,

Jeff Rush
Advocacy Coordinator

Friday, March 09, 2007

A Pythonic Way to Measure and Improve Your Programming Skills?

Those who know me know I am no fan of the programmer certification industry and I agree that your typical certificate arrangement, e.g. to show HR to get that box checked in your candidate file, so a company can skip responsibility in vetting a candidate, is un-Pythonic. However, I do think we need a good answer to the engineering manager or team leader who asks, "how do I know this person knows Python?", and to the candidate who thinks, "I believe I'm good at Python but am I as good as I think?".

The first case primarily cares about the reputation of the testing facility within the industry, so that if they choose wrong, they are absolved of blame. The latter two are often honestly looking for some guidance on bringing good people in-house or to step-up their programming skills.

As Python use spreads, it becomes more important for the community to provide benchmarks for measuring skill levels, to avoid Python being relegated to the, respectfully, lightweight programmer category e.g. PHP or perhaps Ruby on Rails (not Ruby itself).

Prior to PyCon I'd been thinking about some kind of campaign, service or documents, that I call "So you think you know Python...". My initial idea was for use by Python programmers, who are honest with themselves, to have a way to measure their knowledge. We all run into or are programmers who think they are hot-stuff, especially those of us who work solo as many in our community do, but when put side-by-side against others, fall a bit short. PyCon can have that effect, with so many smart people in a small area. ;-) But the objective isn't to denegrate these programmers but to provide a measuring stick, along with an educational roadmap, so they can make wise choices.

The rapid growth in use of Python is going to lead to a shortage in Python programmers, unless we manage the supply side as well. The manager wanting to find and hire good Python programmers is not an adversary seeking to use certificates to commoditize our community, but an ally in helping us get industry respect and career opportunities using our favorite language. We need to behind what he asks for to see what he needs.

I've been carefully watching Crunchy, about which a talk was given at PyCon, for writing tutorials that, with its "doctests" feature, could be used to propose tests that pass and require a candidate to write an acceptable program. This week I was prototyping a "rst2crunchy" tool, that let's you write Crunchy scripts in reStructured Text, rather than HTML. Crunchy needs more features, such as a user login facility and measurement facilities to store test submissions for review by experienced Python programmers after they pass. From what I hear on the edu-sig list, André Roberge and Johannes Woolard are tackling these but could use more help. Johannes in particular was a student for Google's Summer of Code 2006 and I believe is looking for sponsorship for 2007.

But perhaps Crunchy is not the ready answer in this case, so I'm looking for suggestions.

With regard to how a manager can know a person is good at Python, besides looking at their portfolio of work, we could stake out conceptual areas of the language or libraries about which a programmer should be conversant. This might be a document, with example questions but carefully focused on what lies behind those questions, so an interviewer can come up with his own questions and avoid rote memorization. This conceptual map could also eventually form the basis of advanced-placement in schools that goes beyond those terrible Visual BASIC test questions. And for the Python programmer who wonders if his knowledge is broad enough and wants to improve him or herself, the conceptual map could have links/recommendations to training materials on specific topics.

Join me on the advocacy list and let's discuss this further.

Jeff Rush
Python Advocacy Coordinator

Tuesday, January 09, 2007

Personal Schedule Application for PyCon 2007 Now Available

Doug Napoleone's really cool Personal Schedule Application is now up and running on the PyCon site.

Features include:
  • displays a color-coded, up-to-date schedule
  • displays pop-ups with descriptive information about each event
  • allows selecting events to create your own personal schedule
  • supports iCalendar output of both conference and personal schedules
If you have a PyCon login account, the application also:
  • stores your schedule on the server instead of in a cookie.
  • highlights talks that you're presenting or sessions you're chairing.
If you store your schedule on the server, your selections are included and summarized in a report for the PyCon organizers. We can therefore see which talks are the most popular, and this will help us schedule them in rooms with enough capacity.

A print-specific stylesheet is in development.

We think the schedule application is very neat, and hope it's useful in planning your PyCon attendance.

To easily create your own PyCon login account, visit the Site Signup Form, which is independent of your conference registration.

And speaking of your conference registration, if you haven't yet registered, the deadline for early bird registration is approaching fast - January 15th. We have some really great tutorials with limited seating so sign up for your favorites today or you might miss out.

Thursday, December 07, 2006

A Call to Arms for Python Advocacy

As the Python Advocacy Coordinator, I've put up some wiki pages on the Python website for which I'm soliciting ideas, writing and graphics. Some of the material exists scattered about and just needs locating and organizing.

http://wiki.python.org/moin/Advocacy

First there is a need for whitepapers and flyers - I've put up a list of suggested topics w/notes at:

http://wiki.python.org/moin/AdvocacyWritingTasks

And there are fields for signing up for specific documents. We also have a page of possible magazine articles if that's more your style:

http://wiki.python.org/moin/ArticleIdeas.

These works are to be formed into advocacy kits for various audiences. So far we have the following ideas for kits:
  • College Student's Python Advocacy Kit
  • IT Department Python Advocacy Kit
  • University Educator's Python Advocacy Kit
  • K-12 Educator's Python Advocacy Kit
  • Research Lab Python Advocacy Kit
The table of contents for the various kits can be found at:

http://wiki.python.org/moin/Advocacy#AdvocacyKits

Did we miss your kit? And what would you include in any of these?

Next, we are seeking reusable/retargetable teaching materials, such as those under a Creative Commons license. We need slide presentations and class handouts. Now I know there are a great many slide presentations on the web about Python. I can google them all but we're not looking for just any presentation, we're looking for the best of field. You can find the collection point at:

http://wiki.python.org/moin/Advocacy#TeachingMaterials

Last, perhaps you can dash off an idea or two for promotional merchandise. This could be the usuals like shirts but also posters, bumper stickers and buttons. What would you like to have? And with what graphics or slogans? We can reuse some of the slogans from the PyCon Slogan Contest, but are there others?

Our collection point for promo item ideas is at:

http://wiki.python.org/moin/Advocacy/WearablesGadgets

All materials will be credited to the authors to the extent possible by the delivery media. Make your mark.

Jeff Rush
Python Advocacy Coordinator

Monday, November 13, 2006

Get Involved in Python Advocacy

I'd like to extend an invitation to those who would like to get involved in advocating the use of Python. In August, the PSF hired me, for a 6-mo contract, to coordinate the Python advocacy effort. Since then I've been working to make the next PyCon one of the best conferences yet, and putting in place the infrastructure of a newcomer portal focused on drawing in those people who don't know much about Python but have developed an interest for various reasons. The portal also has an entry point to organize the materials and activies of those already in the Python community who want to get involved. I've also established a new mailing list on which to discuss advocacy, replacing the marketing@wingide.com list, and a blog for keeping the Python community up-to-date about advocacy goings on. The blog is aggregated into the official Planet Python but I've been unable to reach the organizer for the unofficial Planet Python.
A bit about the newcomer portal to place it in context; the portal is designed to help someone who has just become aware of Python decide if the language is right for them. It seeks to quickly direct visitors to the information they want, and bring to their attention how diverse and vibrant the support for Python is. The audience is not only programmers but also journalists, project managers, scientists/engineers, recruiters and educators. Different audiences come at Python with different needs and often need different explanations. And some are indeed programmers, but using other languages, who wonder how Python compares to what they are using now.

For the portal we have a need for content writers to focus on specific problem domains, for the various subcommunities to provide technology roadmaps and representative samples of source code that would entice someone to check them out. As one example, the SciPy/NumPy group could write about what makes their software attractive to the scientific community and provide one-page sources that illustrates certain common operations, to show off the clarify and expressiveness of Python. I've found plenty of material on the SciPy website that I'm weaving into the newcomer portal.

The portal is not designed to replace what we have at www.python.org but to complement it, and to serve as an organizing point for the extensive content already on www.python.org and elsewhere. The portal also specifically supports dynamic content, relational database storage of information and easy plug-in of new components to add new features. Such features will eventually include, among other things, a searchable roster of user groups, a registry of speakers and trainers and a catalog of books about Python, each with RSS feeds where appropriate.

And for the curious, the portal is written using the Zope 3 component system, building on the underlying Twisted subsystem for internal background scheduling and hooked to a PostgreSQL database. The site makes use of Zope 3 viewlets to provide pluggable display elements, reStructured text documents for a clean separation between content and infrastructure, and Nabu for synchronization of document collections into the indexing engine and persisting of the reST DOMs to enable content manipulation at presentation
time according to what is to be viewed (biblio data, abstracts, content). The portal is located on the python.org servers and all software and content are checked into svn.python.org.

In closing, I am greatly honored by the trust of the foundation in me and hope to serve the community well. As coordinator, I invite others to get involved and will strive to provide an assistive environment within which everyone can be productive. The primary discussion area is the new mailing list which can be joined at:

http://mail.python.org/mailman/listinfo/advocacy

and a list of what is needed is at:

http://advocacy.python.org/getinvolved

I am also maintaining a list of accomplishments and near-term To-Do's for myself at:

http://wiki.python.org/moin/PythonAdvocacyCoordinator

Jeff Rush
Python Advocacy Coordinator

Monday, November 06, 2006

O'Reilly Seeking Ideas on Partnering with the Community

The PSF (Python Software Foundation) was contacted by Shane at O'Reilly some ten-days ago, to open a dialog on how the Python community and O'Reilly could work together. As Python Advocacy Coordinator, this was given to me as a possible opportunity. I managed to sit down and chat with Shane this past Tuesday.

O'Reilly is trying to connect with the various open-source communities, such as the Python and Perl language groups, but also groups like the BSD Foundation. The criteria for whom to contact was partially based on those groups having some form of formal organization, similar to the Apache Foundation.

O'Reilly is in the very early stages of trying to discover how the groups can work together, with no actual kick-off until January 2007. The phone call was primarily to solicit ideas than to propose specific actions.

A Common Documentation Workflow

Shane said that O'Reilly was hearing a lot about how one problem that open-source communities face is poor documentation and that there is a strong need for documents being available in multiple languages. Teachers in certain countries are saying, for example, they could not use the BSD Book because their students lacked sufficient english to follow it.

So one goal might be for O'Reilly to provide translation coordination, and perhaps push for a single common documentation format, along with some workflow coordination of the global documentation scene, to try to raise the quality of documentation. Details are vague and certainly getting the entire open-source community to agree on one format would be a herculean challenge. Still, O'Reilly said they have a history of embracing challenges.

Part of the idea is to try to involve documentation contributors beyond the original developers, by adopting a format/mechanism that is friendly to technical writers, educators and college professors. I suggested something like reStructured text, which Shane was already familiar with. After researching the One Laptop Per Child project, I might now propose the derivative, Crossmark text, which supports multi-page documents.

It came up that people will often choose a programming language by whether there is documentation in their native language rather than purely on the merits of the programming language itself. This led to ideas of other ways to advocate the use of a programming language.

A Problem-Centered Tool Selector

One idea I proposed was a web portal of programming language concepts, with very good explanations and links to source code examples in a variety of programming languages. Shane mentioned the scriptome, a cookbook of of Perl one-liners for bioinformatics data processing tasks.

My work in advocacy has brought to my attention the need to focus on the domain or problem first, and then show how a technology can meet those needs. So I proposed a portal with some kind of sophisticated lookup/navigation engine, where someone with a problem could identify those programming languages with strengths in their area, perform comparisons among languages/frameworks and eventually decide on the toolset to use. I've already done a bit of work along these lines.

Shane thought this might have some possibilities, that we could identify a handful of problem areas and, working with a few members from each open-source community, come up with a handful of recipes to present. Then if it really is a good idea, encourage it to take off from there, else let it fade away.

It also occurred to me that such an arrangement might encourage the improvement of languages, by shining a light on select areas. A bit of friendly rivalry where upon discovering a gap in the solution space of language A but not in language B, that the community for language A might then work to fill that gap.

Registry of Speakers

Continuing our brainstorming on ways for O'Reilly and the open-source community to work together, I brought up the recurring problem that user groups often have of finding speakers. And while some speakers/topics are language-specific there are also those that cross language boundaries. So how about putting together some form of speaker registry, keyed both my open-source project and geographical area. This way user group organizers can search for someone to visit their group. And since there are also traveling speakers looking for engagements, such a solution should allow a speaker to visit the portal and indicate the areas in which he can speak and the dates when he will be in certain cities, to locate an audience. This way he can optimize his time, find receptive audiences of which he was unaware, and perhaps expense his trip on his taxes.

Targeted Book Release Notices Filtered by Community

Another idea is for the publishing industry to improve the way in which it communicates with its readers. It was unclear to Shane if O'Reilly already had such a system in place, or if so, whether it had all the functionality I'm about to describe.

The idea is for publishers to provide RSS feeds of current and future releases, appropriate tagged with publication date, programming language and so forth. Then the various Python, Perl and other websites could subscribe to the feeds and stay current on releases. At the moment many rely upon volunteer labor to manually post book information on their sites. Such a feed system should also provide for book reviews, and the ability of a person to subscribe to a feed by a particular author. Basically something a bit like a distributed form of the review system on Amazon.com's website.

This is nothing new and we're sure bits and pieces of this exist to some degree. It just needs to be standardized and mainstreamed. The approach helps publishers spread the word about their product by leveraging the open-source portals which have their own, focused traffic. And the portals benefit because their visitors want to know what new releases are coming in the specific area of interest.

Certainly publishers, including O'Reilly publish newsletters, including a mailing list of releases, but that material often mixes it all together, sending Java book notices to Python programmers and vice versa. It also usually is complete PR spin and lacks reviews by the community.

Alternative Ways of Publishing

We also discussed O'Reilly's move toward print-on-demand, and how it will increase the diversity in printed reading material, providing an outlet for subcommunities too small for a traditional book run. One trick will be to find ways to market those creations, since your normal publicity effort would be too costly. It will be important for O'Reilly to cheaply spread the word to the specific audience for a topic, and being able to RSS-stream release, review and author information to specific open-source portals would be a step in this direction.

And I brought up the challange of open-source projects like Zope 3, where the underlying software changes faster than a printed book can track. A solution is 'iterative editing', where a publisher keeps a book hot and streamlines the publication of future editions every 3-6 mos. However it also requires the open-source community to feed updates to the author/publisher on a near continual basis so the frequent editions are current.

Expanding the Pool of 'Non-Programming' Programmers

We continued on talking about how to achieve "programming for non-programmers", to draw in those who are not (and do not want to be) professional programmers, such as scientists and teachers. I don't have any specific project suggestions in my notes, other than my own strong desire to reach out to non-programmers, the establish basic software literacy. Shane mentioned that O'Reilly believes there is an incredible audience of open-source that is being ignored by traditional IT marketing.

In Closing - A Few Guiding Principles
  • focus PR campaigns on those who are ignored, such as non-programmers
  • the community will never agree on one format, so adopt several good ones and support mechanical conversion.
  • to enable iterative editing/release, try to avoid the use of one-way conversion tools re print layout
O'Reilly will digest these ideas, test their endorseability with the other open-source communities and we'll see where it all leads. I'd also like to solicit additional ideas from the Python community. Please join the Advocacy mailing list and let's talk about it.