Ask HN: How do I find a mentor?

39 points by mipnix ↗ HN
Greetings-

I was a professional pilot for fifteen years then lost my job 18 months ago. The market is horrible and I decided to pursue a career in programming.

I was accepted to the IIT master's program but I can't afford it and don't know if taking four years to do it part time will help me with my current predicament.

I have completed training in C++ and Java at a community college but that doesn't say much. I don't know what I don't know and want to learn.

I am not a wizard, ninja or a gnome. I am a fairly bright guy trying to figure this out but I need help in learning best practices and how this world I have chosen to enter, operates. How do I gain practical experience? The age old question...

I have joined two user groups but to date they have proved lacking for myriad reasons.

Craigslist didn't seem like the best place to look for a mentor so if anyone has any suggestions I will be in your debt.

Kind regards.

63 comments

[ 2.7 ms ] story [ 130 ms ] thread
You could start by putting some contact information in your profile - a web page, your location, that sort of thing.
Done. Thanks. Didn't realize the email in my profile wasn't public.
Contact people on YC that are already planted in areas you want to be involved in. Add an email and website to your profile. Tweet. Create a "brand" of yourself. Soon, hopefully people will start knowing who you are.

That's what I'm doing right now, anyways. I'll tell you how it is going a month from now.

Forget user groups. Forget craigslist. Forget the internet.

1. Do stuff: Pick up projects. Do open source work. Volunteer.

2. Network: Meet people in person.

"Finding a mentor" is a misnomer. You don't "find" a mentor any more than you find a girlfriend or spouse. A relationship with someone who can mentor you is the byproduct of everything else you do. Get out there and get busy. You may be surprised at the people who take an interest in you and your work.

I sincerely wish you would elaborate on that.

How do you pick up projects? Where would you find entry-level projects? Do you mean open source project (in which case there have been several posts on HN and reddit about getting started).

Maybe open source work is really the scenic route to where he wants to get - after all he's looking for paid work.

And he seems to making an effort to meet people in person (having joined two user groups). What else / where else can one hook up with other software people (if you say forget the internet)?

My take on a reply to this is:

- Find a project you want to do. Maybe it's a website that does something simple, maybe it's an iphone app.

- Scrape together a first approach at building it.

- Build it again.

- Learn/read along the way

- Build it again.

After a few iterations you'll start to get the hang of it.

I am teaching myself LAMP and just spent the weekend trying to figure out how to install all the android packages on my Linux laptop.

You are right about the iterations. Thanks.

" A relationship with someone who can mentor you is the byproduct of everything else you do. " - That is very true. Maybe you should spend a week skimming through different languages, pick the one you find the easiest. Spend the next two three weeks going through a beginner's book for the language and coding some simple programs. Next plan a project, it can be a simple app and code it in the language. And as you are coding, you will keep encountering problems which might need some research, you will refer books, blog posts, online tutorials etc. and will keep on learning.

As you work on the project, you will find mentors on the way, some will guide you on the technical stuffs, others might go beyond that. All the best.

I am doing just that. The learning curve is steep-I am so far behind. I am not discouraged though, just hungry to learn.

Thanks.

don't worry. keep on going. its true you may feel that you are moving slow in the beginning, but with time you will gain pace
> "Finding a mentor" is a misnomer. You don't "find" a mentor any more than you find a girlfriend or spouse.

That's not true, I've found at least two people on HN by simply approaching them and asking them if they were willing to teach me a concept and both of them agreed readily (and have shown considerable patience with me).

If there is one place where simply asking people that are skilled if they would please teach you pays off it's here.

Thanks. The comments have been insightful.

I guess I don't know what I don't know. I can find out how to work through relatively simple tasks by research but my common core of experience is so out of line with what most people in the field take for granted, I find I am spending most of my time just trying to separate the wheat from the chaff.

I guess I don't want to feel like I am wasting someone's time with what might be a dumb question.

The only dumb questions are the ones you never asked.
If I were you I'd try to use my cross domain knowledge (a pilot!) to position myself in a niche where there are few competitors, I have a hard time imagining there would be a lot of people that can call themselves programmer/pilot (though on HN for sure we have a few). That seems to be your unique selling point, so try to get as much traction there by recycling your old skills for as much as they're worth.

As for mentors, that's easy: Ask! (the specific person). If you're turned down find another one until you have what you're looking for.

A bit of an introduction wouldn't hurt, and those people here that have their email addresses listed do so because they don't mind being contacted, otherwise why else would they do that?

Not just the domain knowledge, the access you have to your target market. 15 years is a long time to get to know people. Customer development will be a breeze, you could literally shoot the shit with your peers, and take notes afterward. You'll also have a head start when you start marketing too, because you can start by telling everyone you know in the industry.
This is a great suggestion. Ask yourself "as a pilot, what annoys me or what are tasks that I have to spend my time on". Maybe a site for matching up people up to fly together to events? Or logging your flight hours. (I am not a pilot - I have no idea what I'm talking about.)
Thank you. The logbook idea is brilliant. That was the most annoying thing about flying.

Brilliant.

Smartphone app ?
I now have a goal. Thank you.

...Now what?

The quickest path to some income would seem to be to find a co-founder that has the exact skills that you need, together you should be able to go from concept to working prototype in a couple of weeks.

Sound out your pilot buddies if they want to be your 'pilot' ;) customers.

Google "iPhone pilot logbook". There's at least one app already out there. Find out what they do and do it better.
What do you have to do with the information? Do you have to give it to various 3rd parties or fill out forms with it?
It is a personal record. Very much on the honor system. It is used during interviews as a culling criterion. Must meet certain minimum hours and so on.

Would you care to help me build an app as j* suggests?

Suggestion: After you have a reasonable facsimile of a working log for pilots (if you choose to go this route), consider generalizing/expanding for scuba divers - Same kind of honor-system log-book for dives performed. I would imagine there are other disciplines that would benefit, as well...
Good thinking! There may be many more like that actually. Mountain climbers ? Para jumpers ?
I was about to suggest mountain climbers. I use some of the services on summitpost (climbers logs etc). The site has a vast amount of information, but it's backend is garbage. I routinely use google to extract information out of the site.
Not a lot of time right now - sent you an email.
Safety critical software is absolutely not the thing to get involved with (especially off the bat)... That and security critical software have mountains of approval to get through before they can be used. The FAA is notoriously old fashioned.

Also, I'd personally hate to be responsible for some crash because my flight planning assistance SaaS had a minor, off-by-one bug in it somewhere, or misinterpreted "thar be tornadoes" for "light and variable winds".

(I am an embedded software engineer. I was also a private/instrument pilot.)

It doesn't have to be safety critical to be associated with flying.

I've written code for the aviation industry (fuel estimation programs, one thing you really don't want to mess up with) so I fully understand the ins and outs of that, but a pilots log book has already been mentioned and that would be a nice thing to start out with.

True, but you can still fuck up stuff without being DOA-178B (or whatever). My flight planning assistance SaaS example wouldn't be safety critical, I assume.

Just a warning of what to avoid...

I know two programmers that have pilot's licenses, but I don't know any pilots that have programmer's licenses. ;)
If you want some help getting started with Java, I'm willing to give you some pointers so you can feel confident developing web applications.

I can be found on gary-rowe.com.

Very kind. Thank you.
You're at a disadvantage compared to the nerds who have been sitting behind a computer since they're 8 years old.

Instead of competing with them, try to use your background in aviation to wedge yourself into the software business. I suggest researching lots of smaller companies that make aviation-related software. Everything from aircraft systems to websites for pilots, iPhone applications related to aviation, tools for GA pilots, etc. There may be people out there who would love to have a software enthusiast pilot on staff, or consulting.

I work in flight simulation, and one very interesting job I've seen people do is test pilot / test engineer. Your combined background could make you a great candidate for that sort of role too. There are a dozen simulator manufacturers around the world, mostly in US, to look up.

I agree with a lot of advice here, especially those that point out that your own initiative is most important, but I would recommend my site: http://everymentor.com/ A lot of folks around Hacker News are probably aware of it (because I bring it up in almost every thread.. :-) but you might get lucky and snag someone that is interested in working with you.
At this point in time, I would suggest joining the Apple Mac/iOS community. A macbook + iPod touch + developer subscription will get you access to a great community, loads of iTunes U videos about CS and programming from Stanford and other great schools. The community is pretty great compared to others. You have a system where you can learn all aspects of contemporary software development, from scripting languages, to web sites, to handheld/mobile development, GPU development, systems administration, and so forth. You will also be developing a particular skill set that is highly in demand for employers, and one in which you can start immediately making money on your own selling apps. The unix and scripting language skills are also transferable to most other UNIX jobs, if you need to find work.

I've not always been a Mac/iOS dev, but this is now the advice I give to newbies, including my own brother.

Right now my portfolio is tied up in food and shelter. Apple, while a fine product, is out of my reach.

I watch all the Stanford videos and MIT OCW. I will check out the Mac community. Thank you.

Great question. First, don't look for a mentor. Rather, start networking and let the mentorship relationship develop naturally rather than artificially.

I work for a big internet company (not bragging) and they paid people up between groups which historically fails... Why? Because it's artificially, there's nothing there.

Let github be your mentor and try to find someone to write/share/debug/review code with.
I have an account but just have no idea what I am doing. I am taking a Linux class right now to try and figure it all out.
Github hosts open source software. You can browse through all kind of projects written in a wide variety of languages.

One way of approaching this, would be to pick one language, read about it, and then look for other projects on Github written in that language. That'll teach you a lot.

Let's say for instance, that you've heard about Python, and would like to learn a bit about that language. You can start by Google's Python class [1] Once you've grasped how python works, and written a few scripts on your own to get familiar with the language, you can learn about Google App Engine, which is a platform for running python scripts on Google's infrastructure. They have a very nice introduction to App Engine. [2]

Then once you've played with it, and deployed your first 'hello world' program, you can search github for small projects which run on App Engine. [3] Clone them and run them on your local server, read the code, tweak it, break it, fix it.

Within a week, you should be able to write a simple and fun little service. Then go learn about Ruby [4]. And see how it compares to python. Write a bunch of ruby scripts, install sinatra [5], deploy to Heroku [6]. Now, try to write the same simple and fun service you've previously written in Python in Ruby. Then go read about other scripting languages (javascript, PHP) and once you've made your mind about which one you prefer, stick with it for a few months.

You can learn and deploy sites/apps without spending a cent.

[1] http://code.google.com/appengine/docs/python/gettingstarted/

[2] http://code.google.com/appengine/docs/python/gettingstarted/

[3] http://github.com/search?langOverride=&language=python&#...

[4] http://mislav.uniqpath.com/poignant-guide/book/chapter-3.htm...

[5] http://www.sinatrarb.com/intro

[6] http://blog.heroku.com/archives/2009/3/5/32_deploy_merb_sina...

Now that you've done some basic programming in C++ and Java, you are in a little bit better position to figure out what kind of programming you want to be doing.

The C family is a language used in corporations for programming applications that we use all the time. Objective C is what it used on iPhone/iPad/iWhatever applications. C is also big in the video game industry.

Java is also used by corporations to develop applications, but it is also used to develop web sites. If you want to use java to build websites there are tons of choices to make about what to learn. Here are some words to research: Tomcat, Spring MVC, Hibernate, Ibatis, GWT. Java is a very heavy weight language, but probably the most commonly used today.

C# is Microsofts answer to Java. Also used in the corporate world, not as popular as java.

Then there are the web programming language: PHP, Ruby, Python. PHP is strictly web programming, while Ruby and Python are used for other things as well. Ruby has a web stack known as Rails, commonly referred to as Ruby on Rails. Python has a web stack known as Django.

If you are programming in C or java, and not on the web then you will be spending lots of time looking at text. If you are programming for the web, you will also need to learn HTML, CSS, and javascript, as well as a javascript library like jQuery and you will be spending lots of your time looking at the browser and lining things up.

You will also probably need to learn SQL at some point, though that can wait if you are programming for the web (Web developer) and probably cannot wait if you are programming off the web.

I come from a web background myself, and would say the easiest place to start, if you want to program for the web, would probably be Ruby on Rails. Learn Rails before learning Ruby. This is an excellent resource:

http://railstutorial.org/

Hope this helps some!

Thank you. Helps indeed.

The breakdown is what I have been looking for. Part of my problem is I was so shell shocked from losing my job, I felt I had to know all the languages and all their frameworks in order to have a chance in the market.

Thanks again.

Facebook has puzzles page. Facebook may hire you, if you can solve their puzzles. I don't work at Facebook and am posting it from their website.

http://www.facebook.com/careers/puzzles.php

Just a thought, if you are learning to program anyway, why not try to solve FB puzzles. You may have the job by the time you are done learning.

I did worked at Singapore Airlines and was building Crew Management And Rostering System for pilots. To maintain international flying license, pilots have to fly each and every country once a year and they also have to get retrained in different emergency landing scenarios. As a Pilot, you may know so many problems pilots face due to such stressful environment. You may be able to build meaningful application which can help ease those problems.

Don't learn C++ as a starter language. C++ and Java are languages that have been mostly evolved from C. C was designed as a convenience tool to replace stack based assembler programming, which is what existed before any of these languages were available. So if you learn C++ first, you will have hard time understanding why there classes, why there is protection, why there are member fields, why inheritence ... the whys will be an endless list and you will never figure it out. If you wanna get that far, buy the C progamming language book and learn C first. In C you will get to understand the roots.

To fast forward and save you some time in programming, learn python. It has all the bells and whistles, and its simple to program.

Read this guy's essay: http://catb.org/esr/faqs/hacker-howto.html

If I were you I would either write a simple program that you think aviation people might need, or taking the employment path I would go for an aviation related software company like one doing flight simulators.

Too late. Already went through data structures in C++. It's what I am most comfortable with right now, which is not saying much.

I don't understand what actually happens at the kernel level but the language makes sense to me for some reason.

My professor thought I was insane when I signed up for C++, Java and VB.Net all in the same semester and all with no prior programming experience.

I started the Google pyhton tutorial.

Thanks.

Wow. Great essay. Thanks.

Too late about the C++ Java thing though...

Decide what you want to program before finding a mentor, even though some mentors might help you find a language to specialize in rather than just teaching you a small part of what they know and how they think.

If you want to be more involved in web side of things and getting dynamic website stuff (forms, etc. etc.) done quickly, go the PhP or Ruby on Rails route.

If you want to have a job almost anywhere, do Java. With Java you could be doing anything from server-side, embedded code in chips, to Android apps, to web applications (dynamic websites).

If you want to have a job with almost as good of a chance as knowing Java, learn C#/.Net. You can cover the Microsoft side of the virtual world.

If you like utility, crazy looking slashes and text manipulation, learn Perl.

Want to write software that runs a lot of the faster stuff, operating systems, things that allow Java, Ruby, C#, Perl, etc. to run, software that runs devices, etc., learn C and C++.

There are many more options as well. Try to choose something that fits where you want to be, not just something easy.

I agree with those who say you should find a programming job that showcases your pilot's knowledge. That will provide you with the greatest chance of success. Find out the type of programming that Boeing, etc. need, and do that. Odds are, it is C/C++ or Java. Or check out Flight sim companies. These two might be interesting: http://www.prepar3d.com/ or http://www.cascadegamefoundry.com/

C++ and Java is where I started, because I didn't know any better. I then pursued C++ because it is what they use in the master's program to which I was accepted.

Thanks for the links. I would love to learn what is involved in graphics programming.

The main thing to know is that if you've not dome much regular programming before, it will be fairly hard. Do not give up, it gets easier with practice. Keep at it. Look at some recent open source projects and go through the code. Set yourself some programming tasks and complete them. Do this regularly. All the best.
I'm nothing if not bull headed.

Thank you.

Introductions are everything.

A program like YCombinator or TechStars is a giant boost up for exactly that reason. But if you have to start at the bottom, the process is exactly the same... just longer.

It's like that guy who traded one red paperclip for something better (and better) over and over again until he had a house. Find the 10 smartest people you know, make friends, do something for them, and then ask them to do something for you: "Introduce me to two other smart people like you". Before you know it, you'll have some mentors. And if you keep it up, you'll get better and better mentors.

Thank you.

I guess it all comes down to a looping sequence. Iterate through the pain as it were.

(comment deleted)