24 Hours in NYC
Last week I had the opportunity to travel to New York City and attend the January Django-NYC meetup as well as attend a Django course led by Jacob. After chatting with and learning from some great people, I thought I would share what I took away from the trip.
Django-NYC
The HUGE environment
First of all, holy shit. Second of all, holy shit. Django-NYC takes place at the New York office of HUGE, an interactive agency. The HUGE office is a spectacular meeting space with a ton of white paint, a shaggy carpet and big, comfy couches. The place oozes creativity.
Django 1.2
Jacob was on-hand to discuss some of the upcoming features in the next release of Django, version 1.2. The Django team has managed to get a ton of great new features into 1.2 like multi-database support, e-mail backends, and model validation, to name a few. The release is tentatively scheduled for a release in early March. For more info on what's coming, read the release notes.
BDFL Q&A;
Django-NYC closed out with a Q&A; session with Jacob. Some questions posted on Google Moderator were answered. To summarize what I took away from some of the answers:
- If you haven't already, take a look at haystack, piston, and south (we use all of them at Discovery)
- Python's standard library gives us all an opportunity to learn something new every day
- Pluggable apps will continue to be a huge part of what makes Django and its community so great
- Look for hooks to be added to Django in the future for highly requested features, like the per-row auth hooks being introduced in Django 1.2
- When asked what he would like to see the community doing more of, Jacob answered quickly with one word—docs
Rebar
After the meetup we headed to Rebar NYC for some excellent chats with members of the community over some tasty scotch and microbrews. In typical post-meetup fashion I learned quite a bit and met some great new developers. It was a great way to cap off the night and get set for a what was sure to be a great training session the next day.
Practical Django Skills
Refreshing format
Hosted by Holdenweb and led by Jacob, this day-long course was a refreshing departure from the typical "shut up and code" course. It was an informal, lessons learned, lecture-style class that provided insight into several key topics that would benefit Django developers at varying experience levels.
Topics covered
Although the course is geared towards Django developers, it did a great job of hitting on high-level topics that every developer should know and tools available for use. Concepts and tools included: a great primer on REST and piston; a walkthrough of schema migration and south; deployment and virtualenv, buildout, fabric; caching and varnish; various testing methodologies; and application architecture.
We're doin' it right
There's a great feeling associated with attending a course led by a well-respected developer and walking away saying "we're on the right path." That's exactly how I felt that night on the train ride home to DC. I felt confident walking away knowing that we're using solid tools and implementing solid practices on a daily basis.
With that said, I wouldn't have considered the trip successful unless I walked away with processes to improve and tools to investigate.
Things to look into
While we currently use quite a few processes and tools discussed during the course at Discovery, the following were some obvious items that we'll be examining moving forward:
- Browser-based testing using Windmill, Selenium
- Load testing using Seige
- Measuring test coverage
- Enacting a schema migration policy
- Alternative deployment tools like zc.buildout (although I do love me some virtualenv/pip/Fabric)
- Continuous integration with Hudson
- Developing caching strategies
A day of Django, a wealth of knowledge
Between the Django-NYC meetup, bar discussions and Jacob's course, I left New York with a brain crammed full of new information and much to look forward to learning. Beyond that, I left with a renewed admiration for the community I am so fortunate to be a part of. I am consistently encouraged by the passion, dedication, and willingness to share of the Python community, and this trip was no exception.
The ambiguity of “web developer”
There are few job titles that are as vague, yet ubiquitous, as web developer. How the role is interpreted seems to vary from company to company and person to person. Where does the lack of clarity come from and what can we do about it as a community?
Sources of confusion
Definition of Web Developer
Definitions found online can be a huge source of confusion. A quick search on Wikipedia provides us with the following:
A web developer is a software developer or software engineer who is specifically engaged in the development of World Wide Web applications, or distributed network applications that are run over the HTTP from a web server to a web browser.
In case you didn't catch that, a web developer is a software developer. Or a software engineer. It's one site and a very basic example, but with everyone from news organizations to students to public speakers citing Wikipedia in their articles, research papers and lectures, you can see how quickly poorly defined terms can propagate throughout society.
Two words, many meanings
What if we break down the title itself?
Most people have a general understanding of what the Web is. When Web is used in the title it becomes more unclear. Does Web mean Web sites? Mobile Web? Online stock trading software?
Developer is equally vague. Does this mean one writes HTML? Python? SQL? None of the above? All of the above? Does a developer actually write anything? Or does a developer plan and manage? What is the job description for web developer?
Job boards
Let's look at what employers are looking for—what they describe as a web developer. A quick search of some random job boards yielded the following sample openings:
-
Freelance Web Developer
Linux/Apache/MySQL/PHP5/jQuery/AJAX/HTML/CSS -
Junior Web Developer
HTML/CSS/ASP/VB/Flash -
Web Developer
HTML, Javascript, AJAX, CSS, J2EE, Unix, Spring, Hibernate, MySQL -
Web Developer
OOP, XHTML, CSS, AJAX, PHP, SQL, Photoshop, Java/J2EE, ORM, Spring, Cake, RoR, Eclipse IDE, Subversion, Linux -
Web Developer
HTML, CSS, JavaScript, DOM, CMS systems, SEO
In other words if you would like to be considered for a job as a web developer, you'll need to know how to administer a server, write semantic front-end code, write SQL, understand core programming concepts, make fancy things happen with JavaScript, understand a web framework, and manage a slew of database management systems.
It seems then, that there is a problem with the perception of what the day-to-day taks of web developer are.
Differing viewpoints
To complicate things, within our community there seems to be no consensus among how the position of web developer is interpreted.
Back-end developers: some interpret the role as one that relates to front-end markup and behavior only. Some expect a web developer to have design skills. Others may even refer to themselves as web developers.
Front-end developers: I would venture to say most front-end developers view themselves as web developers. I've seen individuals with only HTML/CSS skills refer to themselves as programmers too.
Designers: depending on what type of designer you are, there are two viewpoints I've seen in my experience here. A: I'm going to design something and then give it to the web developer to make it happen. B: The only way for me to be a good web designer is to get my hands dirty and become a hybrid.
Executives: depending on the size of the organization, the higher you go up the management chain the less is understood about what exactly web developer means. At the end of the day they may not necessarily be the hiring manager anyway and what is important is that the job gets done regardless of titles.
Clients: like almost everything else we do as web professionals, the end result is what matters, not a job title. Nonetheless, clients seem to be missing a clear understanding of the daily tasks of a web developer.
Generalization vs. specialization
In a conversation I had with Greg Newman regarding the issue of ambiguity of web developer, he brought up a good point. Greg and I both come from a design background and still maintain skills in design, front-end development, and back-end development. Sometimes job titles are made purposefully vague so they can cover a broad range of skills.
The way I see it, there are two types of people:
Generalists: have a range of knowledge spanning multiple topics across several disciplines. An example here could be someone who designs, writes front-end code, and writes back-end logic.
Specialists: have an intense passion for a very specific discipline and do whatever they can to delve deeply into any sub-topic within that discipline. An example here could be someone who focuses on planning and writing complex back-end logic.
In the generalist's case, the title of web developer might be a good match because the variety of work lends itself to an open-ended title. In the specialist's case, web developer really wouldn't provide an accurate description of the work they perform.
Which brings up an excellent question…
Is it even an issue that the job title web developer is vague?
Although you could easily write this off as a non-issue, there are some things to consider.
The impact on individuals in our field:
- How do you accurately compare your income and career progress with peers?
- If you are looking for a job, how can you be sure your skills are up to par?
- How do you clearly explain to colleagues, friends, and family members what you do?
- How does the variance of job requirements affect your personal career goals?
The impact on our community:
- How do we refer to one another professionally without causing confusion?
- Does lack of clear role definition lead to lack of respect?
- How does the vagueness affect perception outside the community?
Possible solution(s)
Create clear titles for all the sub-types of web developers
Think about the following job titles:
- Accountant
- Astronaut
- Landscape Architect
- Flight Attendant
I'm by no means involved in the field of architecture, but landscape architect is very straight-forward and clearly defined outside the architecture community. I wouldn't go so far as advocating the removal of web developer from daily use. We do have some clear roles in the field (e.g. Flex/Flash Developer), but there is certainly room for improvement.
Create consensus amongst community
If web developer is going to be used as a title within the community, is there some way to clearly define the expectations of such individuals? Or should we as a community define the role as a generalization with more clearly defined sub-roles?
Refine occurrences of definition online
Sites such as Wikipedia act as a reference for people of all ages and skill levels. As a high school graduate what would you take away from the myriad definitions found online? We should take initiative to point out and clean up unclear occurrences of the definition we run into.
Inform societal influencers
Educators, recruiters, employers, et. al. have a direct impact on how the role is portrayed within society. The community should be informing and communicating with these influencers, creating a cascading effect.
Take the survey
If you have a minute to spare, take the short survey I've set up. I'm going to leave the survey up for 30 days, collect as much information as possible, and publish the results in an easy-to-digest format.
In one year I'll re-open the survey and collect new data for 2011 to see if any consensus has begun to form within the community.
Thoughts?
The main takeaway here is that web developer is a vague, broad reaching job title worthy of some discussion. The lack of clarity has an effect on our industry and individuals. No one seems to have a clear definition of the role which creates confusion within and outside the community. There are some obvious things that could be done to eliminate some confusion. The bigger question is should we do something or should we leave the role purposefully vague? I'd love to hear what you think.
Podcasts and reading for the new year
This year I decided to wipe out all of the podcasts in my library and start fresh. I also condensed the amount of blogs that I follow. Below is a list of what I'll be listening to and reading as 2010 starts.
Podcasts
Music
I got some good recommendations via twitter from Paul Irish, who also contributes to the yayQuery podcast I mention below. Somehow I missed the whole Huffduffer boat, so thanks for that Paul!
Programming
Nothing surprising here. Lots of Python/Django stuff. Of note is A Little Bit of Python which stars PSF members Michael Foord, Andrew Kuchling, Steve Holden, Dr. Brett Cannon and Jesse Noller. I also started checking out some JavaScript and general programming/software engineering focused podcasts.
- A Little Bit of Python
- Django Dose
- Django-NYC
- Software Engineering Radio
- Stack Overflow
- This Week in Google
- yayQuery
Miscellaneous
If you're into random things like How Kleptomania Works, check out Stuff You Should Know. It's got a decent collection of useless knowledge. At the suggestion of Sean O'Connor I'm checking out This Week in Startups which looks pretty promising and has some good reviews.
Reading
In 2009 I suffered from a massive amount of unread blog feeds. This year I trimmed the fat and focused on a few that I'll be reading regularly. I also added some promising feeds thanks to recommendations.
- 43 Folders
- Coder Who Says Py
- Coding Horror
- Danny Greenfield
- Django Dose
- Doug Hellmann
- Greg Newman
- Ian Bicking
- James Tauber
- Jannis Leidel
- jQuery Blog
- JSMag Blog
- Michael Foord
- Monty Lounge
- Paul Irish
- Sean O'Connor
- You Look Nice Today
- Zed A. Shaw
Suggestions welcome
I'd love to know what all of you are listening to and reading in the new year. Leave a comment below if you think you've got something that's not on my list and worth checking out.
django-district October Recap
Turnout was great for this month's event and the discussions were even better. Following is a recap of the gathering.
Upcoming Events
- NOVA-Django Lunch (Nov 2, 12pm, RSVP required)
- DC Python Meetup Group (Nov 3, 7pm)
- Barcamp DC (Nov 14, 9:30am – 5:30pm)
Presentation: Pinax
Danny Greenfield from NASA presented an introduction to Pinax in which he provided a guided walkthrough of how to get started with Pinax as well as the core ideas behind Pinax.
Several attendees had used Pinax previously and were eager to share success stories. Most notably the Social Richmond site, which garners 800,000 page views per day.
The need for case studies
A side discussion that took place involved the need for a site that could serve as a showcase for Django sites. There would be a few main differences between this site and say, djangosites.org. The site would:
- Present the work as case studies
- Present Django as a viable business solution
- Detail technologies used, revenue generated, time saved, etc.
- Boast a drastically improved user interface
- Interview the design, development, and architecture teams
Danny Greenfield has also been working on a presentation that provides case studies to business executives and managers called Why Django.
What's next
There won't be a standard django-district meeting in November or December, but we're working on scheduling a day-long sprint on Saturday, November 21. We'll be collecting non-perishable foods and providing a list of open-source projects to work on related to helping those in need (e.g. All for Good). Mark your calendars.
django-district July Recap
Despite the ridiculous humidity and chance of rain, turnout for our July meeting was fantastic. Following is a recap of what was covered.
Upcoming Events
- DC Python Meetup Group (August 4, 7pm)
- GitHub Contest (deadline: August 30, 12pm PST)
- DjangoCon (September 8-12, Portland, OR)
Django/python stuff to check out
Presentation: Django 1.1
James Turk from Sunlight Foundation put together a presentation on Django 1.1 in which he discussed new features, backwards incompatible changes and ORM improvements among other things. James and team also have some great open-source Django apps available at Github.
Presentation: virtualenv and pip
I did a demo on working with virtualenv, virtualenvwrapper and pip. My post covers most of what I went over with screencasts, diagrams and links.
Presentation: Fabric
Corey Oordt from The Washington Times presented Fabric to the group. He walked through key concepts of using Fabric for automation of server tasks and deployment of projects and showed some great sample code.
Mixing it up
We briefly discussed the fact that to-date all of our meetings have been geared towards those with significant experience with Django. I've received several emails from folks who are just starting out with Django and would like to see more topics geared towards newcomers to the framework. I'd like for django-district to become move inclusive in this respect by mixing up the types of talks and level of experience required to be able to follow along.
Some examples of talks that could be helpful in this respect:
- Moving from PHP Framework X to Django
- Django project/application architecture
- Setting up a local Django environment
I'd also like to propose Lightning Walks. These will be five minute walkthroughs of a particular aspect of Django. They could be geared towards any experience level. Examples could include:
- How to use reverse
- Writing a custom Manager
- Writing your own context processors
- How to use the cache framework
- Useful manage.py commands
- How to write admin actions
I'd love to hear everyone's thoughts. If you've got a topic you'd like to present, please send me an email or leave a comment below.
Conclusion
Thanks to our presenters and to everyone that was able to attend. Our next meeting will take place August 27 at 7pm at Discovery (topics TBD). Mark your calendars and RSVP.