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.
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.
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.
Thanks.
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.
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.
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)?
- 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.
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?
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.)
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.
Brilliant.
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.
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.
Too late about the C++ Java thing though...
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...
I've not always been a Mac/iOS dev, but this is now the advice I give to newbies, including my own brother.
I watch all the Stanford videos and MIT OCW. I will check out the Mac community. Thank you.
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/
Thanks for the links. I would love to learn what is involved in graphics programming.
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:
Hope this helps some!
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.
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.
I guess it all comes down to a looping sequence. Iterate through the pain as it were.
I can be found on gary-rowe.com.
Thank you.
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.
That's what I'm doing right now, anyways. I'll tell you how it is going a month from now.
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.
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.
http://www.gabrielweinberg.com/blog/2010/09/how-to-get-that-...