Jump to content
Larry Ullman's Book Forums

How Does A Php Programmer Learn To Code For Hire?


Guest Deleted
 Share

Recommended Posts

Guest Deleted

Hi guys.

 

I've been doing PHP for a decade, so I am not a newbie, but I have never coded anything that was for somebody else. It's all been personal projects. So, I'm a newbie when it comes to coding for others. I want to change that and learn how. However, I feel bewildered. Coding for others is intimidating because I have no idea how to find clients, decide how much to charge, estimate how long the work will take, or any of that stuff. I've tried to learn, but the information I've found on Google is sketchy, at best. 

 

Are there any books on this subject? If not, how do freelancers learn?

 

Thanks in advance. (And sorry if anything sounded stuck up. I don't think I'm God's gift to programming. I'm just not a beginner.)

Link to comment
Share on other sites

That's a tough question to answer. Up till now, I have had a few clients, and am looking for full-time work as a web developer at the moment, so maybe my current position and experiences can be of some use to you.

 

The first client I found was while I was living in Japan. There was a really old website that posted various jobs in Japan for non-Japanese people, and there was a guy who wanted to make a website. I emailed him, told him my credentials (which, like you, included no actual work), and then offered to make the site for him for free, and told him that he only had to paid me if he liked the site. Luckily, he did like it, and I got paid, but the job wasn't easy and I learned a lot from it.

 

Specifically, the website itself was simple enough, but I found the concept of gold-plating to be very true. The client asked for a certain look and feel right from the start, and it wasn't until I was almost done that he changed his mind, and I had to rewrite a lot of code to fix it. This was partially my fault, as my code wasn't very reusable and easily adaptable at the time, but all the same, a site that took me a week to code ended up turning into a month-long project, with a lot of frustrations along the way. As such, I learned that when negotiating with a client, get the exact requirements up front, get them in writing with a signature, and make sure that the client understands that any changes after that will cost additional money.

 

My second client I actually found through these forums. There was a user that seemed to be having a lot of issues, so I sent him a personal message, telling him that if he needed any assistance beyond what the forum could offer, he could email me whenever. That turned into client #2. I'm still working on his site now, in addition to my own site and some other things.

 

Beyond that, whenever I randomly come across someone in any capacity that perhaps wants/needs something web related, I always offer my services. This has resulted in me helping with a couple of other sites/web apps.

 

I guess my point is, I'm no professional and I'm just starting out myself, but really, it does come down to taking the initiative. You have to be willing to poke your head out and say, "Hey! I can help you." You won't convince everyone, but if you're flexible enough and willing to do jobs for little to no pay at first, you'll eventually get some work. And once you get a couple of jobs with satisfied customers, I think you're good.

 

Does that help at all?

Link to comment
Share on other sites

You need to learn about development methods and business planning. There's been a lot of buzz over agile development and lean startup the last couple of years. There's a reason for that. Starting a small business i tricky, and can be overwhelming. This method and this approach gives you a simple, proven way of beginning with that.

 

Agile development in a nutshell:

  • Your start a project by defining the overarching requirements and deadline
  • You break the requirements down into smaller part-requirements with own deadlines.
  • You focus on the most critical requirements (functionality) first.
  • You rinse and repeat into the project is done.

It's very hard to calculate the time needed on the first project. This is where agile development shines. Since you've clearly broken your large project into smaller, manageable parts, you'll be able to gain insight into your overall time left. Am I behind schedule? Your list of requirements will tell you. You might not calculate correctly at first, but experience will make you better to the next time. Calculating time is almost impossible at first. The general rule is to plan for more time than you think you need. You might need to do research, fix bugs or re-write code along the way.

 

Git and GitHub is perfect for organizing projects this way. GitHub is a revision controll system based on commits. You create your over-all milestones (smaller deadlines) and assign your part-requirments to them in a logical way. This way, you can focus on solving one problem at a time in a given time-frame. (week-based for example) A milestone is reached when all requirements are "fixed" with commits.

 

That's a small introduction. I suggest you read up on the subject or watch videos on agile development. It may sound like a fancy buzz word, but it's only a super-simple way to break projects down into manageable parts. A couple of days of research should be enough to understand it.

Link to comment
Share on other sites

Antonio, I'm gonna disagree with you a bit there. At my last job, even though I wasn't an engineer, I worked as part of an Agile environment with the engineers, and simply put, it was a nightmare. I think that some of the concepts of Agile development are sound, but you don't need Agile development to implement them.

 

In that sense, I think a lot of your points are valid. Yes, it's important to always be communicating between team members. Yes, it's important to have version control. Yes, it's important to be able to break up big tasks into smaller parts. Yes, it's important to always be questioning what you're doing and why you're doing it. But no, you do not need Agile to do any of that.

 

Just my two cents.

Link to comment
Share on other sites

I agree. That said, you need some sort of planning in the beginning, and agile development is a method that easy to start out with. Simply put, you'll struggle without some tools in your toolkit, and agile development is a simple way to start out. Let's call a spade a spade here: Agile development is a method that has been proven successful for small start-up companies.

 

All projects fails without sound leadership and a solid planning phase. I wouldn't blame agile development in itself regarding your project. That's an over simplification at best. Agile development is not a fix-all solution, but a tool. You don't user a hammer on a screw, and you need to tailor the principles from agile development to fit your needs.

 

Agile development might not have been the correct fit for your project, but it does not take merits from the method.

Link to comment
Share on other sites

Well, my experiences with my last employer left a bad taste in my mouth, but I couldn't help but always think that the good parts of Agile were just good coding practices in general, and all the Agile-specific parts were just bloat and silliness.

Anyway, I've never worked on a big coding project with lots of devs, so I really don't know how Agile stacks up to other methods.

Link to comment
Share on other sites

Guest Deleted

Hi guys, thanks for the answers. I took notes.

 

Anyhoo I was wondering how you size up the clients environment and make sure what you code will work in it? Also, when do you decide that their environment isn't good enough and tell them you won't code for them unless they change it (e.g. they're running php 5.1 and you demand at least 5.3)? I've always wondered about this.

Link to comment
Share on other sites

Guest Deleted

I thought about that, but I realized that if they don't know me, they'll probably say no. They don't know if I'm legit or if I'm just some crazy lady out to mess up their account :(

 

I agree with you though insofar as this being the easiest solution.

Link to comment
Share on other sites

If that's the case, simply tell them the minimum version of PHP and MySQL required to do your job, and while you're at it, tell them that upgrading is free, and generally newer versions are more secure. That should get them moving.

Link to comment
Share on other sites

Guest Deleted

Hi again. Would you guys happen to know anything about confidence building? I'm shy with all people, except ones I know really well, and that could be a problem when I'm freelancing. I do just fine during small talk but if the conversation turns to anything more personal, I get worried about being criticized or outright attacked. This is not good. I need to learn how to not get hurt over criticism and be able to take a little verbal abuse. Any ideas?

Link to comment
Share on other sites

Geez. This is a web development forum, not a psychiatry one.

I hesitate to give any advice because I don't want to give any bad advice, but I'm an introvert by nature, and used to be quite shy as well. The only way I got over that shyness was by putting myself in situations that I didn't necessarily want to be in, but knew I needed to be in in order to improve myself and my position in life, thus forcing me to try to come out of my element, little by little.

That's about all I can say. Sorry.

 

But, again, like I said before, I started out getting clients either via email or through people I already knew pretty well, and I imagine that you could handle the same thing.

Link to comment
Share on other sites

Guest Deleted

I know it's not a psychiatric forum, but I asked so if anybody here has experienced a similar obstacle to freelancing, they could share their experience. Your advice doesn't have to be good or bad. Your experience is your experience. While I'd like to get good advice if I at least get to hear about people's experiences that's better than nothing. At least it helps me feel like I'm not the only person who ever had this problem. It can be encouraging to hear about programmers struggling just like I struggle and overcoming it. :) (To Clarify: Yes I read your story. Thank you for sharing.)

 

Speaking of advice, does anybody else have anything they would like to add? It doesn't have to deal with confidence it can be anything to do with freelance programming.

Link to comment
Share on other sites

I would add that you need to accept that freelancing will be very hard and very frustrating to start. To start, you'll do a lot of work for very little money. But you'll build up experience, which is more important in the long run. 

 

If you pay attention to what you do right, what you do wrong, what clients expect and how they respond, you'll learn a lot and get better. 

 

Try not to dream too big from the get go (start small, so that mistakes will be small).

 

Remember that clients/jobs aren't just a way to get money. Clients/jobs also build experience, build a portfolio, and, if you treat them right, become a marketing tool (they sing your praises). 

 

Never stop learning!

Link to comment
Share on other sites

Guest Deleted

Makes sense.

 

Should I start out offering to do work for free? Then maybe I'd feel less pressure? If I messed up at least it didn't cost the client anything, right? Or am I missing something?

Link to comment
Share on other sites

As a client, if I saw someone advertising themselves for free, I'd feel like I couldn't trust them, and their work would be too low quality. As such, you probably shouldn't advertise a price at all, and instead leave that for the negotiation phase, and always be willing to do something for free, if need be.

Link to comment
Share on other sites

You could start doing work for free for friends, family, and yourself. I would not try to start working for clients for free. Sets a bad precedent. Besides, when you just get started, what you'll actually be paid won't be much more than free, but it's symbolic!

Link to comment
Share on other sites

Guest Deleted

Hmmmm. Good to know.

 

Now I wonder what you guys think of hte following:

 

#1 So, let's say I found somebody who wants a small project done. Would this be ok to say when making first contact?

 

"Hi, I am a PHP programmer and I saw you were looking for somebody to do xyz project. I am interested and would like to know more." 

 

#2 And what should I do when they ask about my price? Would this work?

 

"I'm building my portfolio right now, so my prices are very reasonable. I'll do the whole job for $100."

 

Is it bad to tell them that? Is that price too high?

 

#3 When they ask me when the work will be finished, I should estimate 200-300% beyond how long I think it will take, right? So if I think it will take a week tell them 2 or 3 weeks? Yes? No?

 

Thanks in advance.

 

 

Link to comment
Share on other sites

These are just my thoughts, but:

 

#1: I wouldn't use the expression "PHP programmer", only because most sites require a lot more than PHP. I might say something like "web developer who specializes in PHP".

 

#2 & #3: I wouldn't come out with a price/timeline. I'd first tell the potential client that I'm interested in making their website and that I possess the required skills, and then I'd tell them that if they're interested, they should reply with the details of exactly what they want for their site as well as the deadline that they have. When sending that initial email, it might help to send them your resume (even if there is nothing web development related in it) and links to any sites that you've had any influence on.

Link to comment
Share on other sites

Guest Deleted

What would you do if they explained the project in-depth to you, and you realized your skills were lacking in some areas? What would you tell them (if anything)?

Link to comment
Share on other sites

It depends how lacking. If it's just something you haven't done but imagine you could do, don't sweat it. We all do that and that's how we get there. If it's something you have no idea how to do, you have to be honest. There's an almost given amount of lying in work and jobs (in my opinion), but it's almost best to be honest. Personally, I think it's much, much better to not get a job that you can't really do than to get it and hope.

Link to comment
Share on other sites

Guest Deleted

What should I do if, at first, the project sounds like a piece of cake, but after I start working on it, I run into something that has me stumped? One thing that I anticipate could cause this is the fact that not all server environments are going to be like mine. Maybe I could run into a permissions problem, or not being able to change the php.ini, or something. The first thing I would do, of course, is go on a PHP forum and ask for help, but what if the solution was over my head? Like, this is a bad example, but what if it involved really complicated OOP that's beyond my skill level?

 

Sorry for all the questions >.> I was really lost when it came to freelancing. :( Hopefully after this discussion is over I'll feel much more confident =)

Link to comment
Share on other sites

In my last job (I mean my last full-time company job), I had to work with engineers all day, and I guarantee you that most of them didn't know what they were doing or how to do their job 99% of the time. While I didn't envy them, and I don't think it's a position you want to put yourself in, Larry is very right in that every job you do (at least at first) will require some lying and will involve some having to figure stuff out you've never done before after you get the job and you are on a deadline.

 

I'm not saying it's fun necessarily, but in a way, that's a big part of how we learn (being forced to do something that's hard), and I'm sure that's how a lot of the software projects in this world are undertaken. Heck, even if you are confident that you know how to do everything you need to do, there are almost always certainly things that throw you for a loop and get you caught up much longer than expected. (Why do you think most projects always go over budget and over the deadline?)

 

Luckily, nowadays, we have places like this forum and Stack Overflow to save our arses when we're really stuck. As such, there's no concrete answer I can give you, but I more or less agree with Larry: If you think you can do it (or rather, if you think you can do most of it), and you really want to become a web developer/make websites, you gotta take the plunge and go for it.

Link to comment
Share on other sites

Guest Deleted

So then I guess it's correct to assume that giving up is never an option? Even if you have to go way over the deadline you get the project done and don't back out?

Link to comment
Share on other sites

If you get in WAY over your head, the responsible thing would be to hire someone else (at your expense) to do the job. The less responsible thing to do would be to tell the customer you can't do it, apologize profusely, and given them ALL their money back. You can maybe get away with doing that once, but it will hurt your business. If you get into that much of a jam twice, you're in the wrong line of work (in my opinion). 

 

Also, don't worry too much about server particulars being a problem. It does come up, but you're going to be more stymied by your own lack of experience and knowledge than you will by server differences.

Link to comment
Share on other sites

 Share

×
×
  • Create New...