Ask HN: Beginning freelance web developer: no clients - portfolio?

26 points by tripplez ↗ HN
A short introduction: I'm a programmer with appr. 8 years of experience mainly in desktop C/C++ apps, currently trying to become freelance web developer. 3 months ago I started my intensive (at least to my standards) study of web development with the goal to become "free" and work from home, with my own schedule, etc...

Since I'm constantly reading that a freelance web developer without online portfolio of websites/apps developed for previous clients is a big No-No, I was wondering how to get away with this chicken-and-egg problem of having no clients <-> having no projects done for clients.

My plan so far is to deploy my websites/projects that I'm currently developing (and will develop) to my personal site and use them as a "fake" projects with the idea that they are actually "real-world". Let me explain a bit about what projects I'm planning to develop:

1. E-Commerce site

* Features: product catalog (departments, categories), product attributes and images, product reviews and recommendations, admin panel, shopping cart, customer/user accounts, ordering pipeline, credit card transactions (DataCash, Authorize.net), amazon.com web services

* Technologies: PHP (from scratch - in order to learn), MySQL (stored procedures), Smarty templates, AJAX (shopping cart updates), keyword-rich URLs (from scratch).

2. Community site for people with shared interests (let's say books)

* PHP + Zend framework (mainly to learn how to develop an app from scratch with Zend), Unit testing (PHPUnit), JavaScipt (jQuery), Web services (amazon, google calendar, youtube)

3. Another E-Commerce site

* This time developed with Zend Framework for the learning experience

4. Custom CMS

* Zend Framework

5. Music mashup app

* Zend Framework, Web services (RSS, amazon, youtube)

6. Blogging app

* Zend Framework, JavaScript (prototype, scrip.aculo.us), Smarty templates, Image gallery, Google Maps

My plan: From these, the #1 (the e-commerce site from scratch) is 2/3 done, I'm learning a ton... With the help of a good friend (and beginner web designer), we'll beautify the site, but we're wondering what kind of e-shop (regarding the types of products) is most suited for a portfolio in order to impress future clients?

The million-dollar questions:

* What do you guys think of my plan for getting complete applications and experience in my portfolio?

* Which of the above projects that I've planned would you scrap, or which would you prefer?

* What about Drupal: does it worth it to create a couple of full-featured (a restaurant site, image gallery, job board, etc.) (but still "fake") sites with it in order to show that I have these skills. Or generally, developing with Zend+JS as a sort of "specialization" will be more viable for my goals?

It is essential to NOTE that I plan to start bidding for projects on the freelance site (elance, odesk, etc.) and use my "fake" portfolio of home made projects in order to get work.

21 comments

[ 3.3 ms ] story [ 52.9 ms ] thread
If you are planning on building something on your own, why not build it targetting a specific customer base & offer as service? (like any SAAS application). First of it, it won't be 'fake' as you are referencing it & you build valuable experience building a SAAS web app and will also learn a ton about taking it to customers. Think about it.
Build fake projects? Geez, I think you already have the wrong mindset for starting your own business. If you are going to put the time into building a site, try to monetize that thing (no fakes.) Who knows, down the road you might be making enough money off that site or collection of sites so that you can quit client work.

I also think that you are suffering from the classic symptom of trying to get everything just right before starting. When building a web app you want to get that thing up as fast as possible, even if it's ugly. Build a minimum viable product and connect with customers each step of the way. Test for interest, etc. You don't want to spend too much time getting everything correct just to find that you wasted your time because nobody cares for your idea.

Take a similar approach with web development. You could start out banging out sites in Drupal or Wordpress and each of these content management systems require more configuration than actual programming. You can learn these quickly and with minimal to no PHP. Your interest may be more in building web applications from scratch and there is a market for that, but you don't have to start out there. I know of plenty of people making a living strictly from building sites using already available content management systems.

Look through sites like Odesk and Elance for the types of jobs available. You might find the occasional gem in these places and even land a regular client. Don't feel bad for your lack of experience, you just need to be able to sell yourself and communicate well. Trust me, there are far worse people actually landing the jobs there.

Make sure to network through forums, Twitter and other locations where fellow developers and designers hang out. Twitter is especially good for getting a regular voice in the community and getting your name in front of people. Help out people in Twitter and forums and you will occasionally get someone hitting you up for doing some work.

As you are connecting with the community, look for ideas for building add-ons which might be in demand. This is a great way to give back and get your name out there. Offer some simple add-ons for free, but you might be able to make money by selling other add-ons.

As you beef up your freelance business and development chops, you can start moving more in the direction of building applications from scratch and perhaps working with other tools. There is a lot of exciting new things going on in the world of web development. I have been playing with Node.js a lot lately and it's a new community where you can more easily gain a good foothold as a pioneer as opposed to PHP. However, the market for this may not be as easy to get into at first.

There are also lots of methods I haven't mentioned or even thought about. Another big part of business is strategy and tactics. Figure out where you want to be and be creative in formulating a plan to get there. Do this and you might be able to leapfrog (greater income) people who have been doing this for a lot longer than you have.

Some fantastic advice in here, when I was reading the opening post I was having a lot of the same thoughts.

3 months for learning web dev is short, then there's all the nonsense like configuring servers you're going to have to learn too (which will be a much bigger time sink than you would guess). Might as well get paid while you learn it. Hell I've done an access DB for someone and I'd never touched it before, relied on my SQL skills to get going. They were the ones insisting on Access btw, not my recommendation :)

It's good to know what you don't know, but don't let it scare you out of getting going.

The only other thing I can add is local networking. Start going out to local business events. I got work the first one I went to. Obviously won't happen like that all the time, but I've come across 3 or 4 opportunities in the 12 months I've been doing that and I'm crap at networking, only costs me 2 nights a month and it's usually fun. Good ROI in my book.

Oh, and be careful of underestimating how long something will take.

Is there a book about all the aspects of server administration and site deployment for web developers?

I've researched a bit about that but haven't found any.

I agree completely that the admin/deployment aspects are not covered in the books, and from my experience I extrapolate that it can be a big issue and time sink.

i wish i had read this few years ago. great advice.
What about approaching some charity? (1) You learn to listen to real customer (2) and should be a good networking
If not for charity there's also the possibility of doing something cheap for portfolio fodder. Then again, cheap seems to bring out the wrong type of person you want to work for.

You could also subcontract for someone you know that does web development. They get less work to do, you get experience, you probably still get paid.

I find its better to not work for cheap, either charge full price or work for free, demonstrate your value or donate time, dont undervalue yourself.
The things you're making aren't fake, if they're functional, they're perfectly real. No one cares that you built it for yourself, you built it and that shows you know how. Dont call them fake, call them personal projects that demonstrate your ability.
That's why I've put <fake> in quotes ;) ... to emphasize that I believe (or hope) that these projects are perfectly real-world and relatively diverse in order to be able to start doing more similar real-world + real-money projects.

My question in regard was basically whether these "fake" personal projects can convince a prospective client that I'm for real. That is, if these personal projects are not on separate domains (like it will be if they were for real clients), wouldn't they look superficial, and yes, fake?

You could, relatively easily, buy 'real' domains and host them there. It's not 'that' expensive. $9/year for a domain.
One thing I wish I done while starting out as a freelance web developer is to Contribute to an Open Source project.
When we set up our agency, here's what worked:

* Work for cheap/free if you have to. You want to do this quickly, if you do a site for free the client will be more willing to go ahead straight away as it requires little decision making. We did a website for a primary school and a couple of photographers we knew to start off with. Charities might be good to approach for this.

* Fake sites sound like a good idea but why bother when you could actually help other businesses/charities and get 'real-world' experience of dealing with clients.

* You need to have low prices to start with. Small businesses are willing to give other small businesses a shot, but won't have as much budget as bigger companies. Over time you can decide where you want to take the business and start charging more as you build a reputation. Your aim at this point is to build a portfolio, so you can charge more later on. Our day rate has more than doubled since we started out.

* Classified ads on Gumtree or equivalent in your area. We met two of our biggest clients through classified ads (just be honest, link to your site and try and get across your ethos).

* Examine personal network, previous employers etc... they already trust you and may have work that can keep you going.

* Get involved with a co-working space, this is a great way to meet prospective clients and other small businesses.

* No one else ever seems to recommend this, but cold calling worked for us, though I admit it was painful. We got one of our biggest hedge fund clients via a cold call. We don't really use this any more as our business comes from word of mouth, but it's something you can do if there's a specific type of client you want and you know how to pitch them.

Remember this is one of the hardest bits, once you gain some momentum and build a portfolio it will get easier.

I'd recommend building a project for a friend (for free) to start your portfolio, they will appreciate it and you'll use it. Do this for a couple of projects. Most programmers I know think they're selling their soul when they do free work, but in this case theres no shame in doing it, its like doing an internship on your terms.
I've been freelancing and doing contract work my entire career - nigh on 13 years now. There's a mass of things I could tell you, but I'll try be succinct and tell you what I think will be most valuable.

Technology doesn't pay the bills. Clean code, good architecture, solid frameworks - they count far, far less than you wish they did. As developers, we're systems oriented, looking for the ideal approach, the 'right' way. 90% of clients are more worried about the right shade of cornflower blue. Don't lose your idealism about making use of the right tech stack, and where pragmatic, don't miss an opportunity to explain why it's important.

But don't make the mistake of thinking that's what counts for clients. There will be exceptions, but generally the guy with the purse strings isn't technical, and is in no position to appraise your use of tech.

You need to practice business as much as you plan to demonstrate technical competence. Negotiation, selling, conflict resolution (it'll happen), knowing when to walk away (that too) and probably the hardest thing - embracing risk. Many chant the 'fail fast' mantra, but I'd rather point out that our caveman brains are badly suited to accepting that risk is vital. Cold calling is terrifying, as is naming a price, telling a client they're wrong, and so many parts of simply staying alive.

Otherwise, go make some luck.

This is accurate. Depending on your situation, clients appreciate getting things done. A very good client of mine doesn't care what I do, as long as I get it done. It might take me three hours to research how a given legacy PHP CMS works just to do a simple code change, but as long as they can come to me with something and be sure I'll have it done at a not-too-great cost, even if it's not my area of expertise, they're happy and I'm happy.
> Technology doesn't pay the bills. [...] Don't lose your idealism about making use of the right tech stack, and where pragmatic, don't miss an opportunity to explain why it's important. [...] generally the guy with the purse strings isn't technical, and is in no position to appraise your use of tech.

You know, I've never understood this line of argument. The way I see it, the client is either clever enough to see technology really is not important to the problem at hand or too dumb to realize it is. If the former, you'd be guilty of overengineering and missing your client's objective (by being too costly, too complicated, etc). If the latter, why would you care to explain and "do the right thing" (the client will not pay for things he doesn't know are important)?

There are many technical people who feel underappreciated by their clients or management peers. I think the only solution is to find out if the wizardry really is needed in the first place; if it's not, do the minimum (if you accept at all); if it is, then let the bozo fail and either compete (you know something they don't) or leave for a better client/customer/mgmt. Will pay better and you get to keep your sanity and pride.

> If the former, you'd be guilty of overengineering and missing your client's objective (by being too costly, too complicated, etc). If the latter, why would you care to explain and "do the right thing" (the client will not pay for things he doesn't know are important)?

Too often developers do what we see as 'right' technically, which is not necessarily 'right' for the client / project. It's not something to be 'guilty' of, just something to be aware of. Although there is a balance - I've often fought for things and had them save the client's ass later.

And as for explaining why something is important - because the client should have an appreciation for why they hired _you_, not someone else.

If you don't have any projects to show them, just don't talk about it unless they ask, instead talk about what you are going to build them. That has worked splendidly for me.

I honestly believe that most people don't at all care what you've done before if you just talk to them like you know what you are doing. When you see a job post asking for some feature, just tell them how you are planning on executing it.

Also always ask at least one question if you can. It means you've taken an interest and that you seem like you want to cover every base. (or so I choose to believe) That especially works on dating sites.

When I started out in August I had virtually nothing to show because while I had done plenty of programming before, I had never executed and polished a whole project. All my experience was stretched out across years of tinkering, school and reading.

Alternatively, if you want to build on real things you could send me an email as I get overloaded with work sometimes.

Focus on what you don't know. With 8 years of C++ you don't need to be doing 50% of the things on that list. Web development isn't that hard :) For example, you don't mention anything about html, css or javascript. Or design.

If you think these things aren't important; think again. Most clients will be more happy with tight html/css that sticks to the design they agreed to than they will ever be with your server side code.

On that note: if you have professional designs and you get clients to sign off on them 100% at the start, you will have far fewer problems at the end. People tend to change their minds 500 times about what they want things to look like, and it will cost you money if you just let it drag on arbitrarily. First it's "can you please move that text over a bit", then it's "oh i really want to add a social sharing widget, if you don't mind", then "oooh yeah we really wanted a gallery of pictures here.. and please could they connect to my flikr account, and umm.." etc. If you have a contract (an image) of every page then they sign off it, or pay more at the end for adjustments (at double the rate, of course ;))

Hi.. Well.. maybe this will surprise you, but I am working as a Freelancer web developer, and it's really a rare thing to provide a portfolio to my client!

I am getting jobs through freelancer.. you can sign up here: http://www.freelancer.com/affiliates/ahmed613/

Facebook apps are a valuable source of income for me.. as most of my work is related to Facebook apps.. you should be good in the Facebook graph API.

Also there are Twitter and AWS APIs jobs there..

You will make on average around $20 to $30 on that website... but I recommend you to make your bids the lowest, so you can build a good reviews for your profile.

Just to give you some tips on how to get a job.. Once you bid on a project, you should send a PM message to the employer, explaining to him how you can achieve the job, and make that in a very simple and clear way.

Give a clear deadline to the client/employer and be responsive.

Believe me.. you won't need a portfolio.. I am getting jobs on daily basis from this website.. and it really works perfect for me!

As you go working, you will get more reviews on projects you build.. and that will be better than any portfolio.

Good luck, Ahmed.