views:

503

answers:

12

I've been working at home for some time now and though I can often find answers -- and the occasionally terrific walkthrough article -- I haven't found a way to either hire or solicit the services of a "mentor." By that I mean someone who can:

  • walk me through an implementation so that I understand what I'm doing,
  • determine flaws in my solution and efficiency/scalability issues,
  • point me to specific best practices and technology resources so that I may broaden my base

Most of what I see out there are ways to hire programmers to do work for me, or hire someone hourly as a contractor, but that's prohibitively expensive. I'm not against spending some money, but I can't afford to pay a consultant rate.

Are there any solutions, websites, or mechanisms for getting this kind of mentoring? A more elaborate "post a project" site to get architectural and implementation feedback?

+9  A: 

How about get involved in an open source project and then see your code peer reviewed?

tonylo
A: 

Try looking for contract work where you're effectively extra manpower to an existing team. If you're lucky, there will be good developers on that team who will share insights, etc. Also, if the project has been well designed, you'll learn best practices just from working on the code.

dommer
+2  A: 

What I suggest is IRC (which has helped me a lot), and your local tech community.

Majd Taby
can you recommend servers and channels?
Caveatrob
irc.freenode.net and just about every language/open source project has a channel :)
Majd Taby
+3  A: 

I work at home a lot too and when I do go into the office, I'm surrounded by salespeople. It's tough to get a good tech-chat or code-review when I need one. As working without an office has become more common, the problem of professional isolation has also become more common. One solution that seems to be gaining traction is "coworking", where a number of people who would otherwise have no coworkers to bounce ideas off of, all pack up their laptops, converge on a nearby cafe or common space, and work together a few times a month.

Do some research and see if there's a coworking community in your technical and geographical area.

veefu
A: 

This can be hard when it comes to specific technology, and you have to rely on that technology having guides to get you started as well as API docs for when you need to dig into the nitty gritty.

After that it's Google time.

After that it's decompiler time, and pen and paper notes.

JeeBee
+1  A: 

Internet is full of tutorials about almost every new technology. You can also find many mentors in the form of blog writers, ask questions on many mailing lists and forums, including Stackoverflow. And if you want to get even more involved, you can join an open-source projet or write your own blog about how you learn this new technology.

mouviciel
A: 

For an open source project you need to have members on your team that know more then you do and have vastly more experience and of course have the time to go trough your code.

Sincerely i am having this problem also, i think the solution is to program and read about optimizing techniques, frameworks, designs, etc or ask questions about particular problems.

Good luck.

Later Edit:

Finding a mentor is hard,especially in this field. He or she should have time and experience to be your mentor. Frankly i have seen few people aside academic professors to come to the ask.

Maybe this is because of my lack of exposure to the industry, but from the outside it's you the code and the questions.

Cristina
+4  A: 

Akin to the coworking idea above, when I was a contractor working off site, I actually had a rented office with two friends who were also contractors.

While obviously it is a bit more expensive than coworking in a coffee shop, it had some significant benefits:

1) Shared cost for servers, printers, bandwidth(more important in the early 90s when I was doing this), etc. 2) Easier to keep normal working hours and focus, if you have a place to go, and "coworkers". 3) Very clear delineation of deductible expenses, especially useful if the IRS keeps being sticky about "home office" expenses. 4) Depending on how you pick your coworkers you can do what we did and form a company to run our contracts through, which means your work expenses are pre-tax, and if you pay yourself a salary less than you charge, you can level out the peaks and valleys of contract pay.

In the end I suspect it overall saved money, even with the $300 a month or so I had to contribute to rent.

Darren Clark
+1  A: 

You can try sites like rentacoder and elancer anyway, people advertise just about anything on there and you can probably afford to hire someone with a decent reputation to do a code review for you or have a chat with you for an hour about your project - maybe using something like gotomeeting. Hourly rates seem depressingly low on those sites so you could prbably even afford to do a little shopping around.

If you need more advanced/professional consultancy than that then you need a proper professional consultant, and they're not so cheap.

The cheap alternative is to hang out on the mailing lists and usenet groups that they hang out on ;-)

This is an excellent suggestion and one that I recommend.You can hire an *expert* Indian developer for $25/hr. And just pair program through whatever technology / program you want to learn more about with him or her.
+3  A: 

While I think posting a project for general review can be valuable, I think it should come after you've developed some knowledge of the technology first.

I had a similar problem when I started learning Javascript. I knew that I could create scripts with Javascript that did what I needed them to do but I wanted to make sure that I was coding in a way that was considered "best practice" so I could avoid future refactoring nightmares and other problems that someone with an ounce of experience would know to avoid.

In my specific case (with Javascript) I found someone who was outspoken and respected and looked at any material produced by that person. I used that as a starting point. With Javascript, that person was Douglas Crockford. He has lots of code samples on his site along with Yahoo Tech talks published at Yahoo video.

I say find one person (maybe two) because if you don't limit yourself that way you get a wide range of opinions that don't necessarily jive well together. Ultimately, what you get is a mish-mash of "best practices" but nothing cohesive. That's why my personal preference is to form a solid kernel of understanding and comfort with the technology prior to soliciting help and opinions about your own output.

Anyway, then I then used Stack Overflow questions to fill in any holes. Once I had a basic understanding of the fundamentals along with real world practice I could strike out on my own and explore the language myself.

Karim
+1  A: 

In addition to joining an existing open-source project, you can also try starting one of your own.

And it doesn't have to be a big project. Sometimes it's easiest to learn from simple utilities.

I've found The Code Project to be a good place to post small scripts and utilities. If others find your code useful, you'll usually get tips on how to improve it. You can also look at the comments people have posted about other interesting projects. Google Code is another option.

If you want to learn more about web development in particular, you can try writing a plugin for a JavaScript framework like JQuery or a template for CSS. There are many sites that collect these.

dthrasher
A: 

I'm in the same situation as you. I used to be a php hacker and spent years writing a big ball of mud.

My mentors are the authors of a few books that I have found to be amazingly inspirational.

  • Mike Mason: (Pragmatic Pragmatic Version Control: Using Subversion) - Got me thinking differently about project management / version control.

  • Zend Framework - made me realise I needed to learn OOP / MVC

  • Matt Zandstra - (PHP 5 Objects, Patterns, and Practice) - Taught me the OOP basics. Introduced me to design patterns.

  • Gang of Four - (Design patterns : elements of reusable object-oriented software) - Gave me a whole new deeper understanding of OOP.

  • Eric Evans - (Domain-driven Design: Tackling Complexity in the Heart of Software) - Helped me to fully understand the 'M' of the 'MVC'.

  • Martin Fowler - (Refactoring: Improving the Design of Existing Code) - Showed me that there is light at the end of the ball of mud.

Even though these 'mentors' do not physically sit in your room - when you read these books it feels as if they have solutions for all the mistakes and questions you have ever made, are about to make and will inevitably always make.

Then sit back and soak up some talks on Info Q

JW