I have a fairly decent command over HTML/CSS and JavaScript, so the client side functions I am comfortable with. But I have zero server side programming knowledge. I have deployed a website on a free hosting service once, so perhaps deployment is something I can learn along the way. But I am not sure if I can handle everything related to web development. For instance, if suppose the client wants a e-commerce service, I will have no clue what to do. Or maybe they’ll need a service where the page must include user login and show different data for different users and I won’t be able to do that either. Of course I can ask them beforehand if they’ll require any of these on their site and either accept/politely refuse. My questions is, should I accept a project in the first place, and if I should, what all should I ask them beforehand [based on the fact that I can only do client-side development] so that I do not leave them hanging half way into the project?
In my opinion, you should take the job and you should also learn the backend basics. It’s very logic and you can do everything with the same JavaScript if you use Node.
if the client is hiring a front end developer then I totaly agree with @michelmarechal, I’d take the job and learn the basic of back end to begin with. and then dive deeper as you start to identify specific areas for you to get better at.
Just an addition here, considering you already know JS, you should look how the framework Express works. It’s pretty straight-forward and you can set things up quickly. Good luck!
If you’re being paid for the work, this is your best course of action no matter what the work entails. This is standard procedure in any sort of contract work (plumbing, electrical, etc.).
Customer satisfaction is a function of meeting expectations - you should fully understand your customer’s expectations before accepting the job. You can demonstrate your understanding by documenting their expectations in your proposal to them. Their expectations / requirements are like a FCC project’s “user stories” - the client won’t be satisfied until each requirement is met.
Client expectations / requirements define the scope of your project. In addition to itemizing the client’s requirements, your proposal also defines “done”. So you avoid situations where a client successively wants you to add “just one more little thing / function / tweak”. If they want more/less work/features, amend the proposal accordingly. You and the customer sign the proposal.
Having a set of clearly defined requirements also means you can measure your own performance (met vs unmet requirements over time, etc). And you can survey your clients after the fact re: customer satisfaction. Pour this performance data into promoting your business to future clients.
Disclaimer: I have 15 years doing contract admin and quality assurance professionally. It’s not glamorous, believe me! But if there’s money involved, you’ll want to nail down customer requirements before committing to a job.
Is node really that similar…? I have never ventured into backend so far. Also, I have been spoilt by jQuery. Will definitely look in to framework express. Thanks
I agree with everything. Thank you so much. I should get a clear understanding of all that is being expected. I really wonder though, what if after taking the communication forward and getting everything clearly understood and I feel I am unable to meet some - let’s say 30% - of their requirements? Wouldn’t it end a bit bitter to have wasted their time. I got this offer from a friend. I really want to do some actually work for experience sake. But after putting myself out as a web developer [they’re really not into this field to know the difference between frontend/backend] , they’ll assume I know. What I really look to find is something like a list of things people put up on sites that requires backend work. Like,
- User Registration
- Blog
- E-commerce [I’m not ever sure if all these require backend work. So ignore if not. Just giving an idea.]
If I have a list like this, I’ll be able to ask them, “Do you require me to do any of these?”. If they do I can straightaway say no. Else I’ll do.
The thing is, they’re hobbyists too. All they know is they want a website, which is for a musicians fan club. I will have to work with them for a while to actually get them an idea of the site and the user requirements. I just want to get this out on the table first thing before we proceed.
Hi mate. That’s the issue really. There’s no formal channel here. They want someone who build their website. No frontend/full stack lingo. I look for a list of things in a normal website that requires backend work. If I know I can ask them if so and so is required. If they don’t, I’d gladly have an actual project to work on. I’m quite eager to get my hands dirty, that’s really the issue. I don’t wanna let go of this opportunity, nor do I want to leave a bitter taste by letting them down half way down the line.
Take the job and then get details about their back end: what specific languages and platforms they use, if any, and crash course those, it’s not hard to do. If they use python+Django, or PHP for instance, learn the basics. You have the front end experience so you’re at least halfway there. If they don’t have specific back end requirements then better for you. Once you start the project do what you know then Google specific areas where you are unclear.
I hear you. But the client will be even more bitter if you deliver only 70% of what they were expecting! Get the requirements nailed down in advance to avoid wasting more of their future time, money and trust - you want them to remember you when they need future work.
Re: the back-end … Your hosting product/plan might make a lot of these decision for you. Cheap shared hosting usually (always?) gives you zero choice of, or control over, the backend. You will most likely get Apache, PHP and mySQL with shared hosting.
Mike Masnick at Techdirt has this business model that I think is really cool:
The Business Model = Connect with Fans (CwF) + Reason to Buy (RtB)
I think your fan site could achieve these two goals without its own back-end. Connect with fans via facebook feed, manually-updated show/tour calendar, free sample song downloads, “Follow us” buttons, etc. And the Reason to Buy is free stickers to first 50 people at shows, free merch at different album purchase tiers, etc. You don’t have to actually code in the ecommerce - just give fans a reason to go to some 3rd party ecommerce site to buy your client’s product.
Edit to add:
I don’t want to sound discouraging - I wish clients would come to me! I think that if you can get your clients invested in your concept, where your concept is founded on your current skill set, they will be happy with a purely front-end product.
@BluecodeA You are right, clients don’t care and/or understand the difference between Front-End and Back-End.
You should request detailed requirements for their fan website. Mostly likely, they would want a website where Users create accounts, set preferrences, access content based on the Users’ fan class/level/category, accept payments for merchandise, etc.
This is a huge undertaking if you are not familiar with Back-end development. You have to remember clients are paying you to deliver a product not to use them as a vehicle to learn a technology.
My opinion, if you don’t know Front-End, Back-End and Databases, then don’t take the job. I would rather turn down a job to avoid receiving a hit to my reputation. However, if they are willing to work with you as a kind of JOT, then work out a delivery schedule.
For most general clients a WordPress or other CMS will fulfill their requirements. A CMS will give clients a lot of power to update their own website without having to contact/pay a technical person each time they want to update their website thus adding value to your clients.
@BluecodeA I’ll be sort of the opposite end of the comments here. I’ve had to fix or totally re-code many projects taken on by a dev who was unable to either finish the work because of taking so much time or just doing a bad job.
Learning this stuff takes time. Sometimes it can take a month to learn the basics of something backend related no matter what people say. It’s all about how it clicks for you. That being said, I would encourage you to ‘know’ some way or another how to do what the client needs before taking on the job.
It’s good and great if you can finish it and do it right. It’s another when you end up not being able to finish and add a black flag to your reputation and self confidence.
That gave me a really good insight. I will see. I have told them loosely that there is some tech that I am not so familiar with. If they do return the communication I will see if I can offer them what they require with what I can do. Else I just continue my learning for now
Thank you I do agree that it is a huge undertaking for my current skill level. There’s always this pull to take up a job, but i’m quite clear that I will not unless I am able to deliver all that they’ll need.
Exactly. I am not sure if I can learn backend - even the basics - in such a short time. And they look like they’ll need the website soon. I will try to see if I can deliver all they know with my current skill set. Else I’ll politely refuse this project.
When learning you sometimes get stuck on some really simple thing, and having the pressure of client expectations will add even more to stress. Plus, (not only in programming, in many other fields too) client often has no goddamn idea how easy/difficult it will be to implement what he wants, and if you have very vague ideas about this yourself you might find yourself promising to get him a moon from the sky for a few dollars.
So, in my opinion, start learning back-end and only after you learn some basics go take such jobs.
If they do require anything that can only be done using backend, i’m convinced that I should refuse I definitely don’t think learning an entire side of web development while ‘on the job’ is my kind of thing.
hello guys, I agree with michelmarechal. If you should learn server-side programming. it’s not so much tough.
Take the job, use BAAS (Back end as a service). Firebase, grahpcool etc