Page 1 of 1

Never enough time - or is it just me?

Posted: Mon Feb 06, 2012 3:29 pm
by merendo
Is it just me, or do all software developers never have enough time for their projects (non-private ones)?

To me, it always seems that the deadline is already way too close with far too much work yet to be done, but the customers want their product on time or they'll go mad. How is anyone supposed to deliver quality this way? Not to mention stay sane in the long run?

Any thoughts?

Re: Never enough time - or is it just me?

Posted: Mon Feb 06, 2012 4:09 pm
by Foz
You invent red tape and flow systems which in the end just multiply the time taken, with the number of steps and the number of iterations that are required.

If there still isn't enough time, when asked you can deflect all flack to the managers who are supposed to be managing all the red tape and thus, it's no longer your problem, plus you get as much time as needed. :twisted:

Re: Never enough time - or is it just me?

Posted: Mon Feb 06, 2012 7:05 pm
by merendo
Sounds simple enough. Doesn't work for me though. When I have to make an estimate of how long a project will take, I can either give a realistic estimate, or one which satisfies the managers. Plus, there is always a good margin of error, since you never know what bugs will come up and how long it takes to fix them. Sometimes you're "lucky" (or is that "good"?), and sometimes you have tough luck. How do you handle it? I actually got headaches today from being unable to keep up with schedule. I went home knowing that I wouldn't get anything done today anyway.

Re: Never enough time - or is it just me?

Posted: Mon Feb 06, 2012 9:01 pm
by Foz
It sounds like you've made a rod for your own back, by completing things extremely quickly, and now they expect things to be done quickly from here on.
Then you talk to other companies who then want 6 weeks to change a line in a text file.

I advise that you slowly increase your estimates - so if you expect that changing something make take you an hour - it becomes 2. If it'll take you a day, it becomes a day and a half, and from there you keep increasing the estimates.

The alternative is you become extremely picky about the specs, and toss them out if they aren't defined in the greatest detail. This is something that I have found to be true: the bigger the spec, the more time you can have to allocate to it. Also the bigger the spec, the more chance it has of dying a death with the requestor because they can't be bothered, and so it never darkens your door again (laziness is an excellent aspect of humanity to appeal to).

A case in point was where we were asked to create, and I kid you not, this was the spec in it's ENTIRETY: "Generate the management report." When did they want it? Yesterday.
Now we knew what they were after, but throwing it back at them then gave us 2 more weeks for them you come back with "A job success and failure summary with drill downs."... which we already knew. So throwing it back AGAIN we finally (I think it was about 5-6 months later) got an excel spreadsheet with all the layout and formulas, and an explanation of what a manager was doing to generate that report. They then realise what is being asked of you and then don't pester for unrealistic timelines.

Re: Never enough time - or is it just me?

Posted: Mon Feb 06, 2012 9:48 pm
by merendo
That all sounds pretty familiar. I could tell you a story or two here, too... For some reason, people not involved with computer programming (and I don't blame them for that) think that we software designers (I even go so far as saying 'designer', usually the task of designing the software and actually writing it falls on the same person, which is not what the inventor intended, I think) can read minds, and that we can just magically put together software exactly the way they want it, in no time. I guess part of the problem is also, that a software isn't done just because it works superficially - it has to be made robust, "luser" proof, and in some cases, even reasonably hacker proof. I believe that this can take up as much time as just getting the core functionality to work. What do you think?

But it seems you are in a fortunate position of being part of an entire team of software developers, and therefore benefit the strength of the team. I'm alone, and therefore have no one to back up my time estimates, so they usually just go away as being exorbitant, or, like I said, they're gonna give me headaches.

Just for the reference, may I ask how long you would say would the following rather simple piece of software take: A software which connects to an existing MySQL database somewhere in the web, fetches a few rows of data, providing them in a list, on which the user can click. When he or she does, the software has to fetch some more data, present the user with that, then allow the user to add a row into the database, along with a fileupload via FTP, together with automatic image resizing to a handful of different definitions. Just a simple digital picture galery, just the backend part. I said ten hours. Is that too much?

Re: Never enough time - or is it just me?

Posted: Mon Feb 06, 2012 10:31 pm
by Ramihyn_
It's usually less a problem of time, but a problem of money. The project triangle rules apply: http://en.wikipedia.org/wiki/Project_triangle

When i was still in university 15+ years ago, we got the first mails from russian software developers offering outsourcing for 2$/hour. Add to that the fact that software can be developed with low infrastructure cost and easily be transported across the whole world and you have the reason for your problem *g*

A lot of recent efforts in software technology is going into making the development more efficient and secure. It has become a true "industry" several years ago with all the negative aspects.

Re: Never enough time - or is it just me?

Posted: Mon Feb 06, 2012 10:48 pm
by Foz
At work, we are a team of two. And we are having the same problem that you are having - it's only recently that we have started digging out heels in when they requested a Garage manager, a HR application replacement and a Claims System - all in December last year for the start of the year. Along with all the other requests that we manage from day to day as well. I know where you are coming from.

Yes, the problem is the 20/80 rule - 20% content, 80% software robustness.

Anyway, as for your question, lets boil it down:
A software which connects to an existing MySQL database somewhere in the web
- is this server set up, or do you need to do that as well? If not, then about 3 lines of code.

Fetches a few rows of data
- Another couple of lines

Providing them in a list, on which the user can click
- Form design - give it about an hour for making it perfect
- Wiring up events - a few more lines of code.

When he or she does, the software has to fetch some more data
- A few lines of code

present the user with that
- A report of some sort? It's a bit vague - if more form design, again, give it about an hour.

then allow the user to add a row into the database
- sql insert shouldn't take more than a few minutes

along with a fileupload via FTP
- shouldn't be difficult

together with automatic image resizing to a handful of different definitions
- potentially extremely difficult to do it well - how is this to be handled? On the server? On the client?

So in total, I would say with all the infrastructure set up ready, (that is you're not building the MySQL database, the tables, the design - it's ready for you to simply drop everything in... about 3-4 hours, factoring in that most of it is the UI interface and making sure that you aren't going to be sending crud. Double it for hidden factors that you haven't discovered yet, and your at about 6-8 hours. At that point I'd call it a days work (8 hours).

Now here are the potential time sink extras.
Creating the MySQL db... add about an hour or two - it's usually done in about 10 minutes, but then as I go through the creating the program I find bits and pieces that I've forgotten about and keep changing the db design.

Creating a server to handle the external connections (for security, so you don't have to put a direct connection to MySQL to the live web). Depending on how complex the information is, say somewhere between 1 and 5 hours. For what you've listed, it should be a simple list, detail & insert, so about 1 hour in total.

Image Resizing... if you have an image resizing tool that you can use, then this should be a walk in the park - you just need a folder scanner and upon upload, process the file to the required size(s), about an hour or two. On the other hand, if you have to write an image scaling yourself... well, I'd add a couple of days. At least. Unless you eat image scaling for breakfast that is. :)

Re: Never enough time - or is it just me?

Posted: Tue Feb 07, 2012 7:59 am
by merendo
What is a Garage manager? Do you use PureBasic for all your software development? If so, whose decision was that? Because I'm still under the impression that in businesses, PureBasic isn't recognized as a valid, capable and powerful programming language, as opposed to, say C++ or Java. I think that's sad, because I can do all the stuff in PB I want to, especially with full API access.

I suppose ten hours was a bit high, I also think I could have done it somewhere around 8 hours. I intended to use the integrated resizing feature of the 2D drawing library in Purebasic, I guess that would have done.

Re: Never enough time - or is it just me?

Posted: Tue Feb 07, 2012 11:45 am
by Foz
A garage manager is simply something that manages a fleet of vehicles, when they have to go in and out of garages across the country for 6 week check ups, maintenance and repairs. Couple with tachographs, daily driver checks, and many many other legal requirements, it quickly grows into a monster CRUD application (Create, Retrieve, Update & Delete) - not complex, just lots and lots of form design and database work.

As for language, no, we don't use PB at work, we use VB.net. Two things would be required for even considering PB, first is a forced OOP mindset. The guy I work with is now far to brainwashed to use anything else now. The other would be a gui designer, with excellent gui-code integration.

In the back of my mind, I remember that at the end of the day, all programs will be boiled down to assembler, which is neither OOP or valid to use.

For all my personal projects, side business programs and everything else I will use PB - currently I'm using PB to generate cgi-bin programs for a web site project rather than use other... web languages - I need speed and that is something that interpreted languages fail on.

Re: Never enough time - or is it just me?

Posted: Tue Feb 07, 2012 12:48 pm
by merendo
Well, having attempted to teach myself Java, I have to say, there are certain advantages, for example, I like the tight integration of the GUI designer with the generated code found in the Netbeans IDE. Perhaps we'll one day see something similar in PB, so you can modify the GUI and it will dynamically update the code. But most of the time, I could accomplish a task with just a few lines of code in PB, whereas in Java I need an entire web of code scattered across several files. It could be that I'm too novice though.

I do appreciate your insights, and I wish you good luck with those impatient customers. I'll do my part in satisfying one of them now.