views:

1317

answers:

15

Hi,

I have been recently wondering how should a personal site for a professional programmer look like.

I consider the professional part of my personal homepage an extended version of my CV. I want to put relevant content that would impress possible employers, attract other programmers to some open source project I've been working on and offer various ways to contact me.

Current plan for site contents is:

  1. CV
  2. Links to open source project I have participated in
  3. Tarballs of open-source code I have written
  4. Links to my profile in Linkedin
  5. My stackoverflow.com flair
  6. List of ideas for startups, open-source projects etc., urging people to contact me on the matter

I'm looking for ideas for relevant contents, suggested themes and technologies for building the site and links to great-looking programmers' sites. Any ideas?

Edit: You all gave me wonderful ideas, and I will use nearly all of them in my new site. When it's up, I'll post a link here for further comments.Thanks!

+3  A: 

Blog can be interesting to read.

x2
That's a nice idea, but what features should the blog have? On what platform? Can you link to some great programmers' blogs?I want to create a unique and well-written site, not just one of a million wordpress.com blogs.
Adam Matan
for example: http://weblogs.asp.net/scottgu/
x2
Yes, then can be interesting to read...
Dan Atkinson
Udi, whether the site is unique and well-written is up to you. The platform (wordpress, movabletype, etc) is less important than the content you add.
Scott A. Lawrence
+4  A: 

You might want to consider having multiple sites fulfilling several purposes and interlinking them rather than trying to maintain a single site with everything. This will give you some flexibility in your choice of technologies, allowing you to choose the most appropriate technology for your purposes. For example, my blog is on Blog Spot (http://farm-fresh-code.blogspot.com), but my academic page (required for CS students) is located on a University server (http://myweb.uiowa.edu/timv). The latter is basically static information about school and work, but it also serves as a place for me to post code snippets/demos that I talk about in my blog.

tvanfosson
+18  A: 

I would advise you to go on with a dynamic living site rather than with a static version to serve as "an extended version of your CV". People who will be visiting your page would want to learn about you, what you do and what you think.

Write articles, tutorials, publish your opinions on various programming problems in the form of a blog and update them frequently.

This kind of site will serve its purpose well.

As for the platform, whatever you like. Maybe you can write a site from scratch to demonstrate your abilities. It's not that much work really.

A few more considerations:

  • You wish to have a professional site because you (and employers) know a CV is not enough to provide the accurate image of a candidate. Why? Because a CV is static and factual, it just lists what has happened and what you did. That's it. It doesn't give a clue into your personality. I know it because some employers complained to me that if a CV does not contain at least a hobby section, they see the person as blank. You need to provide dynamics on your pages. The best way is to list your activities. Get an update feed for your open source projects. Write articles, tutorials, your thoughts about various programming-related problems in your blog. Let people see who you are and what you think.

  • Articles and tutorials will show you have knowledge and you are willing to share it. That makes a very positive picture of you. Also you are not afraid to publish your opinion. If you have a comments section then you are not afraid to take critics. That is also good.

  • Focus your site on professional issues. Don't write about how you decorated the house. Don't write for the sake of writing. If the guy is a professional blogger, read, a chatterbox, it can quickly be recognized. If you have nothing to say or to write about right now, skip it.

  • If you have a portfolio, like completed projects, make an explicit section "My work". Publish screenshots and a quick description, maybe in a form of a success story. Publish customer appraisals (ask them for permission first). Describe the projects you are involved with. No need to offer downloads directly, simply link to project pages.

  • Your CV and the LinkedIn profile will be useful. Better put them into "Contact/About" section, so that it doesn't draw all attention to it. Your SO badge however may be present on all pages as a sign of your community involvement. And hey, it's also dynamic, your rep is growing all the time. :)

  • Think of SEO when you write texts and structure your content. You may consider having an adjusted version of your resume right there on the page with your name and your location. If you are interested in career opportunities, consider that some employers/recruiters will be googling for "Java developer Jerusalem blog" to come onto interesting people. If you optimize for that from the beginning, you will win. Also watch your clickstream, may give you a better idea where to tweak.

  • Run on your own domain name. Something like udipasmon.blogspot.com will look lazy. Granted, not all developers are web developers, and not all are interested in form as much as in content, nevertheless, your own domain name will show you put more weight on your site.

  • If you can/wish, and if that would bring benefits for you, write your own site. That would especially work great for web developers, especially for those whose work nature does not generate ever growing portfolio from completed public customer sites.

  • And the most important: Make your site show your genuine interest in your profession and in running your place. Prevent your site crying out "This is my advertisement place, I keep it to attract people like you, hire me now.". Once I land upon that kind of site I usually never return. Make your site communicate the idea that you are an interesting guy, you know a lot, you can contribute much, you have interesting projects, you have fun with your work, you enjoy running your place and you are good in life. That will tease potential recruiters into thinking "He is real good. Do I have any chance of getting him?". Just don't give out you want it badly. Let it be a game. :)

Hope it will help and we will see a link to your new great site soon.

Developer Art
+1  A: 

It should look like Larry Wall's site :P

Jeff
Just after I write my world-famous programming language!
Adam Matan
Just Googled Larry Wall's site, and... agh, my eyes! I think I can safely say NSFW and not safe for anywhere else either. That... color!
Imagist
Made the same mistake. And apparently that colour is called chartreuse. I think I will remember that for the rest of my life!!!
calvinkrishy
Aaaaaaarrrrrggggghhhhhh!!!!! Lime green is now permanently burned into my retinas!!!
Paul Sasik
+1  A: 

Hmmm...

As well as your CV, you could provide blog linkage your Twitter account to provide users with a further insight into what you do between blog posts. . Some people may not want to do this though, especially if you're outspoken/controversial on Twitter!

Don't just include tarballs of your open source code, give links to the SVN trunk/github so that people can see your work!

You could have an ideas section, if you don't mind people stealing, and then making money out of them...

Dan Atkinson
+1  A: 

I think you should not make it too obvious that you're programmer. A blog with programming related contents is enough to tell the world that you are a programmer. You can put the CV and contact to the sidebar but don't ever make it your main content.

In the blog, tell about your projects. Tell about the progress and the plan and so on... and so on... Screenshot will attract more attention.

Make it more personal and less self advertisement.

http://www.joelonsoftware.com/ and http://www.codinghorror.com/blog/ are the best examples for me.

nanda
+4  A: 

Well-written documentation of the open source code you're referring to (directly accessible on your web site, not buried deep in the tarball) is probably something that would make your presentation as a programmer stand out.

If you have such documentation, show it! If not, slice off some of the time you've allocated to web site building to write such documentation.

Chances are, whoever browses your web site (a potential employee?) doesn't really care about the specific code you've written. And chances are that he is not inclined to wade through your code to examine it.

Easily accessible documentation can make you stand out.

If it's good it shows that you're a responsible and professional programmer who doesn't try to skip documentation.

And when you show genuine writing skills you're probably smart enough to write good code as well.

Thomas
+6  A: 

In addition to what you already have, I'd suggest:

  • GitHub - it's a great place to put your source code, and you can also pull in a feed of your recent commits, showing that your projects are active.
  • Wiki-style blog - Martin Fowler's 'bliki' is an excellent resource, part blog and part wiki. It's great because most of what's on there is essentially timeless. He's recording concepts and patterns rather than ephemeral thoughts. This shows an ability to communicate complicated ideas which is useful in a programmer.
  • Links to books you've read or reviews of books - useful because it shows you're committed to learning about your subject(s) of choice. Knowing that someone is reading up on, say, Erlang might not get them a job as an Erlang developer, but a Rubyist employer might still think that it's cool and useful knowledge.

To be honest, I could do with taking some of my own advice. My own site doesn't do all of those things, although it does have a 'lifestream' with copies of my Twitters/Upcomings/GitHub commits/etc. in it, which tends to draw in search traffic for topics I'm interested in.

Rob Knight
+1 excellent advice.
Adam Matan
+1 on books. Also on the learning theme, list any recent trainings or conferences you've attended.
bitFlipper
+13  A: 

First ask yourself what you want to achieve with your website and then go from there. I think that your list of contents is a pretty good start.

You don't necessarily need both LinkedIn and a CV since a comprehensive LinkedIn profile is pretty similar to a CV, but it won't hurt to have both.

Try to keep it focused. Keep your non-programming stuff somewhere else.

Get your own domain name. It's inexpensive and it looks more professional.

Provide a way for people to contact you. Either post an e-mail address prominently (you may get a lot of spam but if you've got your own domain you can use a separate address to avoid clogging up your main account), or provide a form that people can fill-in (pretty easy to implement using PHP).

Open source projects are excellent way of demonstrating your competence. Don't just put source tarballs on your site though, get a public source repository and project site (from Google Code, SourceForge, Launchpad, etc.). This is especially important if you intend to attract contributors to your projects. Make sure that you present your projects properly (screenshots, documentation) to get the full benefit from your work.

With a public repository you can also get your projects listed on Ohloh. You can then link to your profile there, which gives some kind of measure of your "worth" (not to be taken too seriously) as an Open Source developer.

I agree with Thomas' advice. Communication skills are an important part of developing software in a team. Well-written documentation will demonstrate these skills. Similarly, a blog can be a very useful tool for establishing a reputation as somebody who is knowledgeable about certain topics.

For what it's worth, here's what I have. It's just how to contact me and links to other relevant pages (blog, projects, LinkedIn, Ohloh, etc.). I have a separate domain for my projects with a bit more information, but probably my most useful tool for self-promotion is my blog, which has generated a couple of opportunities.

Dan Dyer
+1 for keep it focused. I generally read programming blogs to um... read about programming?
RCIX
"Here, here!" :) And the own domain name is good too.
Did you advise him to get his own domain name? Yes, you did! Worth +2 in my opinion but can only give a +1... :-)
Workshop Alex
+1  A: 

As my comment says, I'd recommend Focused Games as an example. Just putting it here in case you want to accept that as an answer. (Powered by wordpress and something called Green Park 2)

RCIX
+1  A: 

I agree with You, but: DON'T SHOW OTHER IDEAS FOR STARTUP - SHOW STARTUP ;)

Anyway: If you do graphics too, imho site should be one of your top design.

Rin
+3  A: 

First of all, make sure the design of your website speaks "Ease of use" to all visitors! It's your business card and if you make things complex, possible employers will look elsewhere.

Second of all, whenever you do something (write a blog entry, modify a page, do something else) then make sure the site shows a short time-table displaying when you modified it. With most blogs, this is automatic, but in other parts you might want to add timestamps. This is practical for employers because they will be able to see how often you're spending time on your own site.

Make sure you don't spend too much time on your own site! Employers will fear that you'd be working on your own site while you should do your job instead! If they notice that you're spending 3 hours every day online on your site, you'll stay out of a job for a very long time unless you can prove you're one of the few top programmers.

Add a robots.txt and make sure your site won't be crawled by Google. While it's great that people can find you on Google, you don't want to be a victim of identity theft where someone else pretends to be you when applying for some freelance job, just to take the money and run... To reduce the chance of identity theft, put a recent picture of yourself on your site, preferably the picture from your password.

Keep your texts short. No employers would want to read long stories. Actually, many members of SO probably won't read this answer because it's too long! Yeah, I know it's long. But when you've read to here then you've already seen several practical tips. :-)

Don't put too much personal information about yourself online. For example, publishing your home address plus information about where you're going to spend your Christmas Holiday might mean you'll have to buy a new inventory for your home when you return. It's not a big risk but it's bigger than no risk at all.

When publishing information about your girlfriend, parents, friends, relatives and other people, please make sure you notify them about this. It's just polite. Or keep them anonymous. Especially when you put pictures online, it's nice to warn people about this.

Make sure your site doesn't use copyrighted material from others. This even applies to small icons and simple code libraries. Check the license first to make sure you're allowed to use this material on your site. Preferably create your own content, though. Even though it might not look as good as the stuff from others.

And about your CV: make it available as a Word document, as a PDF document and have some pages that will allow visitors to just browse through it with an easy view. The documents should be short and plain. The site can be more complex as long as it's easy to navigate and doesn't display too much information. (Consider using collapsible panels to show/hide certain parts.)

Best theme to use is a generic design for your page. Look at SO for an example of this design: There's a header with generic functionality plus a footer with copyright information and contact information. Keep this on every page! (In ASP.NET you would add header and footer to a master page.) The middle layer would be divided by a left and right panel and a main area where the left panel is used for navigation and the right one for additional information and perhaps small advertisements. These panels would fit nicely in a sub-master page in ASP.NET. The center panel would be your page, which could contain anything you like.

If you use open-source/commercial blog software on your site then this blog is likely to be already shaped in this generic way. In this case, it's useful to put the blog on a subdomain of your site to make clear it's different from your main site. Or use a more complete CRM product and try to put your custom pages within the design of this product.

About graphical art and pictures... If possible, always create your own images. It shows creativity, even though you think your images suck. I've created plenty of images that I don't like, yet other people seem to disagree with me. So I'm no expert on the quality of my own work. :-)

When linking to other sites, it is polite to just ask permission first or look if the site implicitly grants permission to link to them. In some countries, people have been sued for adding links to other sites and the outcome of such a case in court is still unpredictable.

Last of all: make sure every page displays a FAQ, a copyright notice and license information. If possible, add a thank-you list referring to other people/companies to thank them for their contribution to your site. (Just to be polite.)

Workshop Alex
+1 just for the little self referential bit in the middle. Also a good post :)
Jamie Lewis
+1  A: 

In my view, unless you have some interesting views to share with the world, ditch the blog idea. Old sporadic blog posts only make your site look dead (and you lazy) if don't post regularly. If you haven't got the time or content to post regularly then save your effort. Content is king so if it looks like you're just filling your vanity site with crap to pad it out for a CV, that won't bode well.

Tarballs of open source projects are probably not necessary, as you could just link to the various sites (sf, codeplex, google code, github). A description of the projects would be good though.

You resume/CV in HTML and Word format would be good, and an about page. Some photos if you're into SLR, drawings, something like that.

And for graphic design - it's by a programmer for programmers, so both parties probably really don't care too much. Having said that a decent clean design (even if it's times new roman) and a navigation panel is better than a detracting one. The more prominent you are in the community undoubtedly the less important design is.

If you're genuinely not that interested in what you do professionally then a vanity site probably isn't a good idea, as it will look contrived in my view. So a site dedicated to fly fishing - if that is your thing - would atleast give a more honest view of yourself instead of 4 pages of code and three stale blog posts from 2008.

Chris S
+1  A: 

Display your StackOverflow Flair

Steve Tranby
A: 

Depends on what sort of programmer you are.

If I were a games programmer, I'd have a Silverlight app.

It would be full screen. You would open up into a small 3D world, and you would be playing a first person shooter. Weapons would consist of my skills. As you progress through the world, you will encounter bosses. To kill them, you must throw some of my skills at them (they would represent places I've worked). So for my first job, you may throw some basic HTML and JavaScript at it, and so on.

The levels would proceed like so up until you meet my current self, as the final boss in the game. At this point you would have all the same skills as me, (the boss representation of myself) and you must kill me, in order to contact me. At this time it would be a battle of wits, doom-style. Strafing would be involved, bunny-jumping maybe, and with any luck, and lot of dedication, you may kill me and get the red key.

Once having the red key, you would be able to open a door you saw a while ago, and inside would be my contact details, in all their glorious detail, ready for you to use to track me down in real life.

Noon Silk
I consider the downvoting of this post to be a testament to the lack of imagination of programmers these days. Quite sad, but carry on anyway! :)
Noon Silk
+1: For imagination.
Jim G.