4 ms·
Well, based on what I can see on the internet, it'd be a no-hire from me. His resume is pretty crappy: http://www.andrewhorner.com/documents/ahorner.resume.pdf
by anthonyb 16y ago
Well, based on what I can see on the internet, it'd be a no-hire from me. His resume is pretty crappy: http://www.andrewhorner.com/documents/ahorner.resume.pdf http://www.andrewhorner.com/documents/ahorner.resume.pdf has nothing really concrete in terms of projects that he's worked on or code that he's written, libraries which he's used, just a bunch of HR waffle.
He has one semi-completed project, http://www.andrewhorner.com/sds/ http://www.andrewhorner.com/sds/ which might be enough to find him work as a flash programmer, but he's stopped work on that in favour of a new project... with no progress in 12 months - no blog posts, nothing.
And it gets worse - if I were looking for a Python developer, just his code on PyGAF would be enough to put me off.
a) He doesn't seem to understand Object Oriented style at all (look at the __update_pos method in http://code.google.com/p/pygaf/source/browse/trunk/graphics_engine.py http://code.google.com/p/pygaf/source/browse/trunk/graphics_... for a good example). In fact, looking at that code a second time, I'm not sure he understands how to use functions properly.
b) His code style is really nasty in lots of other ways - hard coded variables and lines smushed together so that you can't follow what's going on. Also, no docs - not even a blog post somewhere.
Now I've written some bad code myself, particularly early on when I was learning, but at least I didn't stop - I've been writing more code and getting better and better over time.
So this is I think the grandparent's point - if he was an awesome developer out of college and couldn't find a job, or was working on a side project, and still couldn't find a job then his griping might be justifiable. But if this is all he has to show for his "years of unemployment", and all he's doing is banging out resumes to anyone with a post box, then yeah, he's not likely to find much success.
- stevejohnson 16y agoCould you elaborate a little about his misuse of OO and functions? I ask as a CS student whose code doesn't get read very often. I want to be able to spot this sort of thing but don't see much wrong with his method of enqueuing function calls. However, two things do jump out at me as improvements: * Enqueue the function object and arguments rather than a lambda of the function (his version not actually being a "great hack as the comments claim"). Or perhaps use functools.partial(). * CONFORM TO PEP8 FOR THE LOVE OF JOHN CLEESE
- anthonyb 16y agoIn __update_pos, he has a series of if statements which look at the image filename to work out how far it's supposed to move[1]. This is the canonical warning sign that you should be using classes. The worst part is that he has created Ball classes - they just don't do very much: http://code.google.com/p/pygaf/source/browse/trunk/ball_object.py http://code.google.com/p/pygaf/source/browse/trunk/ball_obje... [1] Update: actually not - it's just working out the image rectangle. Which means that it's not updating 'pos' and that there's another 'update_pos' hiding somewhere non-obvious. A much cleaner way is to have something like, say, a Ball or Bullet class which knows how far it's supposed to go. Ditto for all of the canvas.create_foo classes in the second half - you should have objects which set themselves up, have update, draw and think methods and so on, inheriting from a common class. In terms of functions, you're pretty much on the money - there's a lot of function creation for very little gain in terms of readability or (at a guess) speed. You'd be better off either queuing dictionaries or strings as arguments for function generation, or else just using threads for your AI and having one method which handles all the drawing and updating within your environment. In addition to this, there are lots of places (__update_pos in particular) where he should be using functions (or methods) and doesn't - anywhere where there's repetition and/or common functionality, in this case updating the position of an image, really should have a function. Doubly so within large function or method bodies, like __new_population in http://code.google.com/p/pygaf/source/browse/trunk/optimization_ga.py http://code.google.com/p/pygaf/source/browse/trunk/optimizat... - "if blahblah:" followed by a huge chunk of code is just crying out to be a function.
- stevejohnson 16y agoHalf of the problem was that I was looking at the wrong function (update_pos() vs __update_pos()), so all I saw was one line of code... Anyway, thanks for elaborating!
- Locke1689 16y agoThe magic numbers (what the hell is 22?) are also not a good sign.
- anthonyb 16y agoI'm pretty sure they're the width of the agent's image. So the ball is 19x19px, bullet is 11x11px and ... everything else is 45x45px. #OOfacepalm