Freelance as a means of earning. Part 2. Getting to work

    Well, in the first part, I poured long and hard from empty to empty, pursuing only one goal - to admit that we, we and only we are to blame for the failure of projects in terms of cost and timing. There are no mythical uncle Vasya who are guilty of all our troubles, not the customer makes the brain to us with his requirements and changing priorities - all of us, darlings, do this, then we safely cultivate and protect us from external influences. So if you don’t argue with this, then let's go under the cut, let’s see what’s next on the agenda.

    But for starters, comrades, I would like to comment on the post that appeared on the hub today. After reading it carefully and finding it interesting enough, I caught my eyes on this phrase:

    Now about the main thing, about the evaluation of the order. On forums and in comments, such a criterion of cost estimation often flies by:

    “You estimate the cost of completing, add to this the cost of an hour of your work, multiplied by the number of hours spent. Something like this".

    Gentlemen, get this shit out of your head! You are no longer employees to count your hours of work. The hour of your work is only the cost, according to this formula you will consider the work of employees when they appear. But you need to work for profit.


    On duty (khe-khe) I had to deal, and quite tightly, with the development of electronics. Everything is there exactly as described in the post, because it was on that site that I was offered to do the work, which in the end I did myself in 5 days, for 40 tr ... For periods of two less.

    So here. Until the market is oversaturated, the performer plays the main violin there. He can quite easily pick the price out of his nose, he can poke his nose intently and try to read the project amount in zagogulin, he can finally run his fingers over NumPad and pass it off as the cost of the work. No problem.

    Unfortunately, I do not think this approach is correct, and here's why. Work - she and Africa work. Freelance is good because the person does not have any standard office obligations to the employer, he can work quite calmly from another point of the world, as well as independently determine the time he spends on work. Work, I emphasize once again. It is naive to think that freelance is freelance. Well freelance. In short, freelance, well, you get it, right? This is ra-bo-that. With all the obligations, with the salary that you receive, as well as responsibility. And to determine the customer by the benefits it brings to him, and from here the price tag can only be put forward as long as there are more offers than performers.

    Well, or until the employer understands that giving the freelance site and a piece of iron is almost the same thing. It is then that Kabzon of a similar kind will come to the assessment.

    I want to separately note - I am not saying that the cost of work in the post is too high, on the contrary, it is not high enough in some places. I am not against the price tags, I am against the way.

    Well, as for programming, on the one hand it is necessary to solve a non-trivial task pool when designing solutions, especially special projects, to assess the impact on the company for which it is difficult, and on the other hand, there are much more performers working according to the normal scheme. And if among the proposals for the development of 200 tr ± 50 tr there will be a proposal for two lyamas, which appeared simply because the freelancer was not too lazy to break a person on the "Internet", and found out what he was hunting for - the likelihood that such a bone would be immediately put into ignore and no one else would remember about the person, not just high - it will be so. So learn to work right away right away.

    Enough of the lyrics, let's get down to practice.

    Let's talk about the start of work, and more specifically about how we get to it.

    As an offtopic, here again there will be a lot of repetition of the same thing with different sauce. I do not want this thought to be just a couple of lines in the text. In the fight for normally completed projects, every detail is important, and the implementation of all points.

    Start options


    I wanted to talk about the theory, but it’s too early. Let’s better go over the practice with you.

    Option 1. Yes, time is still ...

    This is exactly how we reason when we postpone the start of a project indefinitely. The reasons for this may be a lot - starting from the completion of the current project and ending with banal laziness. And if in the latter case the advice is trivial - start right away, then on the first option I would like to dwell in more detail. As a rule, single freelancers or small studios do not wait for the completion of the current project, and begin to look for a new one. This is understandable - to stand idle, unless you are planning a vacation (oh my God! Vacation! I want to go on vacation!), Nobody wants to. And it takes time to search for a project. There is also the opposite situation - a person with interesting work that we want to do is knocking on our portfolio, and to refuse it means with a high degree of probability it will be lost.

    In addition, we do not forget why we even read this bunch of text. Projects are NOT completed on time. Accordingly, having planned, for example, 2 weeks at the end of the project, and having increased the time for a new client by this time, we, with a high degree of probability, will not finish the previous work in 2 weeks. This leads to the fact that the delay accumulates, leaving time for the implementation of the new project much less than that which we had expected in the beginning.

    What to do - a reasonable question arises. Abandon the project? No, that won't work. So, it is necessary to somehow isolate its current state from the current project. Not that which we consider real, but really real. How? I propose to answer this question to readers of the post. This does not mean that I’ll just throw an unfinished thought and do “like a beautiful curtsy from a stalemate”. It’s just that a lot of people reading these lines faced similar problems, and for sure, thinking, they could point to markers that correspond to a particular state of the project.

    For my part, I’ll insert a few points:

    The project is not completed, you should not take another
    • At the moment, you are not sure that the architecture of the project is correct. The desire to rewrite a project arises, as a rule, three times during the work, even if the entire architecture is perfectly planned. This is simply a property of our programming soul, and there’s no getting around it. It manifests itself in different ways, for whom in the form of “I will rewrite everything from scratch”, and for whom “yes, what’s this class here, 200 lines of everything, quickly refract it, and write further.”
    • The term when you should go for testing is more than 5 days. As a rule, after 5 days this will not happen, no matter how much we are sure of the opposite.


    The project is in an incomprehensible stage, it is better to slow down with an answer and get additional information
    • You are expecting a customer comment. The availability of the possibility of a new project is the strongest incentive to get it and evaluate the front of improvements.
    • The final version has wandering bugs. Crash, if it is stably reproduced and perfectly localized, just fix it. In the case when the error occurs it is not known when and it is not clear why, it is impossible to plan the time for debugging. Throw all your efforts to localization to understand - this is an incorrect use of some simple module, or you will have to rewrite a half-project.


    You can agree to the next job
    • the project is awaiting final approval. Feel free to take it if the technical task is 100% complete. All improvements can be safely rolled out as additional work, and you can and should ask yourself to wait for the customer
    • the project has a final list of bugs, each of which is understandable. By the way, by understandability, I mean crystal clarity where it comes from and how, and not “hey, but this is probably that class!” garbage, 5 minutes of work "


    Option Two. Forward! For the motherland! For Stalin!

    The second option, in which the project also suffers, and which occurs as often as the first, is to start programming right away. Yes, yes, and yes again! New project! Fresh ideas! Cool task! Hurrah!

    Well, for such people there is one simple rule - do not sit down to do the project before 5% of the total time for the project passes. Do not lay this time on time - your problem. Are your hands itchy? Take them to business. Not in the same way, but necessary for the good of the project. No! Not this one!

    We take the pen / open Visio / open another horseradish knows what, and draw. Draw a block diagram. First, the simplest. Here we have a client, here is a server. And here is another client. If, of course, the application is a client-server, but in any other you can find several of the largest blocks. Break it into smaller ones later. think how it will work. Imagine a ready-made application.

    Is there anything? ...

    Plan. Which project.

    Today I will give some recommendations on how to implement the plan. They are, by and large, fair for many project management techniques. In the next article, I will focus on project planning, which really helped me, and which I will naturally PR as effective and generally just wonderful.

    When should you plan your project? Then, when the project lasts more than 3-4 weeks. Do not do serious planning work for a week, and do not neglect the plan for a major project. In fact, the lack of a plan is a direct road to anarchy and the uncontrolled development of the project. Still hoping it will come up on its own. Sorry. Do not come up.

    The plan should not contain excessive detail, on the one hand you won’t take everything into account, on the other hand, you need a separate manager to maintain this happiness in the current state. It is not necessary to write “write a method for creating a user” in tasks, and then “write a method for deleting a user”. It resembles a schoolboy’s diary - a third-grader. Only at this age can you devote so much time to trifles.

    The plan should not be too short. “Write a client”, “write a server”, “submitting a project” is an indicative plan, if you set a goal to write a plan for the sake of writing it.

    As practice has shown, the minimum for a simple project is a plan of 10-15 points, but when writing even the most complex plan, I tried not to go over 200 points. After which it is no longer a plan - it is war and some kind of peace.

    Having made a plan, sit back on a chair and close your eyes for 5 minutes.
    With a new project.

    PS. Dear readers of Habr. I would be grateful if you could share your thoughts and best practices, because, as it seems to me, a universal formula for working with a project can only be deduced together. It is possible that I did not come across any things due to the specifics. So I will be glad to any additions and questions. Thanks.

    Also popular now: