An ex-coworker of mine recently left the software industry to teach high school, and he asked me to come into his web design class and answer students' questions about the industry. It was an interesting, sobering experience. Most of the questions centered around how much money they would make and how to get hired by a big firm, which was a little disappointing. I tried to emphasize my experience with respect to the money issue:
- Everything in the industry is constantly changing, so don't base your plans on the industry. I went through college during the dot com boom where kids younger than me were getting BMWs and fat bonuses from employers. Then I graduated after 9/11 where I was lucky to get a crap job in the defense industry. Five years later I ended up right where I'd always intended, and kids graduating now have myriad opportunities. Who knows what the industry will be like when these kids graduate college? Better to hone your skills in many disciplines of computer science (programming in multiple languages, testing, design, debugging, etc.) than to focus on Java because it's big money at this particular moment in history.
- If you don't love what you do, you'll suck. This is just obvious from what I've seen in the industry. There are plenty of programmers out there, but a large percentage of them are mediocre or worse. Why? This is a day job to them, not something they're genuinely interested in getting better at, but that they can comfortably make money at. Since they aren't applying themselves fully, they're not developing, and they're not going to catch those awesome opportunities on the bleeding edges of the industry where the unrealized profits lay dormant.
- Getting hired by a big firm is not your only option, contrary to what some of the students think. Because there's such competition among employers for technical talent, organizations are finding that they can distinguish themselves by arriving at different kinds of working arrangements with employees. Newer companies, especially start-ups, are likely to be more flexible in how they negotiate working conditions with employees, such as telecommuting, more vacation time, support for community involvement, etc. There's also consulting and launching your own company - I just hate to hear kids, who should be at their most ambitious and optimistic point in their lives, looking forward to working in a dull corporate environment.
- Get used to learning constantly. Things move way too fast in this industry for you to learn one language and have that make your career. It's better to challenge yourself by engaging in a wide variety of technologies to hone your general programming, debugging, testing, and other skills. Try out new languages, read blogs, go to conferences, and do your own experimental projects to challenge yourself. Be the guy that can solve any problem with the right tool, rather than "the Java guy" or even "the Ruby guy".
I can't tell for sure, but I think a lot of what I said put their long term career plans in some sort of perspective. The truth is that they can probably be comfortable as a mediocre coder at some mega-corporate conglomerate making a decent living. But they won't be happy, and I kind of feel like it's my role to guide them towards something that will enrich their lives, not put them on hold for fourty hours a week for the rest of their lives.
My teacher friend actually asked me to demo some Rails magic to the class, as he's interested in using Rails with his students. So I gave them a little taste of a Rails project, and since so much of the class were interested in design I focused on giving them a crash course in MVC and how front-ends and back-ends can work together better. It seems like Rails is the perfect technology for kids interested in web development since there's no need for compiling after changes and it's so "english-like". I also made CVREG's presence in the community clear, and I offered any help to the class that may be needed.
My presentation garnered some interest, but it was disappointing to see so little emphasis on the art of programming and so much preoccupation with the scrilla. Oh well, I guess we all think about the bottom line sooner or later, eh?

