
Ask HN: How do I find a mentor? - mipnix
Greetings-<p>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.<p>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.<p>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.<p>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...<p>I have joined two user groups but to date they have proved lacking for myriad reasons.<p>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.<p>Kind regards.
======
edw519
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.

~~~
mailarchis
" 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.

~~~
mipnix
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.

~~~
mailarchis
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

------
jacquesm
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?

~~~
spydez
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.)

~~~
jacquesm
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.

~~~
spydez
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...

------
phugoid
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.

------
maxawaytoolong
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.

~~~
mipnix
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.

------
sahillavingia
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.

------
devmonk
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/>

~~~
mipnix
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.

------
Aegean
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.

~~~
mipnix
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.

------
seasoup
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!

~~~
mipnix
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.

------
ketanb
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.

------
snprbob86
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.

~~~
mipnix
Thank you.

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

------
GaryRowe
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.

~~~
mipnix
Very kind. Thank you.

------
bryanh
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.

~~~
mipnix
Thank you.

------
ananthrk
There was a similar thread in HN long ago
(<http://news.ycombinator.com/item?id=670453>) and an awesome comment from
'plinkplonk' on this subject (<http://news.ycombinator.com/item?id=670795>).

------
arohann
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.

~~~
mipnix
I'm nothing if not bull headed.

Thank you.

------
bretthellman
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.

------
BrandonM
I find it rather funny that there was _just_ a submission two days ago
answering precisely that question:
<http://news.ycombinator.com/item?id=1708777>

------
siruva07
Gabriel Weinbergg (@yegg) just wrote an awesome post about this

[http://www.gabrielweinberg.com/blog/2010/09/how-to-get-
that-...](http://www.gabrielweinberg.com/blog/2010/09/how-to-get-that-guy-as-
your-mentor.html)

------
nurall
This is veru useful advice - [http://www.gabrielweinberg.com/blog/2010/09/how-
to-get-that-...](http://www.gabrielweinberg.com/blog/2010/09/how-to-get-that-
guy-as-your-mentor.html)

~~~
mipnix
I love it when a plan comes together. Thank you.

------
davidw
You could start by putting some contact information in your profile - a web
page, your location, that sort of thing.

~~~
mipnix
Done. Thanks. Didn't realize the email in my profile wasn't public.

------
iampims
Let github be your mentor and try to find someone to write/share/debug/review
code with.

~~~
mipnix
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.

~~~
iampims
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&#...</a><p>[4] <a
href="http://mislav.uniqpath.com/poignant-guide/book/chapter-3.html"
rel="nofollow">http://mislav.uniqpath.com/poignant-
guide/book/chapter-3.htm...</a><p>[5] <a href="http://www.sinatrarb.com/intro"
rel="nofollow">http://www.sinatrarb.com/intro</a><p>[6] <a
href="http://blog.heroku.com/archives/2009/3/5/32_deploy_merb_sinatra_or_any_rack_app_to_heroku/"
rel="nofollow">http://blog.heroku.com/archives/2009/3/5/32_deploy_merb_sina...</a>

~~~
mipnix
Thank you kindly.

