The Drupal NYC Camp (pronounced "Nice Camp") took place the weekend of July 12-15th at the NYU Kimmel Center. NYC Camp is a free sprint-centric mini-con focused conference, providing an atmosphere that encourages atendees to contribute to Drupal and the community. The Conference had a different focus for each day. Friday was all about trainings, Saturday was all about sessions, Sunday was all sprints and Monday was summits. After reviewing the list of approved sessions I decided to hop the train from Boston friday night and attend the Saturday sessions. Just like my experiences at D4D and Drupalcon, the sessions and attendees were informative, thought provoking and provided plenty of take aways.

David Diers (@beautyhammer) session on workbench covered a case study on UT Austins Policy Office.  They needed a completly custom publishing workflow and David explained how his team accomplished it.  Using methods such as paperbased prototypes, personification (using Jetson characters to represent user roles), and staying in contant contact with the client the team was able to identify the roles and workflow needed.  Daivid then explained how workbench got them 90% of the way there and what they needed to do to "turn workbench on its side", to produce a highly variable workflow and add additional functionality. One of the cleaver ideas I pulled from this session was how David and his team handled node permissioning for different roles by associating the node to different taxonomies on state changes (Workbench can use taxonomies to handle content access). Davids presentation slides can be viewed here.

Anthony Ferrara (@ircmaxell) presented a session which helped brush up some methods to follow for OOP programming. Anthony explained the issues with programming STUPID (Singletons, Tight couping, Untestable code, Premature optimization, Indescriptive names & Duplication) and the benefits of programiing SOLID (single responsiblity Principle, Open closed principle, Liskov substitution principle, Interface segregation principle & Dependency inversion principle). Principles that work for OOP as well as functional programming.  Since Drupal 8 is adopting symfony as its underling framework these principles will be more and more important for Drupal developer to follow in order to produce good code.  Anthony did offer the caveate however that at the end of the day the writing code that works for the business goals, budget and timeline is ultimetly what matters.

Mohan Sunkara from Azri Solutions presented a session advicating the case for implemening a continuous design &delivery approach.  Mohan stressed that to stay relevant you need to be evolving, which means switching from a waterfall approach (which was adopted from the print world) to an agile approach to projects. Agile and continous integration means that the your experience can drive the project instead of a static design.  Clients can watch as thier product develops, and provides an adaptible enviroment for your designers and developers. Mohan also explained how CI and Agile helps fuel communication in your company and breaks departments out of thier 'silos'. For each release teams go through a cycle where they are activly talking to one another and making small changes. In the last few conferences I have been to, I have been noticing that there is a big push to switch from waterfall to agile, and the benefits of doing so.

Ken Rickard (@agentrickard) gave a session on how to stop worrying and embrace Drupal 8.  Drupal 8 comes with a lot of big changes, but they will prove to be worth it. Ken covered a few different standards Drupal 8 is adopting (from the underlying Symfony 2 framework and PHP standards) such as doctrine, PHPUnit, Composer, Twig and PSR-0. Ken talked about what exisitng problems these standards address, and some of the new functionality they provide. PHPUnit for example is a more widely adopted and robust unit testing framework (Drupal 7 was using simpleTest). PSR-0 is a standard for naming and code strucutre, which will standardize all drupal development and promote understanding and readability.

Sam Richard (@snugug) gave a great talk on Style Prototyping and how is helps NBC Universal manage their brand guidelines across many sites. Sam talked about how photoshop and illistrator are not (web) design tools and how the page metephor is killing web design. This is another topic I have seen come up again and again at other conferences. Sam talked about taking a content up approach to design as opposed to a page down. Users come to sites for their content, so that is what design should be working around, design should not negatively affect the usability and access to content.  To design this way, designers should be using different tools and methods. Style tiles fore example, provide a way to present branding with out page architecure. Design systems such as component guides and color guides allow designers to specify how individual pieces should look globably. Style prototypes allow designers (sometimes with the help of a developer) produce working examples of designs, so that they can see how they function in the real world.

Jody Hamilton (@JodyHamilton) gave a presentation on problem solving skills in Drupal. Jody explained the 9 steps she takes for solve any problem that comes up. Reproducing (can the problem be reproduced), Scoping (find the bounds of the problem), Articulating (rephrase the problem in writing), Researching (google, check error logs, etc..), Experimenting (developing a hypothesis and test it), Hacking (start tying solutions), Refining (fix the problem responsibly), Shipping (push the fix to production), Billing (charge your client for the time). 

Overall I feel I gained a lot from this camp. The sessions were great, and I only wish I was able to attend the summits, sprints and trainings that also occured. there is always next year.