Ask HN: Beginning freelance web developer: no clients - portfolio?
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 ] threadI 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.
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.
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.
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.
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?
* 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.
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.
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.
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.
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.
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 ;))
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.