If you're a designer and programmer, how do you get faster and more efficient at your work so you make your clients happy? I realize clients have no clue about the amount of work that goes into this type of job.
I get faster in coding through practice.
I get more efficient in coding through knowing my markup, scripting, or programming language at heart and keeping a library with smart code snippets (reusable code) that I know I'll need day in, day out.
Clients rightfully don't have a clue how long a project takes. Actually, neither do I. The best I can do is adequately guess the time based on previous projects and make sure to let my client know about the scope and what that approximates (in hours).
Another thing I do is add some padding to the approximation to make sure the agreed deadline can be met.
This really depends on scope of the project. If you're one man band, then your past experience is your best tool and that alone will be the factor of getting the job done in time.
However, when working with multiple people then it's completely different level. You'd have to architect your system so that other people can work in parallel and reduce code dependencies.
If I have to pick one tool that speeds up my development is IDE.
Short cut keys- can help things go fast when you get good at them.
Actions- pre make actions and applications that will do lots of functions or process entire folders with just one click
Learning new stuff- their is 101 ways to skin a cat and some ways are faster then others.
Pre make temples- If you do the same job a lot you can pre make flies and folders do use over and over again so you don't have to remake them.
Just a few things that help me work faster.
To-do lists is one thing that works for me, getting your schedule organized can seriously improve your productivity, I'm a big fan of the Getting things done (GTD) process and it certainly helps me organize my time better. As for the code itself... snippets are your best friend. I wrote myself a code snippet manager that stores all of the code functions I re-use on a regular basis, then I can just drag and drop them into my code editor as I require them - it removes most repetition of my job and seriously boosts the speed of my code cycles. I always say there's no point reinventing the wheel, both in the service or the end result.
I think that Management in your Work can ease the Pressure of Work which you are about to do in different projects! If you plan yourself before doing designing or development than you could find great results! I personally have tested number of times
Through job speciliazation....
Project management and to-do lists makes it easier and more efficient. But everything depends on a project, how complex it is, if you are going to build a framework from the start, if you are going to base your work on a cms or a framework etc.
Get an IDE that provides auto-completion for every language you work with. Even better is an IDE like Eclipse that has auto-completion for all of your userland code (custom functions, classes, constants).
A web server configured on your local machine. This can save a lot of time wasted uploading files to a remote development machine. It also helps you build an application that can work in different operating environments.
Using a version control system like SVN is essential if your working with multiple developers. Way too much time is wasted coordinating changes without one. Clients will sometimes request something and then ask for it to be changed back. SVN helps you revert files quickly.
A good browser development tool like Firebug or Chrome Developer Tools is mandatory. Anybody still looking up line and char # from IE 6 is in trouble.
Read documentation for fun. I subscribe to developer newsletters from Google, Facebook, Amazon, PayPal, eBay and more. Whenever a new API or services comes out I scan through the documentation. I try to get an idea of what's possible so I can speak knowledgeably to clients or leads.
I also subscribe to newsletters/blogs from major industry players ... SAAS providers (Salesforce, Google Apps), Data Services (Melissa Data), SEO experts, Database consultants, Programming experts, Open Source community leaders and Open Source projects.
Use an open source framework like jQuery or Zend. Learn from the best programmers around the world. Copy their patterns and implement the ones that work best for your project.
Build things for fun every once in a while. Learn a new technology before you have the client lined up. I played around with Google Maps before I landed my first mapping project.
My personal time saver is reusing code. I have CSS especially for laying out forms, I just make sure the designers make the forms look the same, each time.
Finding the right tool for the job, Joomla template takes for example two days to build, the same template in CMS Made Simple takes one day.
If I have a bug in my code, I like to take time out to work on another project and come back to things with a fresh outlook.
I like to have check lists to see how far I have come and be organised to show what I have left to do, can be very motivational.
eat well, excercise and get plenty of sleep.
We work on getting the specs clear from the start, and charging more for small jobs. When we can work on the same job all day, we are much more efficient that working on a few small jobs. And definitely we try to find code that can be reused or added to our product, so that increasingly our product has everything needed from the start.
Everything everyone has said as well as [constant never ending improvement. And from the book "[URL="http://james-allen.in1woord.nl/?text=out-from-the-heart"]Out from the Heart" by author [URL="http://en.wikipedia.org/wiki/James_Allen_%28author%29"]James Allen](http://en.wikipedia.org/wiki/Kaizen):
This condition of laziness must be overcome by rousing up the body at an early hour, giving it just the amount of sleep it requires for complete recuperation, and by doing promptly and vigorously, every task, every duty, no matter how small, as it comes along.
Doing every task as it comes along. Don't delay replying to that email. Don't delay going to the bank today. Don't delay putting comments in your code now. Don't be lazy - do all tasks now as they come along.
Implementing this point into my life has changed me for the better and I have found I get more done. I feel more organised as well. When you let things slip past your focus and say "I'll deal with that later" then it often just keeps slipping you by and that to-do list never gets completed. When you have more on your plate (or to-do list) you feel bogged down and less likely to want to get things done. So do them now, speaking of which, I have an email to write!
Simplify, Simplify, Simplify - and remember one simple rule if you are working on a website... Visitors go to websites for the CONTENT, not the goofy graphics you hang AROUND the content.
It's why I've flipped my design process around 180 degrees from the 'industry norm' as sitting their goofing around in photoshop making a PSD is not web design, it's sitting there drawing pretty pictures that may or may not even fit the final content - may or may not have anything to do with accessibility guidelines, and may or may not even make sense from a document structure standpoint.
I find that starting out with semantic markup of the content FIRST, then bending that markup to my will with CSS adding as few extra sandbags and wrapping DIV as possible, and THEN starting up the graphics program to hang images on the layout speeds up my development cycle greatly.
Part of that simplification comes from the use of semantic markup and sensible containers... Just as George Carlin said not every ejaculation deserves a name, not every element needs a DIV around it or a class on it. I see developers falling into that trap all the time where inside a UL they'll waste time slapping the same classes on every LI and anchor - completely forgetting what the 'cascading' in CSS means. If all your LI inside a UL are getting the same class, they don't need a class... if all your P inside a div are getting the same class, they don't need a class.
In that way, it's about learning not just how to use the tools at hand, but also learning when NOT to use them.
Simplify, Simplify, Simplify!
Do more practice to get this goal.
Simplify and practice are good calls.
Spend some time seeing how others are doing. Maybe they spend some time to write templates that can be reused over and over again.
I don't think anyone ever gets faster, they just accumulate things they can reuse.
As a programmer, the thing that made be faster, is not being payed by the hour / not accepting projects that pay by the hour or that could potentially end up on "pay by the hour" projects.
When you get payed by the hour, you indirectly take your time, and tend to find an easy thing that you repeat over and over.
When you get payed by the project, you will take a few minutes to think at the fastest way to get that project done, to get your money and move on.
After a few years of doing this, the acquired experience and some helper scripts / framework, I can make a site/system that used to take 2-3 weeks in 3-4h of planning and 3-4h of codding.
next page →