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 must help my TL(Team Lead has experience with C# and is a beginner in Delphi) to make requirements for a Delphi Developer position. So I've start to document this. Until now the list is:

  1. Strong OOP skills.
  2. I/O operations,streams,handle exceptions, threads, data-aware components, reports
  3. Several algorithm problems(easy/medium)
  4. SQL selects, stored procedures, database design

Do you have others suggestions? Which are the "common sense" questions for a Delphi developer? Also, do you have any suggestions for questions for a Senior Delphi Developer?

PS: At this moment we work on Delphi 7 but we will upgrade to 2010/XE in April(I hope...)

Best regards,
Radu

share|improve this question
    
I'll accept the answer with the most points. Thank you all. +1 for your effort. best regards –  RBA Dec 16 '10 at 11:54

6 Answers 6

up vote 3 down vote accepted

Find out if he is a good general developer, give him a piece of bug riddled code and ask him to fix it, make him write some heavy algorithm, ask him to add a feature to a piece of spaghetti code (and perhaps also unspaghettify it a bit if there is time). In short, make sure that he shines at programming 101, if so, he can learn the rest.

Sure it is nice if he know a lot of the stuff you use already, but you don't get a good coder just because you can tick a lot of points on a checklist of meta programming skills.

share|improve this answer

Instead of focusing on specific language features, test their actual development skills. Give them a real-world problem to solve, even if it doesn't exercise everything delphi has on offer. They can always learn in a matter of days how a feature works, but they'll have a harder time learning how to solve problems.

Where I work we give a small development task in the form of a simple game. A one-page description specifies the rules of the game, and it's up to the developer to translate this to UI and business logic how they see fit. It's a true eye-opener, because many people that seem solid during interviews, with plenty of experience and know-how, completely fall down when faced with this task.

share|improve this answer

Delphi's a simpler language than C# (especially Delphi 7: no generics, for starters).

You don't say if you have any particular needs - UI development, or network stuff - so the given list's a pretty good all-round general development list.

One gotcha is the use of interfaces: does the developer know how they work? That the compiler automagically generates calls to _AddRef and _Release when interfaces come in/go out of scope, and when that happens, and how to avoid reference counting if it's not wanted?

When working with threads, is the developer aware that the Visual Component Library is not thread-safe and is assumed to run and be accessed entirely by the main application thread?

share|improve this answer
    
+1. forgot about threads. Working on this team need to handle a great variety of problems. So it's a 'all-around general development list' :) –  RBA Dec 8 '10 at 11:47
    
I don't get the relevance of Delphi being a simpler language. x86 assembly is simpler than C# but more difficult and more efficient, and I guess there are some fancier languages that are also easier and even less efficient. –  Trinidad Dec 8 '10 at 12:29
1  
In Delphi 7's case there are no generics, no lambdas (yes, fine, inner functions are a lot like closures, and you do have function pointers, and functions can close over global variables), and I'm sure that as I learn more C#, I'll find more bells and whistles that Delphi doesn't have. My point was that Delphi doesn't bring huge surprises to a C# person. –  Frank Shearar Dec 8 '10 at 12:43
1  
I've seen that living in the "unmanaged" world can be quite a challenge for some people. –  Trinidad Dec 8 '10 at 14:20

Working with images, memory management (pointers), ports (if there is any hardware), registry and ini files (stream and files), canvas and drawing on objects, threads - maybe, GUI design.

share|improve this answer
    
I would fail that test. Ask me about Indy 9 though, or Winsock, or other "guts" things and I'd be fine! So I guess what I'm saying is "great if you're looking for a GUI Delphi guy". –  Frank Shearar Dec 8 '10 at 11:09
    
Frank, I saw in your CV that you have worked a lot with Delphi. Can you please find several minutes and add a answer to this question? Thanks in advance! best reagrds, Radu –  RBA Dec 8 '10 at 11:28
    
Salivan thank you! +1 –  RBA Dec 8 '10 at 11:46
    
Indy and Socket programming - Thanks Frank, and maybe Internet robots are other items. Besides, most of requirements are available over the Internet. You do not need to know all of them. –  Salivan Dec 8 '10 at 12:16

I'd go with the following points.

  • A thorough understanding of the Object Pascal object model.
  • Understanding what function pointers and method pointers are, and how to use them.
  • Familiarity with the most common classes and components of the VCL and RTL and how to use them.
  • Understanding Delphi's exception handling, knowing what try..except and try..finally do, and what the difference between them is.
  • Knowing how to use the principle of object ownership to manage memory properly.

These are the fundamentals, and IMO anyone who has these points down can master any Delphi-related topic with a minimum of trouble. I'm specifically not including SQL or database/TDataset knowledge here because it's simple enough language that a competent developer can pick it up in a couple weeks, but only if he already understands the fundamentals.

share|improve this answer
    
Mason, can you please explain why are function/procedure pointers so important? I've used them only occasionally and maybe I don't know their importance. Thank you for the answer. best regards, –  RBA Dec 9 '10 at 8:46
2  
@RBA: If you do any GUI work at all, you're using method pointers all the time for event handlers. If you don't understand how they work you won't be able to effectively use techniques that involve setting or changing event handlers at runtime, for example. –  Mason Wheeler Dec 9 '10 at 13:22
    
That was my thought also, but I didn't want to say something stupid:) thank you. best regards, –  RBA Dec 9 '10 at 13:42

In my opinion, a good developer/programmer must know how to analyze a plain text of code.

Search Google and it will show you the way! A very good skill is how how to use the search engines if you are working for a 'all-around general development list'!

Documentation! It is also a good trait if they have it. You mentioned OOP before, so, ask them to show you their past project or a resume. Writing reusable code is strongly suggested. These two are the main issues for me in the company I am working in.

Also, count in having the sense of working with a team!

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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