

How far off am I? - mipnix

Hello-<p>Long time listener. First time caller...<p>After a fifteen year career as a pilot, I lost my job last year and can't find another one. I went back to school and am taking C++ and intro to databases and everything else I can get my hands on, in order to catch up.<p>I have no background in technology or business, basically a pilots license with a pretty degree attached to it. Nothing applicable to the real world. For all intents and purposes, I am starting from square one and trying to make my way as a programmer. After eight months, I don't feel I know how to actually program anything.<p>Entry level jobs are looking for 1-2 years of programming experience and mentors are hard to find.<p>Am I blowing this out of proportion? Does anyone recall what it was like when they started out? I mean really started out?<p>Thanks.<p>Edit: Thank you for all the comments. You lose sight of the big picture from ground level. Just need to stay the course.
======
RiderOfGiraffes
Not everyone will agree with the following, so you'll need to take this, and
their comments as well, with a large dollop of critical thinking.

Use Python and write a program that prints the numbers from 1 to 100. Then
change it so that when a number is divisible by 3 it prints "Fizz" instead.
Then change it again so that when a number is divisible by 5 it prints "Buzz".
If the number is divisible by both 3 and 5 have it print "FizzBuzz".

Then write it again in C++.

Now ask, how could your program be made simpler? How could it be made clearer?
If someone came to it in 6 months time, what would the y need to know in order
to assess whether it's doing the right thing?

If you can do all that effortlessly then you're a long way there and in need
of a harder challenge that gives you some satisfaction. If it requires any
real thought then you need lots and lots of practice at writing code.

~~~
mipnix
I will look into the Python. The coding in C++ is not a problem. I do the
puzzles on ProjectEueler and the exercises in the textbooks but I don't see
how they apply to real world development.

I understand the need to practice code and take to it religiously. My wife
hated when I was gone all the time. Now I am home and she hates that I am on
the computer. You are right about increasing the level of difficulty. Thanks.

~~~
RiderOfGiraffes
Here are some random questions to help you explore what you want to do.

Just to get a feel for the kind of code you write, perhaps you could take this
little challenge:

    
    
      Write a C routine with the
      following prototype:
    
      void condense_by_removing(
          char *z_terminated ,
          char char_to_remove
          );
    
      Your routine should modify
      the given zero-terminated
      string in place, removing
      all instances of the given
      char.
    

If you're brave you can post your code here ...

Apart from that, the challenge is to decide what kind of job you want, then
make sure you develop a resume to get it. If you want a web developer job then
you have to write some web apps. If you want a systems programmer job then you
need to write some slick algorithmic code.

Do you know what a B-tree is and when you would use it?

~~~
mipnix
Here's what I came up with. It compiles and executes but the result is a
random symbol on the console. Definitely missing something.

    
    
      #include<iostream>
      #include<string>
      #include<cstring>
    
      using namespace std;
      void condense_by_removing(char *x, char y);
    
      int main()
      {
    	char *string;
    	string = new char[50];
    	cout << "ENter your name: ";
    	cin >> string;
    	cout << endl << "Enter the character to remove: ";
    	char ch;
    	cin >> ch;
    	condense_by_removing(string, ch);
    	cout << endl << "new string is: " << *string;
    
    	char dit;
    	cin >> dit;
    
    	return 0;
      } 
    
      void condense_by_removing(char *z_terminated, char  char_to_remove)
      {
    	char *chPtr = new char;
    	char *trailPtr = new char;
    
    	for(int i = 0; i <= strlen(z_terminated); ++i)
    	{
    		chPtr = z_terminated;
    		if(z_terminated[i] == char_to_remove)
    		{
    			trailPtr = chPtr;
    			delete chPtr;
    		}
    	}
      }

~~~
RiderOfGiraffes
OK, now's the time to learn about debugging. Writing clean code to solve small
problems from scratch is easy. Debugging existing code, especially well-
written code, is hard. This is where you need to use your problem solving
skills.

Pretend that you're the computer and walk through the code in small steps,
tediously detailed. Make sure you really understand what the code is doing.

What exactly happens when you execute "char *chPtr = new char;" ?

What exactly happens when you execute "delete chPtr;" ?

And why do I say that debugging well-written code is especially hard? Because
the names, clarity and simplicity in well-written code seduce you into the
same mindset as produced the code that has the bug.

~~~
mipnix
I could have used you as my professor in my recent data structures class.

I imagine you have myriad responsibilities in the course of your day and I am
grateful for the time you are affording me.

I will work on this tonight.

------
BoppreH
A fifteen year career as pilot is hardly "square one." At the very least it
would make you the best candidate if you ever try to land a job or make a
business around this niche.

The great programs are made by the people who used to need them.

~~~
metachris
You have the (rare) experience of a pilot. Therefore I would suggest you think
about making iPhone, iPad and Android apps for pilots (i guess most of them
use iOS). Start with really small ideas (virtual horizon, display pitch, etc.)
and grow to more sophisticated projects (eg. flight planning and so on).

There is a lot of money to be made on those platforms; pilots are willing to
pay for tools that help them, and non-pilots don't know what they need and
can't easily produce such apps out of the blue. I bet you would also easily
find a co-founder once you have concrete ideas / concepts.

------
i2pi
The biggest thing that helped my career and confidence was participating in
open source projects. I was a terrible coder at the time, but I learned a
great deal and it gave potential employers an additional degree of confidence.

Given your unique experience, you could probably find niche pilot tools that
could use help. Check out freshmeat.net and other sites to find projects that
are both interesting to you and could benefit from additional input.

~~~
mipnix
Thanks. Will check it out.

------
cjeane
After 8 months where were you as a pilot? Were you ready to fly cross country
solo?

Programming is hard because you may understand the solution, but you don't
know your equipment well enough yet to get you there.

If you know what kind of industry you want to work in (Games, Web, Enterprise)
focus on the tools that are used in that industry (C++, Django, .Net). Once
you zero in on these specifics it will be much easier to find a
mentor/community, because a flight instructor is pretty useless if he doesn't
know where the landing gear is.

------
peace_of_mind
_I have no background in technology or business_

Not quite true. I bet avionics companies (and plenty of others) would be very
interested to talk to you.

My dad used to be a pilot and now works in technology, though he made the
switch a few years ago now.

As for the programming, after learning the _very_ basics you really have to
write something and learn as you go. Try writing a little Android app. I bet
you could without even knowing Java.

It could be that working as a _programmer_ isn't right for you (maybe a
business role related to aerospace), but if you kept it up on the side and
used it as your "secret weapon" ^ you could be a real success. Good luck.

^ See Zed Shaw's thoughts on
<http://sheddingbikes.com/LearnPythonTheHardWay.pdf>

~~~
mipnix
Thanks for the link. Python is next on the list. Took one Java class. Maybe
Android apps would be good too.

Thanks again.

------
damoncali
You'll find it easier to start with web development than C++. Learn Ruby on
Rails or the equivalent, churn out a few simple apps to build a portfolio and
then hit the pavement as a freelancer (it requires less programming skill than
you may think). After a few small contracts (don't over-reach - it requires
more skill than that!), think about looking for a real job (if you want one).

Starting from nothing, that process can take a couple years - you'll need some
money somehow during the learning period, Make sure that's taken care of
because the money won't come quickly as you learn.

I did almost exactly this, and it worked for me.

~~~
vannevar
I agree, if you're looking to work and not just program as a hobby, start with
web projects. There's always a friend of a friend (or somebody on Craigslist)
with a $1000 and an idea. Your effective hourly rate will be low, but you'll
be learning and getting paid at the same time. You'll also find out whether
you really want to be a programmer for hire, as it is often the case that the
programming is the easy part while the clients are the hard part.

------
slindstr
When I REALLY started out (in 2006) I got an internship with a defense
contractor and kind of worked my way up from there. The project I was on had a
lot of ex-military people with no programming skills testing our software
because that's who our end-user was.

Don't discount a 15 year career as a pilot - you might be able to get a job
testing simulators for Lockheed, Boeing, or one of the others, and if you
still want to write code you'll have your foot in the door already.

------
Edmond
Along the line of some of the advice below...Programming is hard but you
become better with experience. I wont raise your hopes, it really does take
years to get to the point where you can get a programming job,it is much more
than just learning a programming language (just as learning English wont turn
you into JK Rowlings)... unless of course you are much smarter than the
average programmer.... I am giving you advice based on experience. I am 30yrs
old and have been programming for about a decade. Some of the things you can
do after a decade of practice:

<http://www.colabopad.com>

<http://www.meshipu.com>

<http://www.codeproject.com/KB/cpp/visual_java.aspx>

<http://www.codeproject.com/KB/miscctrl/ruler_control.aspx>

<http://www.codeproject.com/KB/IP/videochat.aspx>

<http://code.google.com/p/rhythmote/>

[http://pugoob.blogspot.com/2008/01/pugoob-image-search-
tool....](http://pugoob.blogspot.com/2008/01/pugoob-image-search-tool.html)

Just a sample of my work, doesn't include what I actually do at work. How long
do you think it will take you to learn how to build the kind of software
above? I would hazard a guess, it will be a looooooong time. I currently work
as a System Architect and even so I am not considered a senior person.
Programming is like athletics, after a certain age you really shouldn't pursue
it as career. You can try to learn it as a hobby, but spend your time and
energy on more attainable career goals in the short term. I hate to sound
uninspiring but I have seen enough of this type of thing, mid-career people
trying to find a lucrative career and thinking programming is the way to go,
mostly it is a waste of their time. I am in an MBA class with someone who's
about 33yrs old and is taking Oracle classes trying to get into the IT field,
he is mostly likely wasting his time.

IF YOU MUST

 _Start with PHP not C++ (Not likely to get you a job anytime soon)

_ Learn how to setup an entire LAMP (google it) system first, you could
install virtualbox on what I am sure is your windows system

 _Then try to create some website, maybe a dating site or something your
neighbors might find useful.

_ Be prepared to spend a lot of time on web forums asking questions

Hope this helps clarify some things for.

~~~
tseabrooks
The advice on PHP might be correct, and it might jive with most of the
collective experience of HNers... However, my company is always hiring C and
C++ developers... we interview maybe 3 people a weak and hire maybe 1 person
every 2 or 3 months.

That said, there is absolutely a shortage of C++ jobs... but this shortage has
created an equal shortage of competent C++ programmers. We can't find C/C++
programmers to hire fast enough.

------
msencenb
Here's my advice: Go build something!

It doesn't particularly matter as long as its appropriate for your skill level
(but still challenging)

Example: After taking my second ever programming course I decided I wanted to
make an iPhone app. So I picked up two books, made a storyboard, a paper
prototype, and then went for it. It was a cookie cutter "inspirational quotes"
app but I learned a lot and I was proud of it!

~~~
Revisor
Even better: Go build something you're interested in. It needn't be important,
just fun for you.

------
helveticaman
This shit takes years, man. I started 3.5 years ago and couldn't do shit for
the first year and a half. Then I got a tutor who got me set up right, and I
could sometimes do stuff. Then, three years into this, I started taking off.

I will point out, however, that I decided to go straight into Lisp.

~~~
mipnix
Where did you find a tutor? Any recommendations of where to look?

~~~
helveticaman
Ask about grad students at a good local college.

------
gaius
What made you choose programming? The IT industry is in nearly as bad a state
as aviation. Neither really recovered from 2001 (dotcom crash + 9/11).

Is there any way you can leverage your domain knowledge? Work in avionics or
games/simulation?

~~~
mipnix
Why did I choose programming? Vin: It's like this fellow I knew in El Paso.
One day, he just took all his clothes off and jumped in a mess of cactus. I
asked him the same question, "Why?" Calver: And? Vin: He said, "It seemed like
a good idea at the time." -The Magnificent Seven

~~~
die_sekte
Also, programming is likely to be around in a few hundred years. Programming
is AI-hard. Few other lines of work are.

------
thok
mipnix, I noticed a few people suggested looking into work at avionics
companies; I think this is a good idea. I work at Rockwell Collins
(www.rockwellcollins.com) and I know that we have hired a significant number
pilots and ex-pilots as engineers.

Good luck.

