Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I just got a new project. It’s a WinForm app. And it’s interesting because I will have the possibility to learn how fish farms work and are managed. I will have to develop touch interfaces, and use datasnap to communicate and sync data between farm and office.

The development will be done in DELPHI win32, still not sure about the database, but maybe SQLlite.

So now comes the difficult part of the project, building it.

I am just finishing one. It took me a lot of time to do it and I am a bit “burned out”.

I will have time to relax, not much, but a few days.

What I am looking is some tips and tricks and possibly tools to be able to speed up the development.

It must be up and running in 2 months.

So what tricks do you use to speed up things?

share|improve this question

closed as too broad by gnat, Bart van Ingen Schenau, GlenH7, MichaelT, Kilian Foth Aug 25 at 10:08

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Don't spend time on programmers.SE :) Just kidding. I actually find that a little time here helps me focus better the rest of the time, as long as it really is just a bit of time. –  NickC Nov 29 '10 at 19:02

3 Answers 3

Make sure you set-up an awesome development and testing environment so you can rapidly prototype and execute code (quick turn-around time). So:

  • Continuous Integration server
  • Source control
  • Test environment that you can rapidly deploy to
  • A prototyping/wireframe tool
  • I'd recommend a BDD/TDD approach - get the user working with you daily, especially when you're whipping up the wireframe code
  • Make sure you're developing on a fast machine in an environment which is quiet and peaceful
  • Ensure you're hooked up to the various technical communities (e.g. SO) that can help you get unstuck quickly
  • Don't re-invent the wheel, 3rd party libs are awesome, especially open source ones

The temptation will be to start coding immediately (as you only have two months), try to spend a day or two setting yourself up first.

Good luck!

share|improve this answer
1  
I'd upflag this answer several times over if I could. –  Ptolemy Nov 29 '10 at 11:23
    
+1 for all the neat setup ideas –  Belun Nov 29 '10 at 16:26
    
I was contemplating voting to close as too broad and too vague. This answer saved the question. –  AShelly Nov 29 '10 at 17:51
1  
+1 for the "avoid coding immediately" advice - really, really important –  Gary Rowe Nov 29 '10 at 18:32
    
Yup. I think this is likely one of those cases where a month spent flailing around can save a day of getting things set up right. –  David Thornley Nov 29 '10 at 20:49

Think more - code less

Thinking time is the least expensive way to refine your design so that you won't have to do so much re-coding work. Before entering a single line of code, ensure you've done the following steps in some detail:

  1. You and your client have come up with a good collection of use cases (you know the types of user of the application and what they each want from it - admin, customer, order processor etc)
  2. You have identified the principal entities in the application (Customer, Address, Order, FishType etc), what needs to be persisted from them, and how they inter-relate so you can create a suitable database quickly
  3. You have identified the various gateways into the application (web service, direct sync etc) and you know exactly which third-party frameworks and technologies you need to use to achieve the objective (use libraries that you know well over those that you will have to learn)

Once you've scoped out your project in some detail then begins the rapid iterative approach common to the Agile methodology.

  1. Build a general structure to allow you to create the user interface to allow your customer to see what's going on (keep it basic and use minimal images)
  2. Using your very basic UI build the single most important function that your client is looking for (perhaps entering an order for fish). Make sure you can achieve a first cut inside 24 hours. Make sure it has an automated test process to prevent any regression failures.
  3. Show this to your client and get their feedback. Modify accordingly, preferably while they're sitting next to you.
  4. Expand out from there getting continuous feedback from the client as you work through the requirements (let the client guide you on what is important).

You don't need to pester your client with endless feedback meetings, rather set aside a time in the day when you will meet up (perhaps through Skype and a shared screen).

Each time you come to start on a new requirement, think carefully about how exactly you're going to implement it. Try to visualise how it will fit together in your head and work out any kinks. Once you're happy you know what you need to do, go at it and avoid any interruptions until you're complete.

Best of luck with your project!

share|improve this answer

Firstly, I would not think about using SQLite, I personally do not think this would be a good choice in your situation. I assuming this will be highly transactional, I would suggest, MySQL or MSSQL or similar DB.

In regards to tips to speed up development:

  • Try to identify parts of the application where you can re-use code, try to think "generically" and create functions/classes.

  • Try and put as much repeated "boiler code" into functions/classes.

  • Do not re-invent the wheel, if some-else has code that does what you need, use that, and tweak where needed.

Good Luck.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.