Showing posts with label training. Show all posts
Showing posts with label training. Show all posts

Tuesday, September 13, 2011

Quick conferences report: Presentations

My lovely Fiancée, Audrey Roy, was invited to be the opening keynote speaker at both PyCon Australia on Diversity in Python (video) and PyCon New Zealand on Python on the Web.

As for me, I managed to get talks into both of those conferences AND DjangoCon US. I co-presented on three of them, and I share all credit for success with my cohorts. The talks I gave at the conferences were (I'll post videos when they get up):

Confessions of Joe Developer (PyCon Australia, DjangoCon US)
The genesis of this talk was as a lightning talk at I gave at the Hollywood Hackathon. It is a talk about admitting that us mere mortals need to ask questions, take notes, and follow good practices in general. I gave it again at LA Django this summer, extending it to a full length talk complete with lots of technical content. At PyCon Australia I toned down the technical content because I was nervous, and while the response was positive, it  could have been much better. So for DjangoCon I ramped up the tech-talk and it worked much better. I've now given the talk 4 times, and I'm leaning towards retiring it.
 

Python Worst Practices (PyCon New Zealand)
This talk grew out of a SoCal Piggies lightning talk which I gave for the purpose of humor. Often we as Python developers are smug in the clarity of the language that we don't realize just how easily we can obfuscate code. In fact, I contend that Python is fully capable of a code obfuscation contest. This talk rejects a lot of crazy practices I've either done myself or had to debug from other people's work. For New Zealand I added a ton of content and tested things pretty diligently. The variable naming pages stumped some people I really respect and I was quite happy with that result.
 

Django Packages Thunderdome (co-presented with Audrey Roy, DjangoCon US)
Audrey did most of the work for this presentation. In this talk I helped review a horde of Django Packages across 7 different categories. It was nerve wracking because every part of our talk would get judged - but Audrey kept things really positive and made it clear we were providing constructive criticism. I think she got her message across to most people, and more importantly, it got a lot of people thinking about what ought to be normal community standards. I'll probably blog on those community thoughts and statements later, but I think Audrey (with help from me) accomplished what she aimed to do.

View more presentations from Audrey Roy

Advanced Django Form Usage (co-presented with Miguel Araujo)
Some time ago Miguel befriended me and helped resurrect the django-uni-form project. He graciously agreed to help me present on Django Forms and we decided to make the talk as sophisticated as possible. Previous Django form talks have been good, but focused on the fundamentals and we wanted to do something really different. This talk was hard because Miguel and I were on opposite sides of the planet, so we did a lot of github pull/pushes. In both doing research and presenting Miguel did an unbelievably good job and I hope he does more of this in the future. The response was extremely positive and I'm certain that our plan of getting our notes/work/transcript into Django core is well on it's way.
 

Ultimate Django Tutorial Workshop (DjangoCon US)
I got about 10 professional Django experts in a room, including Django core developers, and had them help me coach nearly 20 people through a modified version of the Django tutorial. Students seemed to learn tons, lots of socializing happened thanks to some happy accidents, and the experts got a chance to really see where the Django tutorial needs work. PyLadies organizer Esther Nam spent her sprint days working on something that ties the slides into the Django Tutorial - and for now I'm holding off on sharing my work until she says her work is done.

Summary
These were amazing opportunities to speak and will hopefully make a difference. I wouldn't have traded all of this for the world. It was a lot of work, and I doubt I'll ever go quite at this pace again. My plan is to do fewer talks and make them much better.

Tuesday, August 23, 2011

Github is my resume

I remember the first time I heard that statement - a couple years back Eric Florenzano said it to me on Twitter when I posted my resume publicly and asked for opinions. At the time I laughed at his statement, because it felt like naive arrogance to ditch the idea of a resume and 'traditional' social networking like Facebook and LinkedIn. How wrong I was...

Before I go any further, this isn't to say that education, job history, and references aren't important in getting jobs that utilize a lot of Python. They are important, but I think they go more towards shaping you as a person than getting a job. So if you want access to Python jobs (and possibly other open source languages), you need to be able to show working code. Why is this the case? I can thing of several reasons:
  1. It is much harder to forge your style of code, comments, tests, and docs in a repo than it is to make false claims on a resume.
  2. Development team managers don't take LinkedIn references seriously because how often we see them gamed.
  3. Code gives us a body of work employers (including me) can use in order to help evaluate your skill and ability levels.
Let's summarize that into a bold statement:

Python employers want to review your code in a public repo.

That puts the pressure on you doesn't it? Now you've got to show working code. One extremely unethical way to do that is to copy/paste other people's code into your own repo and claim it as your own. The problem with that is real reviewers know good code doesn't just magically appear in gigantic chunks. Which I'll sum up with another statement:

Python employers are smart enough to read your commit log.

So as a beginner, what can you do? A lot of shops will want to see your code but if you put up your early code, doesn't that mean they'll see your ugly, mistake-ridden work? Yes they will - but if you keep at it with tutorial examples you are working, whatever pet project you cook up, or even submitting patches to various existing projects, they'll see how your code improves. I am much more inclined to hire a person able/willing to learn than a jaded expert who doesn't want to grow - which is why I always try to think like an eternal beginner. Which brings me to my third statement:

Python employers are willing to hire bright, hungry developers willing to learn.

Getting away from employment, let's talk a little about the Python development community. This community is a meritocracy with amazing foresight. Passion for code and/or natural talent is often recognized before skill is achieved - but only if you show the community you are learning. Get your code onto Github, or BitBucket, or SourceForge so it is seen, and keep at it! Try to commit every day and if that isn't possible, then once a week!

Because if you write code every day or every week, over time your code will get better, you'll also be able to demonstrate a consistent body of work, and your passion for software development will be obvious. Also, try to comment your code as much as possible.

One good trick is to put your ongoing notes in a repo. I do it myself at https://github.com/pydanny/pydanny-event-notes. My early notes are very, very different from my later notes. Often embarrassingly so, but to a Python employer I'm pretty certain they are a useful reference into just how I think.

Github, not LinkedIn

LinkedIn (and Facebook, Google Plus, et al) are a place to define your profile and nothing more. That profile should include a link to your code. Python employers will be looking your for links to your code, not for any sort of networking you do on those sites. Employers get annoyed by 'developers' who excessively network but have no links to code samples on Github or other similar sites. If you have no code to find then it means we can't see your work, your thought processes, or your passion.

One common technique you see by a lot of Python developers is posting quick links to their projects and efforts on Github using various social networks. You can and should do the same.

You make connections by showing you want to learn

Sunday, July 31, 2011

The Ultimate Django Tutorial Workshop

That is a big statement to make as a title of a class/workshop blog post. However, in this case I believe I'm fully justified because this is going to be awesome. Here's why:

1. The teachers are beyond incredible

In the course description it says I'm the teacher and I have lab assistants. In retrospect, what I should have said is, "Daniel Greenfeld is organizing a workshop taught by the people he respects and admires".

Think I'm kidding? Look at just some of the names of people I've got lined up to participate:
Follow those links to their bios or talks and you'll see that they are the people speaking at DjangoCon.  The general idea is to get the people already speaking at DjangoCon or those who are extremely experienced in it to teach the class.

2. The teacher to student ratio is going to be really small

This is not going to be a room with a few instructors and umpteen students in it. If the class size gets big, I'm going to bring in more teachers. I'll cajole, plead, and do whatever I must to get them in the room. I don't want anyone left behind!

I want a ratio of 5 students to each teacher.

3. Class implemented with a lot of lessons learned

I've taught a bunch. So have a number of the instructors I've lined up. We know which parts of the tutorial are important to focus on, and which parts should be visited by students later on their own. This means you learn the critically important parts that get you kick-started as a Django developer.

One thing we'll try to squeeze in is deployment to one of the new Django hosts such as Djangozoom.com, Gondor.io, and ep.io. In fact, Shimon Rura, one of the co-founders of Djangozoom, participating as an instructor.

4. We're all volunteers

All the proceeds earned by the instructors for this course will be going to the Pyladies Sponsorship program. That is important for two reasons:
  1. Your attendance will help Pyladies sponsor more women to learn Python in the future.
  2. The teachers are doing this because they want to do it. They want you to learn Django.
5. It won't end at 12:30 PM

Officially the tutorial ends at 12:30PM and we should be done. Sometimes though we stumble on things  and we don't finish with the rest of the class (like me in my last C programming class). But after a lunch break I'm planning on grabbing some space and working through the rest of the tutorial with anyone who didn't complete the class.

6. The tutorial opens DjangoCon

The tutorial starts on Monday, September 5, 2011 at 9:30 AM at the Hilton Portland and Executive Tower at 921 SW Sixth Avenue in Portland, Oregon, USA. If you do plan on attending DjangoCon and are new to the framework, what a great way to get started!

7. You don't have to attend DjangoCon itself to take the tutorial

Tickets for the event are being sold separately from the conference. So if you can't take off more than one day of school or work, this is a great way to capitalize on DjangoCon.

Convinced? Here is what you need to know and do to get signed up:
  • Get a laptop running Windows 7, Mac OS X 10.5 or higher, or Ubuntu.
  • If there is no Python installed, install Python 2.7.1. DO NOT INSTALL PYTHON 3!!!
  • Make sure you have a grounding in Python. If you are new to Python you need to have finished at least half the chapters in learnpythonthehardway.org before you attend. If you come to this event with no prior Python experience you will be left behind.
  • Buy a ticket!

Monday, April 25, 2011

We won first place at Startup Camp LA!

On a whim we (me and audreyr) decided to try out Startup Camp LA organized by Semantic Seed. This is one of those Silicon Vally style competitions to launch a minimally viable product along with a business plan and marketing pitch in the course of a weekend. We thought it would be a good excuse to hack on a project we've been cooking up in our heads over a year. So we booked our tickets via meetup.com and showed up at the new Nextspace Los Angeles location.

The organizers did a really good great job providing space, food, and lots of useful advice. I look forward to the next event that they run in the area.

Startup Camp LA Pitches

The first pitch was on Confidox, an exclusive recruiting site for lawyers with a focus on clean design, security, and good use of email/sms. The presenter, a professional attorney with great oratory skills, had mockups and a business plan ready to go.

Audrey gave our pitch, which is a site for recruiting developers that is created and maintained by developers. Developers are treated with dignity and respect, and not as replaceable components. We've talked to people on-and-off about this for over a year, and thought this would be a good opportunity to get things moving.

After Confidox and our proposal came a lot of other dreamers.

Then began the bargaining and voting for team placements. Voting was done with paper money. We received the second-highest amount of paper money and Confidox got third place.

Switching projects

As said, our recruiting idea got second place in votes. We got assigned two other people, one of them being the Confidox guy. This meant we got the most paper money total!

Rather than work on our project and have to educate the new guys on the developer ecosystem, we decided to switch to Confidox for the weekend. The scope was reasonable, the plan sound, and the mockups meant we had a specification to code against.

Development

"Ideas are cheap, implementation is hard."

From the start Audrey and I decided to not allow any scope creep. No social media widgets, banner advertisements, forums, branding, coupons, or anything that distracted from the business model. That would allow for a clean design and elegant implementation. We went to work, taking breaks to help hammer out the marketing pitch and socialize with the other teams. Our goal was a stable, functional prototype - something we achieved thanks to our mostly open source technology stack.

Technology Stack

Unless specified otherwise, everything is open source:
The Final Pitches

The Confidox pitch:
  • Our group presented as a team. Marketing talked marketing, techs talked tech.
  • A live prototype site with fully functioning authentication, registration, profiles, listings, search, and email/SMS notifications. 
The other teams presented well, but I was shocked by a few things:
  • Most pitches lacked even a buggy prototype.
  • Presenting teams bickering during their presentations.
  • Unbelievably, one slide presentation had music that the presenter had to shout over.
Why Confidox won Startup Camp LA

Audrey took charge of the group and kept us focused on the elegant, straightforward idea. She didn't just code, she also treated the business side as being equally important as the technical delivery (giving them constant feedback and coaching). Which meant we could both roll out a working prototype and nail the marketing pitch.

When it came down to it, we were a team. Everyone had purpose and everyone contributed. We communicated our idea and demonstrated that our prototype works.

Going forward

Confidox is not off the ground yet, we'll see where it goes. We certainly have a capable team.

This event was a success for us and our company Cartwheel. Also, with ancillary projects with large contributor basis such as Django PackagesPackaginator, and Django Uni-Form, me and Audrey have proven ourselves capable of just launching dynamic projects quickly that work and are used by real people for real work. We'll see what we can do with that proof.

Finally, if you want to learn our techniques for constructing Confidox and other efforts, come to our Los Angeles area classes.

Friday, April 22, 2011

I teach Python and Django

This is one of those blog posts where a developer announces that he/she is teaching for a whole week. The difference is that in this post I'm going to explain why I want to teach and why you should take my classes or send your staff.

I'm an experienced instructor.
I've taught a variety of things for over 20 years, including in alphabetical order: Best practices, Django, English, JQuery, martial arts, Pinax, Python, Selenium, soccer, and unit testing. I speak clearly, get across technical points well, and love the material. I also know how to provide an early foundation of knowledge and then expand upon it for maximum benefit.

I don't just dump knowledge into the heads of my students; I take the time to teach them common standards and best practices, so their code is extendable and maintainable.

I'm not alone. 
Audrey Roy, co-founder of Cartwheel, leader of PyLadies and Django Packages, who has tutored and lab assisted at MIT will be teaching with me, meaning the teacher-to-student ratio is kept at 5:1 for our first offering. 

I want you to surpass me.
After teaching various things for many years I've found it a point of honor and immense pride when a student shines better than myself. I'm not one of those teachers who holds something back so I can always have the edge. In fact, my ultimate goal is to make you better than me.

I rest on the shoulders of giants.
I'm sure the people I'm mentioning in this section are going to roll their eyes, but lets face it - they rock!

In any case, I've had the fortune of helping Steve Holden write Python 3 classes for the O'Reilly School of Technology. I've been exposed to the Django code bases of NASARevSys and Eldarion. While I can't share that work directly, I can take the abstract of their methods and turn it into lessons.

For the employers: Classes are a good way to find resources
Having trouble finding staff? Imagine instead you hire a talented developer from another language and send them to my classes. In a week's time for a fraction of the price they'll have been kickstarted into not just knowing how to do their job, but how to expand their knowledge so if they don't know something, they know who to ask.

Refresher courses are free for six months
Space-permitting, you can retake a class at no charge.

The course schedule
Our first classes are scheduled for May 16th to May 20th. We are offering:
One more thing, if you take both classes we'll give you a 10% discount after registration.