Tumblelog by Soup.io
Newer posts are loading.
You are at the newest post.
Click here to check if anything new just came in.

April 16 2012


7 Ways to Be the Programmer No One Hates

After reading Sandra Ordonez's MediaShift post "7 Ways to Get Programmers to Stop Hating You," my first thought was: Wow, good advice. My second thought was: How can we programmers get people to stop hating us? After 13+ years of working as a technologist -- from a junior developer to the manager of a couple tech departments -- I've seen first-hand that "tech hating," to use Sandra's phrase, is sometimes justified. Put simply: Sometimes techs deserve to be hated.

And so, I offer this list to you, fellow techies, in the name of Office Peace. Let's show the world that the stereotype of the rude, uncommunicative programmer is as outdated as the 15" CRT monitor issued to me at my first job. Let's earn some love. (Note: Please don't think that I'm holding myself up as a perfect example here -- these aren't things that I do every day, although I try, but they are good reminders for all of us.)

1. Add a new language to your resume: Human

Chances are your resume has a list of programming languages you know. As important as they are to your job, the language you use when you communicate with your co-workers is every bit as important. Being able to discuss the ins and outs of tail call optimization or the pros and cons of statically typed languages with regard to metaprogramming might make you a great programmer, but if you're not able to communicate meaningfully and respectfully with non-technical people, you won't be a great co-worker. And you'll be doing yourself a disservice; how are you going to get recognized for the great work you do if you're not able to explain that work to anyone who's not a programmer? And how are you going to change anything about the place where you work if you're not able to turn a complaint into a constructive suggestion? The answer is: You aren't. So do yourself a favor and start boning up on your human-to-human interface communications.

2. Remember your operating context

Make it your business to learn more than just the technical specifications for your projects. The more you can get a sense of the big picture, the more you can understand the context within which you are expected to make your brilliant technical decisions -- and the more likely it will be that those decisions are the right ones for this unique situation. When you're able to keep the big picture in mind, you become more than just an implementer -- you become a problem-solver.

3. Think like a client

No, I don't mean change your deadlines for no reason, call yourself at 5:00 on a Friday for technical support, or forget your password to the CMS. What I do mean is to try to put yourself in your clients' (or co-workers') shoes. Maybe they don't know the right terminology for everything, but they still need help; maybe they're under time and budget constraints that you don't know about (and that affect their decision-making); maybe they have a million things going on right now and the code you're writing is just one of them. In short, try to remember that you may not know every variable, and that you're not the only one with a difficult job.

4. The power of positive thinking, or at least speaking

Here's a ripped-from-the-headlines-of-my-job (well, my old job) scenario: Say your company's client has already signed a contract with the vendor of a terrible CMS before your project starts. You can say "that was a stupid choice" and await further instructions. Or, you can say "OK, they've made a choice that we wouldn't have advised them to make; now here's how we can work within that constraint to build them a great site." Saying "no, we can't do that" is easy. Saying "yes, we have constraints, and here's what we can do" is harder -- and about a million times more useful.

5. Would you like a side of Value with that?

Let's face it: Most clients (and non-technical managers) don't care how elegant your code is as long as that code works. And while truly great programmers are a rare breed, there are plenty of "good enough" programmers who can get the job done -- maybe not as well as you can, but good enough that your client can't tell the difference. So how can you set yourself apart? Ask questions. Specifically, ask the right questions to help you figure out (and build) what your client/boss/teammates really want, as opposed to simply what they are asking for. You probably know about tools, solutions and approaches from your past work that a client (or a co-worker) has never even heard of -- here's your chance to fully leverage your technical knowledge and skills to help them meet their goals in ways they didn't know was possible. Delivering what someone really wants is a great way to add value and differentiate yourself in a marketplace where any college kid can bang out a Drupal site and call it "programming."

6. Get Involved

Raise issues and ask questions at the beginning of a project, not when it's too late. If technical staff aren't typically included early on in the project process at your company, start making the case for why they should be, because it will save time, money and frustration later on. The more you can involve yourself during the early stages of a project, the more you're setting yourself (and your co-workers) up to succeed by identifying pitfalls before you're staring up from the bottom of one. But pointing out danger is only half the battle; use the time at the onset of a project to make suggestions, add value (see above), and demonstrate your worth to your employer. Making that killer feature work right is part of your job; suggesting a way to make it better/cheaper/faster/reusable/etc. is what will make them love you.

Mind The Gap

7. Mind The Gap

Technical people and non-technical people often suffer from a "failure to communicate" due to the ineffable nature of many tech words and terms. When a non-technical person asks you a tech-related questions, simply coming back at him or her with a string of tech-speak doesn't actually make you look smart -- it makes you look like someone with no communication skills. It pigeonholes you. It reinforces the stereotype of the unhelpful technical person who can communicate well with computers but not with humans. It makes you look less useful, and less useful employees aren't the ones who get the best assignments -- they're the ones who get cut when times get tough. Albert Einstein said, "If you can't explain it simply, you don't understand it well enough." Explaining something in a non-technical way doesn't mean dumbing it down, it means proving that you're smart enough to do your programming job in reverse: Take a set of technical concepts or instructions and turn them into ideas a non-technical human can understand. Brilliant!

Conclusion: Try A Little Tenderness

This list is a good start, but in the end if you still have the attitude that all non-technical staff are idiots, you're never going to justify their love (and you're going to hurt your career prospects in the process). You didn't learn everything you know the first time you heard it, so be forgiving when your non-technical co-workers sometimes ask you the same question over and over again. It's OK to tell them where to find the answer that you already sent them, but if that doesn't work, look again: Maybe you're not explaining the issue well enough so that it sticks. Practice transparency. Provide detail. Put a friendly face on the big, scary technical stuff. Remember that you are an ambassador for techs everywhere. So give us all a good name -- and earn that love.

What do you think? If you're a techie, what do you do in your job to try to keep the haters at bay? Is this list useful? If you're non-technical, what would you add to this list? What you are you doing to help inter-office relations? Tell us in the comments.

"Mind the gap" photo by Flickr user asparagus_hunter and used with Creative Commons license.

Jordan Hirsch has spent the last 13+ years as a lovable technologist with a focus on content management. Currently, Jordan helps non-profits accomplish great things on the Internet as part of the team at Beaconfire Consulting. He's also a musician and improviser, and blogs about music and technology at Wired For Music. You can follow him on Twitter at @tfish77, where you can read his thoughts about living in Brooklyn with his pregnant wife and not-pregnant dog.

This is a summary. Visit our site for the full post ».

September 21 2010


How to create a wordpress magazine theme using Twenty Ten – Part 1

This is part one of a short series outlining how to tweak a wordpress template to get some magazine style functionality.

I’m in the process of updating installations of wordpress for our students to use. In one sense it’s a stop gap measure as we are in the process of commissioning a more “industrial strength” system for them. But even with a new system in place I think we will still leave some courses the option of going the wordpress route. The magazine students for example, love the flexibility (and low level of tech) that design templates offer. It doesn’t seem to have done them any harm in terms of nominations.

When it comes to design, finding a wordpress template you like is half the battle, there are thousands out there. As more people use wordpress to get publications online, magazine style templates have become a popular search and a big growth area for premium template developers.

It’s tempting to pay for a template you like – nothing wrong with that. But it’s not as complicated as you think to get something up and running, out of the box, with very little tinkering. Especially if you build on existing templates. So I thought it would be useful to look at how easy it would be modify the standard Twentyten theme in to something with some magazine functionality.

Hacking around like this is how I learnt a lot of stuff about wordpress and it’s also a way to get your feet wet with a programming language. In this case PHP

To play along with this you’ll need:

  • Your own installation of the latest version of the wordpress.org software (as I write this it’s 3.0.1). Sorry wordpress.com won’t do.If you have webspace and your thinking of adding wordpress you could do worse than check out the wordpress codex entry on installing wordpress. Some hosts will offer automated installation of wordpress – very useful.
  • A text editor. Even word will do.

That’s it.

The design

The adapted Twenty Ten Theme

This is a screenshot of what we are going to end up with. It has a front page that has a featured post at the top and sections underneath for each category. You’ll also notice that I’ve tinkered around with the header to remove the big image. OK, it’s not going to win any design awards but this is more about exploring the concepts.

Normally you’d plan this kind of thing on paper first. You’d also work on the code in a development environment. An installation of WordPress that only runs on your machine, not the web.

If you’re feeling really brave you can set one up. Here are few resources

I’m going to assume that we dive straight in and edit the template live! I know, bad, bad, bad. All I’m going to say is do so at your own risk.

A word on programming and PHP

WordPress is written in a programming language called PHP.  This isn’t a programming tutorial (I’m not going to explain the basics of programming), but there are a couple of important things to know.

Spotting PHP

You may already be familiar with HTML. You can spot it in the raw code for a webpage because it is contained in pointy – brackets.


Anything here will appear as a heading two


In a similar way, you can spot PHP in the raw code for a webpage because it is always between  <?php …. ?>. Here’s an example:



But if you look at the source for this webpage in your browser you will only see HTML. Why don’t we see the PHP?

PHP is a server side language. That means the webserver looks at the page and processes any PHP it finds before it sends you the page. When we use PHP as part of wordpress themes we are using it to generate HTML.


When programmers write code they will always look for ways to avoid repetitive jobs. Rather than write the same code every time, they write a function. This is a set of instructions that can be called when needed.  The example of PHP above is a function:



Whenever we want to show the title of post we call the function the_title() and the server runs the code needed to get all the right information. The semi-colon is also important. Here’s another example:



This time it’s a function to show a thumbnail for a post. But there is also some content in the brackets. This is a parameter or extra information that the function might need. When the server runs the function to get the post thumbnail it tells the function it wants the thumbnail sized thumbnail. I know, sounds like repetition. We could also say:



That says ‘get the thumbnail but make it medium sized’. In case you were interested, the thumbnail and medium sizes are defined in the media settings of your blog. But more on that later.

There are hundreds of these functions in wordpress. Some are specific to templates, like the examples above, but others do the heavy lifting of making the blog work. We’ll be scratching the surface of the template functions here but I thought it was worth a little intro.

So we are going to be looking at a little PHP to call some functions to help us modify the TwentyTen template. Hopefully, now, that might statement might make a bit more sense.

How wordpress themes work.

You can get a really good overview of the way themes work from the wordpress codex and plenty of other websites around. A google search for wordpress theme tutorials should give you plenty of options. But let’s break it down in to a few simple ideas.

A wordpress theme is split in to parts:

  • the content you want in a structured form
  • instructions on the way you want it to look.

This information is held in a number of different files.  These are stored in a folder, one for each theme, in the WP_content/themes folder of your wordpress installation. The more complex the theme, the more files there tend to be.

In a basic theme, for example, you will have a file called single.php. That’s the content and structure part. This is a mixture of HTML and PHP. But the way it looks, the colour and style of text, position on the page etc is controlled by a file called style.css. This is a cascading style sheet file.

The Twentyten theme we are going to edit, has 18 content and structure files and four style sheet files. We wont be using all of these for this tutorial. We are only interested in two.

  • Main Index Template (index.php)
  • Stylesheet (style.css)

Accessing template files

There are several ways we can get at these files:

Any of those will do. But I’m going to work through on the assumption you are using the built in editor.

First thing to do is check you have the TwentyTen theme activated by going to Appearance >Themes. It should show Twenty Ten as the current theme. Then click through to the editor panel (Appearance > Editor).

The Theme editor

You’ll see a list of the 18 template files down the right-hand side and an editor window. By default this displays the Visual Editor Stylesheet (editor-style.css). All  you need to do is find and click Main Index Template or Stylesheet on the right to load up the files we will be working with.

Permission to edit.

When you look at the bottom of the editor window you may see a warning: – You need to make this file writeable before you can save your changes

You need to set the permissions on the theme folder!

This could be the biggest stumbling block of the process. But if you are serious about having a go at theme development, even tweaking like this, it’s worth getting your head round.

To remove the error message you need to set the permissions for the Twenty Ten folder to be 666.

Does that make no sense? You could try:

If you set the permissions correctly, the message should be replaced by a big Update File button.

You're ready to start editing!

Some final preparation

From this point I’m going to assume that you have a working installation of wordpress up and running. But before we experiment with the theme we need to have some content to work with. So if your blog doesn’t have posts yet you need to add a few posts to work with. You could do this manually using the lipsum.com, a lorem-ipsum generator and some liberal cut and paste for content. There are also a number of random content generator plugins available. For this exercise I used demo data creator.

We will also need to create some categories and assign the posts across the categories. I’ve used the following for this demo:

  • News
  • Sport
  • Featured Story

Once you have done that we are ready for Part 2 tomorrow, where we will start to edit the front page to get that magazine look.

As always, feedback and suggestions always welcome

August 27 2010


Suggestions for Data Visualization


I'm working on a project related to an open-source and public interest issue. I'm looking for the best tools for creating interactive data visualizations.

We're currently using Wordpress as a template for our site, and have started out with the Google Graph API, but it seems too limited.

Are there WP-friendly APIs or charting tools that will make our life easy? For the record, I'm not a coder, so should we also consider a different platform?

Thanks, Bill.

August 26 2010


Help with Data Visualization


I'm working on a project related to an open-source and public interest issue. I would like to know if someone is available as a volunteer (preferred) or as a paid contractor to support this project. Our priority is to create an array of user-friendly visualizations for very unique data.

Those who are interested can respond by email.

Thanks, Bill.

Older posts are this way If this message doesn't go away, click anywhere on the page to continue loading posts.
Could not load more posts
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
Just a second, loading more posts...
You've reached the end.

Don't be the product, buy the product!