views:

92

answers:

2

So everybody and their sister is now a "Magneto Expert" lol...

It seems like many folks with such claims have (kind of) learned how to hack around and modify themes - and turn features in admin on and off - but do not really posses the skills to write- Magento Custom Modules.

  1. So what are Magento Custom Modules (in a physical sense)? If they are written to the most exacting professionalism with the highest standards, does that mean they are effectively "self-contained" scripts that could be placed in any Magento store AND in any other store (drupal, joomala, custom php)?

  2. If I were hiring / looking for a good Magento Developer, how could I tell if they actually know how to write Magento Custom Modules?

+3  A: 

1 - A Magento module is a set of files that can be dropped into (and removed from) Magento cleanly to add or change functionality. As more fundamental changes are required, it's harder to keep these files isolated, but it can usually be accomplished. A Magento module will NOT be reusable in a different cart, as the framework for Magento is not the same as any other cart.

2 - Get code samples and have a neutral person review that code. Have them explain pitfalls of developing in Magento. Ask for some tradeoffs that they had to make in developing a module. Ask about a difficult module that they've developed.

That isn't an exhaustive list, but you get the gist.

Joseph Mastey
Thats great advice..thanks. Seems tricky to "get a neutral person review that code". 1. how do you know it is code they actually wrote? 2. how do you know the "neutral person" has no agenda to gain you as a client by saying the code is not good or could be better?I know...Im being paranoid...but it does come to mind
jon
1. You can't, but unless you have them sitting in front of you writing code (which is a poor analog to real development), such is life. Asking questions about the code (see notes on #2 above) will help you tell if they know what they're talking about.2. Pay the neutral person only for reviewing the code. Don't hire anyone related to the potential programmer. For extra paranoia points, strip out any instances of the developer's name from the code.
Joseph Mastey
Joseph's response is spot-on, but I thought I would also mention that Magento is pretty darn new and experts are scarce. I mean, this last year it seems to have exploded in popularity, so that means you have a ton of brand-spanking-new magento programmers out there. You aren't going to find a large amount of real experts (like you might find Java experts). I imagine the best experts are the guys who work for/run these small shops doing magento development. If you are looking for someone full-time, you will have a difficult time, I bet-you'll be better off finding a *sharp* PHP developer.
sdek
With respect to the dearth of Magento experts, sdek is totally correct. It's been a trip trying to find people who are even *able* to grasp Magento in a reasonable timeframe. If you are considering hiring sharp PHP developers, though, expect to spend significant time bringing them up to speed. The learning curve for Magento is steep, to say the least. Even a few years of experience with Zend Framework didn't blunt the learning curve much when I started in Magento.
Joseph Mastey
if requesting to "see code / module / mage work" what format should it come in so it could be evaluated by third party?
jon
Magento allows modules to be bundled, so that would be most helpful. Failing that, the main PHP model/block files would work.
Joseph Mastey
+1  A: 

some simple questions you can ask a developer that you are considering to develop some custom modules for you.

1: Where does the code for your custom module reside in the structure? A: There are a couple of places that it can and will reside, you want to keep it totally independent of magento core. For the code it should reside in app/code/local or app/code/community, the template/view code should reside in app/design/frontend/default/yourcustomnamespace/modulename or app/design/frontend/custominterfacename/yourcustomnamespace/modulename(this is something anyone who has extended magento should and will know) 2: you can ask them about observers and their relation to magento and purpose A: anyone who has extended magento functionality should certainly have experience with observers and know that they are part of a model and should reside in the model directory as well as be able to provide you with some of the examples of how to observe an event. Also that they need to be defined in the modules XML ie: singleton Namespace_Module_Model_Observer increment and model methods accept an event argument. ie: public function doSomeStuff (Varien_Event_Observer $observer){ execute some stuff in here }

I think if someone can explain these types of things to you then you can probably assume they know magento and can create your custom modules for you.

Granted my response here is a little convoluted and wordy but I think you get the idea.

Matt
ahh it didnt like my xml samples...oh well you get the general idea.
Matt
thanks Matt..that is very helpful
jon
I see the point of these responses, but my concern is that these questions have answers that can be Googled. How much understanding do you really demonstrate if you can just look up the answer? I have this problem with most interviews for code, this just doesn't seem very vigorous to me.
Joseph Mastey
if you interview remotely certainly. If in person then this will give you a general answer to see if the developer is competent. For remote interviews you may even ask for a simple working example that the interviewee can post live for you to view? If someone is interested enough then they should be willing I would think to complete that task to show their knowledge. Aside from that I am not sure what else you can do. When I interview people I generally at the very minimum require a phone call where I can gauge their skills from responses to questions (hesitation, tone etc).
Matt