Well,
in the first part I long and stubbornly poured from empty sand, pursuing only one goal - to recognize that in the failures of projects in terms of cost and time we are to blame for us, we and only we. There are no mythical uncles Vasya, guilty of all our troubles, not the customer brings the brain to us with our demands and changing priorities - all of us, our dears, we learn, then we successfully cultivate and protect from external influence. So if you will not argue with this, then let's go under the cat, let's see what is next on the agenda.
But for a start, tovarischi, I would like to comment on the
post that appeared on the site today. After reading it carefully and finding it interesting enough, I caught my eyes on this phrase:
Now the main thing about the evaluation of the order. The forums and comments often flies such a criterion for assessing the value:
“You estimate the cost of the package, add to it the cost of an hour of your work, multiplied by the number of hours spent. Something like this".
')
Gentlemen, get rid of this shit! You are no longer employees to count your work hours. The hour of your work is only the cost, according to this formula you will consider the work of hired employees when you have them. And it is necessary to work in profit.On duty (khe-khe) I had to face, and quite tightly, with the development of electronics. Everything is exactly there, as described in the post, because it was on that site that I was offered to do the work, which I ended up doing myself in 5 days, for 40 tr ... For periods of two less.
So here. Until the market is oversaturated, the main violin is played by the performer. He can calmly pick out the price out of his nose, he can poke around intricately and try to read the amount of the project in the squiggle, he can finally run his fingers through the NumPad and give it away for the cost of the work. No problem.
Unfortunately, I do not think this approach is correct, and here's why. Work - she and in Africa work. Freelance is good because a person does not have any standard office obligations to an employer, he can work quite comfortably from another part of the world, as well as independently determine the time he spends on work. Work, I stress once again. It is naive to assume that freelancing is freelancing. Well freelance. In short, freelancing, you understand, right? This is work. With all the obligations, with the salary that you receive, as well as responsibility. And to determine the customer according to the benefit it brings him, and hence the price tag can only be put forward as long as there are more offers than the performers.
Well, or until the employer realizes that giving a site and a piece of iron to freelance is almost the same thing. It is then that will come Kabzon this kind of attitude to the assessment.
I want to mention separately - I am not saying that the cost of work in a post is too high, on the contrary - in some places it is not high enough. I am not against the price tags, I am against the way.
Well, before programming, on the one hand, when designing solutions, especially special projects, it is necessary to solve a non-trivial pool of tasks, to assess the impact on the company for which is difficult, and on the other, there are much more performers working in a normal way. And if among the proposals for the development of 200 tr. ± 50 t.r. there will be a proposal for two Lemas, which appeared simply because the freelancer was not too lazy to punch a person on the Internet, and found out what he does - the likelihood that such a bone will immediately be thrown in ignore and no one will remember the person anymore, is not just high - so be it. So learn to work right away.
Well, enough of the lyrics, let's get down to practice.
Let's talk about the start of work, or rather how we get down to it.
As an offtopic - here again there will be a lot of repetition of the same under a different sauce. I do not want this idea to be just a couple of lines in the text. When fighting for normally completed projects, every detail is important, and the implementation of all items.
Start options
I wanted to talk about the theory, but for now it's a bit early. Let's better go over with you in practice.
Option 1. Yes, time is still ...
This is how we argue when we postpone the start of the project for an indefinite period. The reasons for this can be a lot - from the completion of the current project and ending with the 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-person 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, if only you do not plan a vacation (oh my God! Vacation! I want to go on vacation!), I don’t want anyone. And to search for a project takes time. There is also a reverse situation - a person with an interesting job that you want to do is knocking on our portfolio, and to refuse him - is more likely to lose it.
In addition, do not forget why we even read this pile of text. Projects are NOT completed on time. Accordingly, having planned for the end of the project, for example, 2 weeks, and increasing the time for a new client for this period, 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 the time for the implementation of a new project much shorter than what we expected at the beginning.
What to do - a reasonable question arises. Abandon the project? No, that won't do. So, you need to somehow isolate from the current project its real state. Not that which we consider to be real, but really real. How? I propose to answer this question to readers of the post. This does not mean at all that I will throw out an unfinished thought like this and will make "like a beautiful curtsy out of a stalemate." Just a bunch of people reading these lines, faced with similar problems, and for sure, on reflection, they could indicate markers that correspond to a particular state of the project.
For my part, I will insert several points:
The project is not completed, you should not take another- At the moment you are not sure that the project architecture is correct. The desire to rewrite the project arises, as a rule, three times during the work, even if the whole architecture is planned perfectly. This is just a feature of our programming soul, and there is no getting away from it. It manifests itself in different ways, from whom in the form of “I will rewrite everything from scratch”, and from whom - “yes, what is this class, 200 lines of everything, quickly refractorize it, and continue to write”.
- The period when you have to 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 the answer and get more information- You are expecting a customer comment. The possibility of the emergence 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, it is enough just to fix it. In the case when the error occurs when it is unknown when and why it is not clear, it is impossible to plan the time for debugging. Throw all the forces on the localization, to understand - this is the wrong use of a simple module, or you have to rewrite the floor of the project.
You can accept the next job- The project is awaiting final approval. Feel free to undertake, if the TZ is 100% completed. All improvements can safely roll out as additional work, and ask yourself to wait for the customer is quite possible and necessary
- The project has a final list of bugs, each of which is understandable. By the way, by intelligibility I mean crystal clarity, from where and how it turns out, 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 - immediately begin programming. Yes, yes, yes, and yes again! New project! Fresh ideas! Cool challenge! Hooray!
Well, for such people there is one simple rule - do not sit down to do a project before it takes 5% of the total time on the project. Do not put this time in time - your problem. Are your hands itchy? Take their case. Not by this, but necessary for the good of the project. No! Not that!
Take the pen / open Visio / open another hell knows what, and draw. Draw a block diagram. First, the simplest. Here we have a client, here is a server. And here is another customer. If, of course, the application is a client-server, but in any other one can find some of the largest blocks. Then break it into smaller ones. think how it will work. Provide a ready-made application.
Is there something? ...
Plan. Which project.
Today I will give a few recommendations on how to implement the plan. By and large, they are valid for many project management technicians. In the next article I will focus on planning the project, which really helped me, and which I will naturally promote as effective and generally miraculous.
When should a project plan be made? Then, when the project is longer than 3-4 weeks. You should not do serious planning work for a week's work, and you should not neglect the plan for a large project. In fact, the absence of a plan is a direct road to anarchy and the uncontrolled development of the project. Still hoping that it will pop up. Grieve. Do not swim out.
The plan should not contain excessive detail, on the one hand you will not take into account everything, on the other - you will need a separate manager to keep this happiness up to date. You do not need to write in the tasks “write a user creation method”, and then “write a method for deleting a user”. It resembles the diary of a third-grade student. Only at this age can you spend so much time on trifles.
The plan should not be too short. “To write a client”, “to write a server”, “to hand over a project” is a security plan if you set a goal to write a plan for the sake of writing it.
As practice has shown, the minimum plan for the simplest project is a plan of 10-15 points, but when writing even the most complex plan I tried not to exceed 200 points. After that, this is no longer a plan - this is war and some sort of peace.
Make a plan, sit back and close your eyes for 5 minutes.
With a new project.
Ps. Dear Habr readers. I would be grateful if you would share your thoughts and ideas, because, as it seems to me, you can only derive a universal formula for working with a project together. It is possible that I did not come across some things because of the specifics. So I will be glad to any additions and questions. Thank.