Why This Blog Exists
Welcome to the developer blog for TheLadders.Com. I've been informed by one of the developers, that "no one wants to be the first to post", so I thought I'd solve that problem by providing this introduction. I'll talk about the goals of this blog and the greater effort to give back to the community.
Like any good development shop, we freely research and copy some of the best ideas floating around the community. This includes open source code, design patterns, best practices and more. It seems only fair that we give something back. We have several such contributions in mind. This blog is only one avenue for accomplishing this; other methods include open-sourcing certain solutions, articles and white papers. And being a blog, I expect to the usual musings on development methodolgies, presentation of technical ideas, reviews, notes on conferences and the like.
Of course, like any for profit company, we want to get something out of it, as well. Some say that this is even true of people: there is no altruism and all actions have a self-serving motivation (even if that benefit is just to feel good about themselves). I don't know if that is true or not for people, but I believe it is true for companies. So, what is our motivation?
It's a multi-faceted answer, what we hope to gain. For starters, our developers benefit in terms of career advancement and professional self-improvement (an important metric for quarterly reviews). And, this in turn boosts morale. Further, there is the chance that feedback (including code patches) will be of value to us. And then there's the positive impact that such efforts can have on our reputation in the technical community as a great tech shop to work in. I hope that we will benefit in all these ways.
I mentioned above that we have several contributions in mind. Here are some of them:
1. Dynamic Configuration (Primary developer: Zhi-da Zhong)
Based on the Spring framework. This system was originally used to implement simple A/B tests and more complex A/B/C/* multi-variate tests. Although, in the latter case you will also need a method to plan the test and evaluate the results. It can also be used to implement dynamic site navigation (i.e. through configuration in the database we can override the controller, view and session parameters for a request as mapped in Spring's config). We can also apply test conditions to segment the population for dynamic behavior based on user attributes, random weighting or other factors. For example, we can create a module where 90% of premium users living in New York will go to a Job listing page with a Statue of Liberty image in the background, and 10% will get a solid colored background. For more salient examples, ask your marketing department.
2. Java-script Search (Primary developer: Larry Ogrodnek)
Library to implement keyword searches on a client-side data set. Use AJAX to trigger the search and apply the results.
3. AJAX method for passing data to the client as HTML fragments, rather than JSON or XML (primary developer: Josh Levine)
4. The Ladders' QA Toolbar (Primary Developer: Josh Levine)
An AJAX tab at the top of all of our pages (in our QA environment). Clicking the tab opens a div that is chock full of diagnostic information (controller, view, user's details, unique page identifier, details of applicable Dynamic Configuration modules). And a quick link that semi-automates the task of creating JIRA issues. This tool has greatly enhanced QA's efficiency in finding and reporting defects and the development team's ability to diagnose those defects.
Finally, since I haven't mentioned it, yet, I'll briefly state who I am. I serve as Director of Application Development at TheLadders.Com. I'm responsible for managing construction of the core products and support tools for the company. I do this with the help of a great team with some of the most talented developers I've ever had the opportunity to work with.
Like many good intentioned projects, this effort is only as good as our ability to follow through on the promise and time will tell if we accomplish that. Please check back to see if we do.