Samsung hopes it can entice developers to create apps that can connect televisions, phones, tablets and laptops. For the second year in a row, Samsung is hosting what it calls the Free the TV Challenge.

The challenge tasks app developers to create applications and solutions using the Samsung TV App SDK. Last year, the focus was on getting third-party app content for the company’s line of Smart TV and Blu-ray players. This year, the company wants developers to focus on creating “converged apps”: Ones that will offer interaction between a Samsung Smart TV and at least one other screen, like a phone or tablet.

Samsung is asking developers to look into three categories:

  • Controller Apps – Ones that let a phone, tablet or PC control an app running on a TV.
  • Companion Apps – Think second screen apps, with a focus on synchronized, supplemented content.
  • Interactive Apps — Apps that let the user use a device as a secondary display. That means you could start using an app on one device and pick up where you left off on another gadget.

The winning developer will get $100,000, plus a 65″ LED TV and a Galaxy Tab 10.1. The winning app will also be featured in the “Recommended” section of the Samsung Apps store for two months. Second and third place winners will receive $75,000 and $50,000 respectively, plus a 55″ TV and a Galaxy Tab 10.1. The contest is open until November 29, 2011 at 5:00pm EST. Judging will take place between December 2 and December 16, 2011. The winners will be announced on January 13, 2012, and Samsung’s website has a complete list of rules and eligibility requirements.

MOVL, the startup that won first place in the 2010 Free the TV Challenge, is making its MOVL Connect Platform available to developers free of charge during the contest period.

It makes sense that Samsung is asking developers to innovate and build cross-device applications. Connected devices are more common than not, and we access content in increasingly fluid ways. That said, we do wonder how much utility developers will be able to provide within the context of the Samsung TV SDK. And we hope devs will be able to incorporate technologies such as DLNA, which are supported by devices other than just Samsung TVs and Blu-ray players, when building their apps.

The only real problem we see in the burgeoning connected app space is the high level of fragmentation. Almost every TV vendor has its own platform, and those platforms are often incompatible with one another. So developers have to build apps for multiple TV makers, not to mention set-top boxes like the Boxee Box, Roku and Google TV. We would really like to see TV makers align on some sort of base platform for connected applications.

What do you think of companies sponsoring developer contests to enhance their product ecosystems? Let us know in the comments.

More About: connected devices, connected tv, samsung, second screen, second screen apps





After months of speculation, Facebook has finally announced the date of its annual developer conference, f8.

The fourth edition of the conference will take place Sept. 22 in San Francisco. “This all day event with Facebook engineers and product teams will feature keynotes and session tracks that highlight our new tools along with best practices for developers and partners building the next generation of social experiences,” the company said in its email invitation.

The all-day conference is where Facebook typically launches its biggest products and initiatives. It launched the Facebook Platform at its first f8 in 2007, unveiled Facebook Connect in 2008 and launched the Like button and the Facebook Open Graph in 2010.

What will Facebook announce at this year’s f8? Mashable will be there to cover the major news from the world’s largest social network.

More About: f8, f8 2011, facebook, facebook platform

For more Dev & Design coverage:




Mollie Vandor is the Associate Product Manager at Cooking.com. Prior to that, she helped launch Ranker.com, where she served as the Product Manager, amongst many other roles. You can reach her @mollierosev, on her blog, or on her latest addiction – Words With Friends, where she plays under the username “Mollierosev.”

While summer vacation winds to a close and students prepare to go back to school, the days of brand new backpacks and crisp notebooks are long gone for many adults. Although classrooms, teachers and tuition might be off the table, it doesn’t mean education needs to be.

In fact, the Internet itself provides a wealth of educational opportunities. Furthermore, long summer days and relatively relaxed offices might provide the perfect setting for web education. Just think, while other people are rounding out their summer tans, you could be ringing in autumn with a whole new skill set — in this case, web design expertise. Tans fade. Beefier resumes keep shining.

Here’s a look at some of the best web resources for web design education.


101


Design 101 is all about the basics: master the lingo, learn the software and familiarize yourself with the driving principles that govern good design. To that end, your first stop should be a survey course of sorts. Try the Psdtuts+ self-study curriculum, where you can soak up the basics of shape, spacing, rhythm, typography, color, texture and more. To reinforce those basic skills, check out the Albany Library Design Tutorial, a sort of interactive “design for dummies.” While the tutorial is a bit old school, technologically speaking, design-wise, it effectively covers the basics.

You may also want to learn a little bit about the grid system while you’re at it. The system is exactly what it sounds like: a grid or set of guides on which the elements of a web page are built. Working with the grid can help in mastering the art of clean, cohesive web design. And speaking of cohesiveness, you may also want to review Web Pages That Suck for examples of how not to utilize your newly minted design skills.

Once you’ve tackled design theory, get practical with Adobe Design Center. It has all the tools you need to turn that theory into design reality. If you’re more of a visual learner, investigate this collection of helpful YouTube Photoshop tutorials.


Upper Division


You’ve mastered the basics, which means you’re ready for some fresh challenges and inspiration. For example, participate in The Daily Design Challenge by pledging to take on one design-related task per day for a full year. Whether you design a new font, doodle a small graphic or create a new logo for a beloved brand, set aside a few minutes every day to keep your skills sharp and your creative juices flowing.

If you’re really looking for a challenge, Layer Tennis is the web’s most creative competition. Sponsored by Adobe Creative Suite, Layer Tennis pits two competitors against each other in a weekly match-up. Every fifteen minutes, participants swap a single design file “back and forth in real-time, adding to and embellishing the work.” A writer provides play-by-play commentary while an active community of design aficionados looks on, providing a great forum to witness inspirational creative design in action.

Next, use that creative inspiration to fuel some serious studying. MIT offers free online coursework in comparative media, in which you learn about the design principles of different mediums. Similarly, iTunes offers podcast lectures about aesthetics and the philosophy of art. Vimeo’s Smarthistory videos discuss everything from Representations of David and the Florentine Renaissance to Duchamp and the Ready-Made, because there’s nothing like a little art history to help you create design history of your own.


Ongoing Education


Once you’ve gained a comprehensive understanding of the basics, a background of art history and a fresh set of advanced skills, ongoing education can provide you with the tools necessary to showcase your talent, not to mention the additional innovation to advance your craft.

According to Smashing Magazine, “The résumé is the first portfolio piece that potential employers see, and if they’re not impressed, chances are they won’t look at the rest of your portfolio.” Smashing offers a great tutorial to ensure that your résumé showcases your design skills. While you’re at it, make sure your portfolio illustrates the best of your aesthetic abilities.

Nothing inspires your future work quite like taking in current innovative design. To that end, check out the creative collection at Designspiration. Tumblr is also a great resource for finding fantastic designers, and Quora’s active community of graphic designers engages in dynamic conversation about the industry. Finally, Twitter has a plethora of design people worth following.


Whether you’re looking to get a grip on design basics, or you want to sharpen your advanced skills, web resources can help you construct the perfect creative (and flexible) curriculum. And with the right smartphone or tablet, you can even study while soaking up the last of the summer sun. Now that’s what we’d call an advanced placement course!

Image courtesy of iStockphoto, enviromantic

More About: design, education, web

For more Dev & Design coverage:




Martin Odersky is Chairman and Chief Architect of Typesafe and creator of the open source Scala programming language. This post was co-authored by Chris Conrad, an engineering manager who is part of the Search, Network and Analytics team at LinkedIn.

While interacting with social media and other consumer websites has become routine for many of us, ensuring a seamless, positive user experience is still the Holy Grail for web developers. The volume of queries and messaging on websites increases every day, as does the challenge of keeping the underlying infrastructure running smoothly for millions of users.

Below, we’ll highlight key challenges facing web developers of high volume sites, provide examples of how to address these hurdles, and discuss the role of emerging open source platforms as a modern approach to overcoming them.


Three Key Challenges


  • Performance: While web application developers of high volume sites face many challenges, performance tops the list. With consumers now demanding blazing computing speeds and uninterrupted service, a wait time of 250 milliseconds can mean the difference between a successful service and a failed one. For key user operations, such as interactive, real-time slicing and dicing of large data sets, performance is essential. The application needs to perform flawlessly and logically in order to attract and keep consumers.
  • Efficiency: When operating services on a massive scale, it’s essential to make the most efficient use of hardware assets. For example, optimize the use of memory and available processing resources. In practice, this often means using event-driven and distributed architectures like node.js, versus previous generation thread-based models like traditional Java Servlets. Developer productivity programming languages are further facets of efficiency. Fewer lines of code, made possible by concise languages like Scala and Ruby, generally translates to higher productivity for application developers.
  • Reliability: Systems need to remain resilient against component failures, including hardware, software and network crashes. An ever-expanding ecosystem of applications depends on reliable access to user-generated content, like LinkedIn’s, for instance. As such, the network needs to target “five nines” availability goals that have previously been benchmarks for the telecommunications and electrical power industries.

  • Real-World Applications


    LinkedIn faces these challenges every day and is always looking to incorporate the most advanced technology to keep its services running smoothly, reliably and efficiently. For example, to support the Signal product introduced last year, LinkedIn created a high performance web service written in Scala. This service is accessed through a REST/JSON-RPC model that enables quick ad hoc data manipulation and fast iteration from the web-based user interface.

    For its real-time people search service (with a peak demand exceeding the hundreds of queries per second), LinkedIn uses a scatter-gather approach that distributes search queries in parallel across a large server farm. This approach balances quick response time with efficient use of server resources.

    To support reliability, LinkedIn created a cluster management and workload distribution library called Norbert, which it implemented in the open source Scala programming language. It then incorporated open source technologies from the Apache ZooKeeper, Netty and Protocol Buffers projects. Norbert is a key component of several mission-critical applications at LinkedIn, most notably its social graph engine, which fields a high volume of requests per day.


    Open Source – Solving Today’s Modern Programming Challenges


    In the last few years, many new open source technologies have emerged to help web application developers. Open source projects such as Norbert, now available under the open source Apache license at sna-projects.com, are readily available to web developers charged with tackling such challenges.

    Open source programming languages and frameworks that enable parallel and distributed computing can be especially helpful in keeping today’s most trafficked websites running steadily and smoothly. Below are key considerations to keep in mind when programming for today’s multicore paradigm:

    • For applications that benefit from highly interactive user experiences, like LinkedIn Signal, developers should consider breaking data-intensive functionality into asynchronous web services that can be integrated into the web-based user interface using REST-style APIs.
    • To encourage “efficiency by default” for today’s web-scale applications, developers should look to modern frameworks like Akka and Norbert that incorporate capabilities like event-driven processing, asynchronous I/O and cluster-aware fault tolerance.
    • For applications that can truly scale up and scale out, developers should favor languages like Scala that provide first class support for functional programming, which discourages the use of mutable state. This allows applications to more easily scale hundreds of cores on a single server, and thousands of servers on a network.

    In summary, web applications and their supporting infrastructure need to be robust and efficient as more of society shifts its everyday interactions online. Fundamental advances in technology, many driven by the open source community, are making it possible for today’s web application developers to stay ahead of the scalable computing needs of consumers.

    Image courtesy of Flickr, Fon-tina

    More About: apps, linkedin, programming, Web Development

    For more Dev & Design coverage:




Lew Cirne is founder and CEO of New Relic, the leading SaaS-based web application performance management company supporting 10,000 customers including companies from Comcast to Zynga.

Twitter generates about eight terabytes of data a day. That’s a hell of a lot of data for one application. Some SaaS companies might look at that number and think that they’ll never need to handle that much data, or if they did, it would take far more infrastructure and server hardware than they could afford to maintain.

In both cases, they might be wrong.

Any SaaS business can handle as much data as Twitter and many can do it on only a handful of servers. It’s all a matter of understanding your data and planning your technology investments to be as scalable as possible. Sounds easy enough. So where do you begin?


1. Plan to Scale, Even in the Beginning


It may sound like premature optimization, but planning to scale is really just basic business strategy. Ask a few of these questions: How many people will realistically use the application in the next 6 to 12 months? What kind of data do you plan on creating or storing on their behalf? How long can all your customers “fit” on one server? What can you do when you have more customers or more data than that?

Take into account past growth patterns and expected growth rate and begin to determine the potential technological limits you’ll encounter. It’s also important to have mechanisms in place for unexpected growth. Think of it like an accounting process: When will infrastructure expenses outweigh the income? Planning to scale isn’t just about building the technology to accommodate growth. It’s also about informing business decisions.

Having a rough strategy for future growth will help you design your application and the infrastructure to operate it. You don’t need to build out all scaling capability at the start, but also don’t assume that the cloud will just scale by itself. You should keep some practicable ideas in the back of your mind for when the times comes.


2. Understand Your Data


Many fast growing SaaS companies feel like they’re just moments away from being buried under a mountain of data streaming in from their customers. There are so many ways to provide access to data, but you’re not quite sure how to weed through it all.

The key is to pay close attention to how users are actually accessing the data. For the majority of popular use cases, there is probably a much smaller set of data to care about. Understanding the most likely use cases for your application makes it easier to create and optimize a data handling strategy that will allow you scale.


3. Keep it Simple


Technology fads come and go. Every few months you hear about some new type of database or application framework that promises to magically shorten your development time or increase your scalability. The best technology, however, is the one you already know.

While many of these new tools offer great speed and functionality, they often lack experience with some of the more “boring” aspects of data handling such as redundancy, replication or failover, for instance. By keeping things simple and using technologies that you know, it becomes easier to respond to changes in the business and new demands on the application.


At the heart of planning for scale is understanding where you are in the arc of your business. Business growth goes hand-in-hand with technology growth. The more tuned in you are to demands on your business, the easier it will be to adjust and scale your application.

Image courtesy of iStockphoto, kemie

More About: dev & design, how to, SaaS, scalability

For more Dev & Design coverage:




Adobe released the public beta of its new website creation software, code-named Muse, on Monday.

Unlike Dreamweaver, Adobe’s flagship web development tool, Muse is for graphic designers who want to create elegant websites without having to code.

We’ve been playing with Muse for the past two weeks as part of the private beta, and we are impressed with the tool’s functionality and featureset. What differentiates Muse from some other code-free website creation tools is this: the user interface and the design paradigms mimic those from other Adobe Creative Suite applications, namely InDesign.

This was by design. Adobe says that the majority of users who identify themselves as graphic designers — i.e., not web developers or interaction designers — still primarily work with print. Muse is for these users.

A common scenario is that a graphic designer will create a website in Illustrator, Fireworks or Photoshop and then pass the flattened file off to web designers who will then do their best to code the comp.

With Muse, Adobe hopes to eliminate that coding step for users whose sites don’t need lots of dynamic content — and who want to lay out and generate the code for their site with one tool.

Check out this video to see Muse in action:


Small Footprint, Lots of Features


Perhaps the most surprising feature about Muse is that it is an Adobe Air application, rather than a full-blown native app. That means it works on Mac and PC.

I’m not particularly fond of Adobe Air on the Mac; it tends to have sub-optimal performance. But in Muse’s hands it is fast, efficient, and auto-saves frequently.

This is a public beta, so crashes will happen. When they do, you can just start the app again and resume without losing too much work.

Muse was built to take advantage of certain HTML5 and CSS3 properties and to generate semantically-correct code. We’ve heard all of that before, but in our tests, the code that Muse outputs is clean and readable.

You can add your own HTML snippets or dynamic content information to a Muse page, and the app also comes with a set of pre-defined widgets. These widgets are written in jQuery and can be modified like any other element. CSS3 transitions are also possible to create in Muse; the process is seamless.

You can preview a page locally using the built-in WebKit browser or by opening up a file in the default app on your Mac or PC. This is great for seeing exactly how something looks in a browser before publishing.


Why Not Use WordPress?


The main question that comes up with these types of tools is this: why not just use WordPress, or some similar content management system?

Adobe’s answer is another question: how many types of designers actually need a database system?

For brochure sites, landing pages and sites that don’t have frequently changing content, a database web system usually isn’t necessary. If you can embed JavaScript, RSS feeds and other information into a site itself, a designer might not even need to bother with the whole CMS process.

That said, Muse could easily be used to prototype content that would then be implemented into a system like WordPress. For instance, a page and section layout designed in Muse could become a new WordPress theme.

In fact, users of the private beta are already exploring these kinds of options, and Adobe is open to expanding on them.


Publishing, Pricing & Availability


Muse is available in public beta now, and Adobe has said the program will be free until its official release in early 2012. That gives designers a chance to offer their feedback.

Once Muse launches under its final name in early 2012, it will be available by subscription. This is the first Adobe product to have a subscription-only pricing scheme and it will be $15 per month with a one-year commitment or $20 per month on a month-to-month basis.

Users who want to publish their sites can choose to use Adobe Business Catalyst for their hosting needs and publish directly from Muse.

If you have hosting setup elsewhere, you can export the contents of your site as HTML and upload the corresponding files, images, HTML and CSS files to your web server.


A Muse Site


Adobe’s website for Muse was created using the app, which is an impressive example of dog-fooding. Just to get a sense of what the app could do, I put together this layout for one of my domains, christina.is, in about 20 minutes. Most of the time was spent aligning the social media icons and aligning that text within the confines of a JavaScript accordion.

This isn’t the most beautiful site in the world — however, for less than 20 minutes of work, it’s not a bad start.

What do you think of Adobe’s new website creation tool? Graphic designers, are you interested in an InDesign-approach to layout and semantically generated code? Let us know in the comments.

More About: adobe, Adobe Air, muse, Web Development, website creation

For more Dev & Design coverage:




The Web Development Series is supported by Rackspace, the better way to do hosting. Learn more about Rackspace’s hosting solutions here.

Nearly two weeks after Tumblr requested that unofficial browser extension Missing e go offline, the useful utility is planning to make its way back to users.

Missing e is an unofficial browser extension that adds functionality and enhanced features to Tumblr. The ability to reblog yourself, enhance the “Ask” feature and a host of dashboard tweaks are just some of the many features in the extension. Originally, the project started off as a few userscript enhancements, but over time, it evolved into an extension that was frequently updated and frequently developed.

Missing e is one of the few extensions I have installed on every browser on my laptop and iMac. In fact, I like Missing e so much, I reached out to its developer Jeremy Cutler earlier this summer and asked if he would agree to be interviewed for a story on various Tumblr hacks.

Just days before Cutler and I were scheduled to meet in person, Tumblr reached out and asked him to take the extension offline until some issues could be sorted out.

On its face, it looked like Tumblr had problems with the way that Missing e was making some of its API calls, as well as questions about whether or not Missing e followed the guidelines set out in the Tumblr API License Agreement. After Cutler agreed to make changes so that the code was more efficient, as well as removing a feature that would hide the Tumblr Radar, it appeared that the bigger problem, at least from Cutler’s perspective, was the way that Missing e modifies the Tumblr Dashboard for its users. Cutler was left with the impression that without stripping away every feature that would make Missing e useful, he would be unable to satisfy Tumblr.

When we met last week, Cutler opened up to Mashable about some of the technical, ethical and social challenges that have in essence, forced him to throw in the towel on Missing e.

The loss of Missing e wasn’t something that the community took lightly. More than 2,500 users signed a petition to save Missing e and prominent members of the Tumblr community expressed their support for the extension.

Still, Cutler wasn’t sure if he wanted to continue with the project. When we spoke to Cutler last week, the entire issue was still raw. As he wrote on his own Tumblr last week, “it’s hard not taking this personally.”

Tumblr, it turns out, is most responsible for the change in fate for Missing e. You see, earlier this week, some new features made their way into the Tumblr Dashboard. These are features that bore striking resemblance to some of the preferences in Missing e

As Cutler told us via email:

“I had been working a little bit on the code when the mood struck, but when they began releasing features similar to those in Missing e, I have to admit that I got my back up. I am glad that they are trying to improve, whether or not they’ve taken their cues from me. Still, I think the way they’ve implemented these new features leaves a little to be desired. The new release will fix the tag wrapping problem and allow users to make automatic tag reblogging optional.”

At this stage, Cutler is preparing to release a new version of Missing e. This version will not use the API in any way, which to Cutler, should clear him of any violation of the API License Agreement. One of the casualties of not using the API will mean that timestamps on posts in the Dashboard will not supported.

Cutler is also going to remove the popular Follow Checker and Unfollower features from Missing e. As he puts it, “that amount of scraping really isn’t fair to Tumblr’s servers.” And while he expects to lose some users over this feature, he’ll also be getting rid of his biggest source of support queries.

For its part, Tumblr has been quiet regarding the issue. After speaking with Cutler several times last week, the company hasn’t contacted the developer again since the incident received some press attention.

Frankly, as disappointed as we have been that this entire situation has unfolded this way, we’re happy to see that Missing e is going to be back in action. Cutler, who is a software engineer in his day job, is the type of person most companies want as add-on developers.


Series Supported by Rackspace


rackspace

The Web Development Series is supported by Rackspace, the better way to do hosting. No more worrying about web hosting uptime. No more spending your time, energy and resources trying to stay on top of things like patching, updating, monitoring, backing up data and the like. Learn why.

More About: api, developers, jeremy cutler, missing e, tumblr, web development series

For more Dev & Design coverage:




Appcelerator and IDC released their Q3 Mobile Developer Report on Wednesday, which looks at how mobile developers currently view the smartphone and tablet landscape. The report revealed that developers are most excited about the mobile potential of Google+ and Apple’s iCloud.

Despite it being just a month old, Google+ is showing plenty of potential, according to devs. The majority surveyed say Google+ has what it takes to compete head-on with Facebook. Meanwhile, iCloud’s mainstream potential has iOS developers enthused about the possibilities of integrating it into their apps.

Looking at the report, the one area that hasn’t changed since last spring is developer interest in the main mobile ecosystems: iOS and Android continue to be the platforms that developers are “very interested” in developing for.

There is a clear disparity between the number of developers that indicate interest in Android tablets and the relatively small number of Honeycomb-optimized apps. Scott Schwarzhoff, Appcelerator’s VP of marketing, says Android tablets are in a holding pattern. Interest is still high — based on the belief that the tablet market will mimic what we’ve seen in the mobile phone market. But tablet pricing, availability and market share are keeping many developers from taking that first step.

For the first time, Appcelerator and IDC added HTML5 to its list of platforms. Some 66% of respondents indicated that they were very interested in that format.

As we’ve seen with Twitter‘s new HTML5 iPad website, the trend of creating both native apps and HTML5 web apps — rather than choosing one or the other — remains strong.


Where’s the API?


To us, the most interesting part of the survey are the questions on social networking and cloud computing APIs.

When asked what announcement would have the biggest impact on mobile growth and adoption, near-field communication (NFC), Android patent issues and rumors of an Amazon Android tablet were all outshone by Google+ and iCloud.

Why is this compelling? Because Google+ doesn’t even have a public facing API. At the time of the survey (two weeks ago), the state of the iCloud API was still relatively limited. Ultimately, we’re not convinced that these statistics will mean a lot in terms of real-world usage, until the APIs are actually released and broadly understood.

On the social front, two-thirds of developers believe that Google+ has the potential to challenge or catch up with Facebook. Again, these numbers are compelling, but they don’t mean a whole lot until Google can back up the hype with a real, tangible API.


Easy Does It


On the cloud computing front — Amazon, the leader in the last few surveys — was essentially tied with Apple and its iCloud platform. Schwarzhoff says iCloud, unlike Amazon’s AWS, is thought to be easier for developers to implement.

Dropbox and Box.net, cloud collaboration and storage companies that have mobile APIs and are already in use by dozens of mobile apps, were not included in the survey. We think iCloud will be used by developers the same way that Box.net and Dropbox are used now, for easy access to storage and syncing tools.

Does the latest mobile survey mirror any of your thoughts and experiences with mobile app development? Let us know in the comments.

More About: appcelerator, Google Plus, icloud, mobile developer reports, stats

For more Dev & Design coverage:




Google has just released a new tool that will help webmasters speed up their page load time.

Google’s new Page Speed Service takes many of the optimizations outlined in the company’s Page Speed Online API and applies it to sites automatically.

It’s a turnkey online service that automatically takes care of the optimizations by rewriting pages and delivering them to users using Google’s servers.

The tool works by having users point the CNAME for their URL at Google’s own servers. From there, Google can do the optimizations and rewrite pages as needed.

On the Google Code blog, Google says that it has seen speed improvements from 25% to 60% on some sites. Google has a gallery and a comparison test that users can try themselves.

Right now, the tool is only available to a limited set of webmasters, but you can request access by filling out this form. Google says that pricing will be competitive.

It’s rare that Google rolls out plans for a pay service, but this is a case where we think it makes sense. Would you be interested in using Google’s services to automatically optimize your website page load?

More About: Google, page speed, page speed services, website optmization

For more Dev & Design coverage:




The Web Development Series is supported by Rackspace, the better way to do hosting. Learn more about Rackspace’s hosting solutions here.

Taking on a large project can be both exciting and intimidating, particularly if you’re a solo developer. Big builds can be a lot of fun and serve as great learning experiences. At the same time, you have to keep the project moving forward, or risk missed deadlines and burnout.

Below are some tips to help you stay organized and productive, whether you’re working individually or as a team.


1. Make Your Contract Rock-Solid


When dealing with clients, issues like scope creep, late payments and deadlines are always a concern. And what may seem obvious to you may not be clear to your client. To avoid hurt feelings, delays and financial troubles, your first priority should be establishing a thorough, firm, but fair written contract.

A good contract protects both you and your client. In addition to general terms and conditions, your contract should contain specifics about the project: payment schedules, due dates, deadlines (and consequences for missing those deadlines), cancellation policies, guidelines regarding intellectual property and project scope. You can find many sample contracts on the web, but there’s no substitute for consulting with an attorney. When dealing with the safety of your business and your livelihood, the expense is justifiable, and should be calculated in your business overhead.


2. Have a Well-defined Road Map


One of the required supplements to your contract should always be a project road map. It should outline all of the project features as thoroughly as possible, and establish the general plan for project progression, from research all the way through deployment.

To start, write out all of the features in outline format. It helps to break them down into groups, such as “Account Administration Features” and “Inventory Control Features,” for example. Keep refining the outline until you’ve defined exactly what is expected and what needs to be developed.

Next, break the project down into different phases, such as research, design, development, testing and deployment. For each phase, state its goals clearly, and define where the project should be when the phase is completed. Have your client sign off on the phases, and include this document with your contract. You may want to make a second copy of this road map to include more technical details, such as technologies to employ and methods to implement each feature — but don’t change the scope unless your client signs off on the changes.


3. Establish a Style Guide


Whether you’re working alone or with a team, taking the time to establish a style guide for your project will help you maintain consistency throughout. Furthermore, when the project needs updating six months from now, you’ll be glad you made the effort.

There are two types of style guides you should consider: a visual guide and a coding guide. Keep in mind that either or both may apply to the project. The visual style guide should contain information regarding fonts, colors, branding and any other notes on visual appearance. You should also include a few examples of common elements, such as headers, forms, body content, sidebars and menus. While you may never need to go into such detail, the Skype Brand Book is a great example. The guide provides a great presentation to your client, a tool to help them understand how the project will ultimately look and feel. Review the established style with the client (mood boards are great for this purpose), and have them sign off on the look. Refer back to the visual style guide often during your own work to make sure you’re adhering to the set guidelines.

A programming style guide needn’t be project-specific (unless you’re working with a new team that has already established a style different from your own). It may be as simple as following an existing style guide, such as the Zend style guide. You don’t need to start from scratch here, but you need to be consistent. Having a clear set of guidelines will help any developers who may come on board later.


4. Take Time to Research, Plan and Test


When developing a new project, particularly one that’s interesting and exciting, people have the temptation to dive right in and get to work. An initial lack of proper research and planning can have detrimental effects, especially for larger projects. Take the proper initial steps and spend time researching, diagramming, reading through source code and organizing your thoughts. It will end up saving you time and money down the road.

The same applies to testing your code. It will spare you the tedious and often embarrassing problems of code rewrites, because the only thing worse than having your code fail during a demo is having it fail in production. Testing code and debugging shouldn’t be afterthoughts, so work both into your project estimate and timeline. There are a lot of automated testing suites out there today — everything from PHP and JavaScript to Ruby and Python, and countless other languages. It’s a good idea to learn at least one for each language you plan to use. Don’t forget to have real users navigate your software too. You and your client should both spend time actually using the site you’ve developed before going live.


5. Document As You Go


If you’re like most developers, you cringe at the thought of writing documentation. Taking the time to document something, especially when it seems clear at the time of creation, feels like a waste of valuable time. However, years from now those thousands of lines of source code may not make nearly as much sense.

Furthermore, programming styles and skill evolve over time, which can make old code hard to dive back into. So take time to document your code as you go. Make it as intuitive as possible by using descriptive names and logical progression. As a good rule of thumb, you should never need to document what something does, but make notes in your code that explain a feature’s purpose and function. Also note any dependencies that it either relies on or creates. Stopping at the end of each new feature and taking the time to draft some end-user documentation is a good idea as well. This will make it much easier to train your client on the software, and will also serve as a good way to catch any usability issues or features that were accidentally omitted.


6. Use Version Control


This should almost go without saying, but many solo developers don’t use version control for their projects. For a large project, this simply isn’t an option. A good VCS (whether you choose SVN, Git, Mercurial or some other system) virtually eliminates the possibility of accidentally deleting or overwriting code.

In addition to providing an invaluable safety net, commit logs also help you track your progress. And the ability to branch, fork, and merge your code gives you the flexibility to experiment with different methods of feature implementation. You can also refine and fine-tune your software’s performance without the risk of breaking existing code. Finally, it simplifies remote backup and deployment to testing and production environments. These days, version control should be considered an essential part of your development, particularly if you collaborate with other individuals.


7. Take Thorough Meeting Notes


Whether you prefer to use a laptop or a spiral-bound notebook, take notes when you meet with your client and other collaborators. Otherwise, you may not retain that minor detail discussed during the meeting as effectively. Good note-taking demonstrates to your clients that you’re attentive, interested and dedicated to providing them with good service. It ensures you don’t forget the little details, and it also saves you the embarrassment of having to go back to the client for clarification. It sounds simple, but one minor modification that went forgotten or overlooked could mean major changes in code or functionality. Save yourself the headache, stress and humiliation and learn to write everything down.


8. Organize Your Assets


As with thorough note-taking, keeping assets organized is another important step toward streamlining your project work flow. You may even consider a separate version control repository for project assets that don’t belong in the finished code base. Your client will likely send you a lot of files, content, artwork and emails containing feedback and requests for modifications and new features. Often, they’ll send more than one version of those files or requests.

Think about putting these assets into version control or some well-defined project management software. It can go a long way toward helping you keep information organized. Sending the wrong file or hunting through hundreds of emails not only slows you down and introduces the likelihood of errors, it makes you look unprofessional.


9. Put Due Dates in Writing


Due dates may often be established when outlining the project and its contract, but if this isn’t something you’re already doing, or if your current system isn’t working as well as you would like, it’s definitely worth the attention. Large projects tend to have a lot of dependencies, and missing one deadline can often put an entire project behind schedule. Mark due dates on your calendar and discipline yourself to stick to them.

Due dates aren’t just for you, either. It’s not at all unreasonable to give your client due dates for various deliverables, such as content and branding, and to set fixed periods of time for reviewing and approving assets. Clearly define due dates for all parties, and furthermore, address the consequences of unmet deadlines. As with negotiating a contract and drafting the project outline, always try to be fair, but don’t be afraid to be firm. Your client will respect you for it, and your reputation and career depend on it.


Series Supported by Rackspace


rackspace

The Web Development Series is supported by Rackspace, the better way to do hosting. No more worrying about web hosting uptime. No more spending your time, energy and resources trying to stay on top of things like patching, updating, monitoring, backing up data and the like. Learn why.

Images courtesy of Flickr, ZedZAP .. gone camping, justonlysteve

More About: code, contract, design, dev, developement, MARKETING, programming, project, style, web development series

For more Dev & Design coverage: