1. Prioritising development

    speedy gonzales Prioritising development

    Developers when young in their career are keen to impress. The words “I’ll get on it straight away” are often used and the client ends up being impressed as a result. This works very well and everyone ends up happy when the workload is kept low.

    The problem occurs when growth accelerates and the developer has to learn to say “it’ll be two weeks” to a client who wants it within two days. When “I’ll get on it straight away” means that you’ll likely reach the job in a few hours rather than a few minutes.

    There are several ways to deal with this to ensure you aren’t bogged down whilst working on current projects by past clients and side jobs alike.

    Support contracts

    Sell x hours a month to your clients to ensure they’re paying for the time you spend maintaining and updating their sites when they come back to you. It benefits both sides as it means you have a reason to get to the job sooner and it means the client is happy to place requests in a certain format and manner as set out in the contract. Want to give a two week lead time? Make it clear in the contract.

    Make sure free support time is limited.

    Ensure you have a 30, 60 or 90 day cap on free support for bug fixes and issues with a website. This isn’t to say that you will launch bug-filled websites, but it’s to say that there’s a point where by the final payment for the project has left your bank account and that it’s no longer fine to work any further on the project.

    Schedule projects in, and turn projects down.

    Probably the most important of the three in my opinion. The ability to schedule work and changes properly is only ever going to benefit your work life and happiness overall working on projects. If a change comes in that will be billed as a day then you need to book that in for a certain date so that the client knows when to contact you regarding that change.

    Setting time aside for this each week is also a great idea for handling large or regular loads of work of this nature. If you can set aside time for this it’s certainly a great idea. If you don’t have lots of changes to do one week then you have time off and it works well in the opposite direction too.

    1 Comment »
  2. Introduction to directories for Magento developers

    magento logo Introduction to directories for Magento developers

    New developers to Magento can find it a puzzling system in terms of system architecture. In this article I hope to shed some light on some of the key directories in Magento and what they do so any Magento developers out there aren’t quite as confused when unzipping their first set of Magento install files.

    Here’s seven key things you need to know the location of at some point when developing with Magento and the directories that they are stored in.

    1. The templates file

      /app/design/ is the core storage folder for template files. With it breaking down into adminhtml/ for administration templates, frontend/ for frontend templates and install/ for installation templates.

      Within these you’ll find your default template set aptly named default. In your template set folder are your individual theme folders that come with Magento.

      layout, locale and template are the core directories that contain the files that make up your themes.

    2. The skin files (resources, components, resources)

      In /skin/ you’ll find your CSS, images, Flash, JavaScript and any other resource files that relate specifically to templates in the system. You will also find the adminhtml, frontend and install directories distinction here.

    3. Language files and e-mail templates

      /app/locale/ is your core directory. With sub-directories for each language set installed for the store. You will find .csv files for each of the modules installed on the system relating to their translations. You’ll find the Magento e-mail templates in /template/email/ within your language directory in /app/locale/.

    4. Core configuration

      /app/etc/ contains all configuration files for Magento. From the local.xml file which contains your database configuration, amongst other things. To your modules/ folder which contains the declaration of modules in the system.

    5. Local, core and community modules

      All modules for functionality are stored in /app/code/ and are broken down into the following folders:

      • community – for modules installed via Magento Connect.
      • core – for modules that come with Magento by default.
      • local – usually for locally developed modules
    6. Media files

      All images uploaded to the system as well as the images resized dynamically by the system are stored in media/.

      When importing media files via system profiles (Magento’s name for batch processing), /media/import/ will be your folder to place the images for the products.

    7. The var directory

      The var directory is used for several functions in the system:

      • Backups are exported to backups/ by the built in system backup tool.
      • The system cache is stored in both cache/ and session/ folders.
      • Data import for default system data import profiles is set to import/.
      • Data export for default system data export profiles is set to export/.

    Hopefully this has given you a good indication as to the important directories in Magento’s file structure. I hope you can now go away and navigate around Magento’s default folders with ease.

    11 Comments »
  3. Another designer trying to take over your project?

    An ex-designer colleague of mine came to me the other night and asked me for some advice. He’s a freelance designer and has a set fee for a project he’s working on, but has ran into some trouble over the final design. This was his situation:

    • he was two months into a big project
    • the project involved one sole contact of the client
    • the project involved one developer, who also does design
    • all management and communication is through Basecamp
    • he is almost near the end of the project and the developer (who also does design) asks “hey, mind uploading the PSD? I want to try a few things…”

    There’s two clear paths to take here in my opinion:

    The worst: go crazy, get paranoid

    State very clearly you want to control the design, it’s yours, hands off. Do it on Basecamp and in front of the client. Make sure you well and truly make the client regret hiring you.

    The best: think it through

    Approach the client 1-on-1 and tell him you’d rather not adhere to the developer’s request. You think you’re close on the design concept and want to follow through with what you’ve done. Then, once you have worked something out directly with the client post a positive reply essentially saying “I’ve discussed this with the client and think it would be best for me to remain 100% in control of the design, I should have something up shortly”.

    3 Comments »
  4. Take control of hectic, out of control meetings

    Meetings are a necessary part of life when working with web sites, especially when a freelance PHP developer. But sometimes they can get a little out of control and they take up more of your time than you wanted to give, they go off topic or just end up being the horror of your otherwise excellent workweek.

    This article is a few of the steps I use to make sure meetings aren’t the hell they could be when a client comes over for a chat.

    Allot a set amount of time

    First off, make sure there’s a time limit. “Let’s meet at 10″ is an open-ended invitation to stay for the day, “let’s meet at 10 for an hour meeting” sets the deadline straight away and ensures it’s known from the get go.

    Put together a manifesto of what to go through

    Make sure there’s a reason for the meeting. What needs to be covered? What needs to be said? Ensure you go into the meeting knowing what’s going to happen instead of letting it simply roll off your tongue. As soon as you do this the meeting tends to drift off into a long conversation rather than covering the points that the client came to have taken care of.

    Make notes and make them often

    There’s no need to stop meetings to give direction or discuss whether a development is possible. Make sure the client knows you’re going to discuss and get back to them and they will be happy. Make a list of everything that needs taking care of and what you need to look into. Then after the meeting you can go back and place everything onto your project management software appropriately.

    Involve the relevant people

    Often it occurs that the wrong people at sat at the interview. Did the designer need to be there to discuss design? Did the developer need to be there to cover development responses? Prepare this before you go into the meeting and ensure you’re prepared with the right staff or contractors sat beside you.

    Have you taken control of your meetings?

    Let me know if you’ve got any other ways you have taken control of your meetings. Either through leaving a comment on this post or by posting an article up on your own blog or website and pointing it to this post so other users can find it easily.

    Discuss This Article »
  5. Start developing smarter and stop yourself working late

    Let me start off by saying if you’re proud of being a workaholic, have no goal for a life and/or are simply “building up your business” then this article probably isn’t for you. This is (in part) how I stopped myself from working 10am to 2am every day of the week and actually went outside for a change after being in exactly the same position.

    I’m the first to admit I’m a self-confessed workaholic but I’m also the first to admit that being workaholic to the point of work being the only thing in your life is a boring when you look back at it. Work is great and it sometimes leads to fantastic rewards but it shouldn’t never become the basis of your life.

    The things in this article are all things that led to me becoming a significantly better programmer and lead developer. They also made me become a significantly better freelance developer whilst I was freelancing.

    Nine-to-Five

    Start out by actually forcing yourself to work between 9am and 5pm. Get all early morning browsing in between 8:30am and 9am and make sure you’re ready to immediately start. When you’re forced to work within a time period that “isn’t enough time” you’ll find ingenious ways of cutting time out of your day and solving regular issues so you can do more in less time.

    You will be able to reflect on parts of your work life during this time that you’ve never thought about. Are you charging enough? Do you need help to get the work done? Are people taking advantage of your time?

    Know when to apply the breaks

    Set out when and for how long for your breaks are going to be. Your lunch needs to be at a regular time and two other 15-20 minute breaks can be scheduled either side of your lunch. This breaks things up and allows you to remove yourself from problems that can be fixed with a few minutes of simply thinking about it.

    The same applies here for time that isn’t spent working. Don’t go out on a three hour break because you’re not in an office and work from home “because you can”, it just doesn’t get you anywhere.

    Inbox nirvana

    Cut out all of your e-mails as soon as they’re coming in. Make sure you reply to the e-mails that are asking you questions and for help within a suitable amount of time. Either set a certain time period aside for this or break it down into 10-15 minute periods throughout the day so you can spend the rest of your time focusing on the job at hand.

    I find Gmail’s built in labelling feature is great for this, I can simply scan an e-mail and mark is as “quote to do” or “reply needed” and make sure those labels are completely cleared out by the end of each time slot so that everyone receives their responses.

    Trim the fat, throw out what isn’t working

    Simply enough you need to trim out all those activities that take minutes here and there but add up to an hour, maybe more, over the period of your work day (outside of the standard breaks) that stop you getting what you need to get done. Rescue Time is perfect for this as it allows you to see exactly what is distracting you from working properly and shows you how you can be more efficient.

    Determined enough to get work done, you may even consider installing parental controls to stop yourself accessing these applications during your scheduled work hours. It sounds funny now, but if you’re a World of Warcraft addict or love your RSS Feeds, you know how much that will cut from your day.

    Make some plans, don’t expect them to just happen

    Arrange weekly events you would have look like a complete idiot to pull out of, plan things a few days or week(s) in advance so that it’s definite that it will happen. Make sure to get out and experience something else other than the computer once and a while.

    Thought of something else?

    If there’s anything else you’d like to suggest to others facing this problem or you would like to share how you’ve got over the same issue then feel free to leave a comment or post it up on your own blog with a link to this post so that others can find your suggestion.

    4 Comments »
  6. Changing the default Mac screen shot image type

    I recently had the need to change the default Mac OSX takes it’s screen shots in. There’s some occasions where you need more quality than PNG and some occasions where you need a file anyone can open and simply don’t want PNG as your default.

    Well, in OSX 10.4 and onwards you can change the default screen shot format.

    Start by opening Terminal, located in /Applications/Utilities/Terminal

    Type in:

    defaults write com.apple.screencapture type image_format
    killall SystemUIServer

    Replace image_format with your selected format that you wish to change the default setting to. The second line reloads the default so that you don’t need to log out and back in again for the change to take effect. The next time you take a screen shot after executing both of these commands, it will be saved in the new format you have chosen.

    Below is a list of several popular image types and their commands in full should you wish to paste them.

    BMP

    defaults write com.apple.screencapture type bmp
    killall SystemUIServer

    GIF

    defaults write com.apple.screencapture type gif
    killall SystemUIServer

    JPG

    defaults write com.apple.screencapture type jpg
    killall SystemUIServer

    PDF

    defaults write com.apple.screencapture type pdf
    killall SystemUIServer

    PNG

    defaults write com.apple.screencapture type png
    killall SystemUIServer

    TIFF

    defaults write com.apple.screencapture type tiff
    killall SystemUIServer

    5 Comments »
  7. Adding an unsubscribe link to a Magento newsletter template

    magento logo Adding an unsubscribe link to a Magento newsletter template

    A quick tip for Magento developer’s here, in how to add an unsubscribe link into a newsletter template so that the person can unsubscribe from the newsletter if they chose to do so.

    Simply add {{var subscriber.getUnsubscriptionLink()}} into your template in order to output the link for the user to unsubscribe. This even works for people who aren’t registered customers of the Magento installation but that you’ve imported into your system as subscribing to the newsletter.

    Full example of a link in your template to unsubscribe:

    <a href=”{{var subscriber.getUnsubscriptionLink()}}” title=”Click here to unsubscribe from this newsletter”>Unsubscribe</a>

    7 Comments »
  8. Share on Twitter link

    twitter bird Share on Twitter link

    Ever wanted to give your readers, or your client’s readers a chance to share the post quickly on Twitter?

    The code is straight forward:

    <a href=”http://twitter.com/home?status=Currently reading ” title=”Click to share this post on Twitter”>Share on Twitter</a>

    If you’re using WordPress and want to automate this, simply use the following to insert the link to the current post in the loop into your link:

    <a href=”http://twitter.com/home?status=Currently reading <?php the_permalink(); ?>” title=”Click to share this post on Twitter”>Share on Twitter</a>

    61 Comments »
  9. Rescue Time is great for efficiency and productivity

    rescue time results Rescue Time is great for efficiency and productivity

    After seeing Rescue Time I had to give it a go and see what came out of it. The web app allows you to track your time spent across various applications and sites etc. and gives you your productivity and efficiency scores based on that activity.

    You set productivity on a scale of +2 to -2 in terms of points for each website and application you’re using. You can also group activity by tags and groups under groups that are pre-set or that you create yourself. Textmate for example is automatically under ‘Dev Tools’, as is Transmit. As I’m a developer I marked Dev Tools as +2, and Adium (instant messaging) as -2. Campfire would be -1, NewsFire -2 etc. until you have a good overview of everything.

    It doesn’t require this kind of extensive set-up, but it only makes it a better tool spending this much time with it. The personal account is free, though your data isn’t kept forever like the paid packages and they have both Mac and PC applications to support its use.

    I found overall that Rescue Time helped me enormously with monitoring, and subsequently increasing my efficiency and productivity. I’d recommend it to anyone who wanted to find out just how effective they are in their work without much of set-up.

    If you have any results of your own you would like to share feel free to talk about them in the comments. I’d be delighted to see how others are doing with any trials they’re running with Rescue Time.

    2 Comments »
  10. Some things I’ve found some recent CVs

    I’m probably a little over anal when it comes to checking CV’s that people have sent across. But I’ve gone through nearly a hundred from our latest job posting and I felt it would be of benefit to a few people to mention some things I’ve noticed on the vast majority of CV’s sent in applications or e-mails.

    1. Nobody pays attention to their fonts. A CV is potentially 100% text in its standard format, yet hardly anyone strays from the standard set of 5-6 fonts.
    2. It’s obvious when you use a template. Some may think it’s not, but it is.
    3. Ever thought of laying it out? Why not use a two or three column table for that list of skills you’re outlining? How about removing some of the babble and spacing it out a little?
    4. Personality is a dying art. Despite me declaring I wanted to see some personality from applications when they sent in their e-mail I saw very little.
    5. Nobody catered their CV to the role. Everyone sent in a standard CV. Nobody put in some text about why they’d want the role, or why they would be a good fit for it.

    Learn from their mistakes and adapt to them next time you send in a CV for a job you want to apply to. Make it interesting for the person on the other end.

    Have any opinions on the subject? Or advice for others? Bad mistakes you’ve made with your own CV? Feel free to leave a comment below, I’d love to hear them.

    Discuss This Article »