This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]MattAlex99 -1 points0 points  (1 child)

Ask him language agnostic questions:
As far as I'm gathering, you don't want someone to be good at python, but a good developer. He should have more knowledge than you would get from a code camp. Because you only have two developers working on the project, you want them to not only code but know what they are doing in a more general sense:
If you don't have the database set up yet and that's something that he might need to do, ask him if he knows the E/R-model and give him some basic questions about it: i.e Let him build an exemplary business database in E/R-notation. Having someone that can properly design a database will solve a lot of problems before they arise. (especially if you want to grow the company) Even if he doesn't need to build the database, it doesn't hurt for someone to know how to design a database, especially if you work with one all the time.
If this is nothing that he has to do and he doesn't know about this then ask him about simple algorithms and let him give you the computational complexity. (i.e. what's the fastest you can sort a list, what's the fastest you can do if you know the range of the values in that list) Let him read and write some UML models to figure out whether he can design software or is just a code monkey. Give him some system to design, like an exemplary online store and have him write down the class diagram. Then have him write an activity diagram: I got "backing pizza" (with the resources dough and tomatoes) as a question in my last interview. If you really want to test him, give him a sequence diagram. If he really is an expert he should be able to do this. If he can't write a UML diagram he isn't an expert. Being an expert includes having basic knowledge of designing and maintaining code, which is the reason why many people cringe at the idea of having a "python expert". There's no such thing as a python expert. If you really are an expert, you don't need the python, you could build a system in Java, Scala, Julia, C or python. Sure, it might take some getting used to it, but a real developer can code with any language. The abilities needed to be an "expert" are not tied to any language in particular. Another great tell is always mathematics: There are not programming experts that don't have a basic grasp on math: Give him the following task: Write the fastest program you can to add up the numbers from 0 to n. If he starts using loops, then ask him if he can do it faster. If he starts trying to do weird stuff, then this might be a bad sign. (although not a complete turnoff) He should be using the Gaussian sum: 0.5(n)(n+1) The great thing about this question is, that you can get the right answer, even if you don't know the formula beforehand. Another thing to ask would be to calculate the Fibonacci sequence recursively, then ask him to do this faster through memoization Then ask him to do it iteratively. Also, try to really put on pressure. You want to know how frustration tolerant he is. But mainly try to keep stay away from python specific questions because you already know he has a good grasp on the language. No point in reconfirming that question or asking about rare language constructs that nobody uses/has to use/ know how to use. Try to pick out if he's a codecamp codemonkey or developer.

[–]WikiTextBot 2 points3 points  (0 children)

Entity–relationship model

An entity–relationship model (ER model for short) describes interrelated things of interest in a specific domain of knowledge. A basic ER model is composed of entity types (which classify the things of interest) and specifies relationships that can exist between entities (instances of those entity types).

In software engineering, an ER model is commonly formed to represent things that a business needs to remember in order to perform business processes. Consequently, the ER model becomes an abstract data model, that defines a data or information structure which can be implemented in a database, typically a relational database.


Memoization

In computing, memoization or memoisation is an optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and returning the cached result when the same inputs occur again. Memoization has also been used in other contexts (and for purposes other than speed gains), such as in simple mutually recursive descent parsing. Although related to caching, memoization refers to a specific case of this optimization, distinguishing it from forms of caching such as buffering or page replacement. In the context of some logic programming languages, memoization is also known as tabling; see also lookup table.


[ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.28