
Ask HN: Beginning freelance web developer: no clients - portfolio? - tripplez
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...<p>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 &#60;-&#62; having no projects done for clients.<p>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:<p>1. E-Commerce site<p>* 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<p>* Technologies: PHP (from scratch - in order to learn), MySQL (stored procedures), 
Smarty templates, AJAX (shopping cart updates), keyword-rich URLs (from scratch).<p>2. Community site for people with shared interests (let's say books)<p>* 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)<p>3. Another E-Commerce site<p>* This time developed with Zend Framework for the learning experience<p>4. Custom CMS<p>* Zend Framework<p>5. Music mashup app<p>* Zend Framework, Web services (RSS, amazon, youtube)<p>6. Blogging app<p>* Zend Framework, JavaScript (prototype, scrip.aculo.us), Smarty templates, Image gallery, Google Maps<p>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?<p>The million-dollar questions:<p>* What do you guys think of my plan for getting complete applications and experience in my portfolio?<p>* Which of the above projects that I've planned would you scrap, or which would you prefer?<p>* 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?<p>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.
======
mdpm
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.

~~~
HSO
> 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.

~~~
mdpm
> 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.

------
bendtheblock
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.

------
jmitcheson
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 ;))

------
ahmedaly
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.

------
thirdusername
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.

------
pacomerh
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.

------
TamDenholm
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.

~~~
tripplez
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?

~~~
mgkimsal
You could, relatively easily, buy 'real' domains and host them there. It's not
'that' expensive. $9/year for a domain.

------
gexla
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.

~~~
mattmanser
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.

~~~
tripplez
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.

------
happyfeet
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.

------
iworkforthem
One thing I wish I done while starting out as a freelance web developer is to
Contribute to an Open Source project.

------
gtb
What about approaching some charity? (1) You learn to listen to real customer
(2) and should be a good networking

~~~
TuaAmin13
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.

~~~
TamDenholm
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.

