views:

353

answers:

10

I have a buddy that is going to be giving some presentations to high-schoolers. Specifically he asked:

  • What would you be looking for if they approached you about work?
  • Perhaps you are in that age group right now. What do you want to know?
  • Perhaps you are just a few years into the workforce. What do you wish someone had told you but never did?
  • Perhaps you have children, relatives or friends in or soon to be in that age group. What are you worried they don't know about?
  • I'm sure there are other perspectives and questions I'm not even thinking about. I'd like to hear what you have to say about it.

Here was my list:

  • Don't be afraid to try! Don't let the perception that something is too difficult stop you from experimenting.
  • Curiosity may have killed the cat, but an un-inquisitive person is mostly useless.
  • Stolen from Einstein: You don't really understand something until you can explain it to your grandmother.
  • It's never enough to be smart, you also have to work well with others.
  • Before you can be really smart, you must learn how to learn.
  • There will always be someone smarter than you are -- Become their buddy! Get to know great minds and learn all you can. Some knowledge can only be expressed this way.
  • Communication, Communication, Communication! Projects rarely fail because of technical reasons and the difference between good programmers and outstanding programmers is how well they communicate.
  • A good work ethic never goes unnoticed.
  • Know when to ask for help and when to figure something out for yourself.
+1  A: 

In this game, did you know that you are never the best. In fact you are the botom of the pile... Now, dont give up, that was just a stepping stone. Learn to learn, ask stupid questions, but never repeat them, and never give up!!!

From Why I'm The Best Programmer In The World

When interviewing candidates for programming positions, I always look for someone who is brave enough to say "I don't know" when they need to. Candidates who can't or won't do this get red flagged; those types of programmers are dangerous. "Can-do" attitiudes have a superficial allure, but they're actually poison in our field.

astander
+1  A: 
  • Look for people who build stuff (software, hardware, anything) on their free time
  • It should be a passion otherwise it is just a job
  • Learn a new programming language every year
  • Don't ever stop learning new things
  • Practice public speaking
  • Practice writing
  • Practice listening to other people and valueing their opinions
Tuomas Pelkonen
+1  A: 

It's never enough to be smart, you also have to work well with others.
Before you can be really smart, you must learn how to learn.

There will always be someone smarter than you are ...

--> Value writing simple and maintainable code above exhibiting (too much) smartness.

ChristopheD
+1  A: 

I kind of like Paul Graham's take.

http://www.paulgraham.com/hs.html

mcliedtk
That's not really your answer, now is it? :)
Nate Zaugg
Correct, not mine at all. But a worthwhile read and I think appropriate for this discussion. :)
mcliedtk
I just read a few bits of it...you're right, it's pretty in-depth and interesting.
Nate Zaugg
Well, he is much smarter than me. I'm glad you like it.
mcliedtk
+2  A: 

Two bits of advice - one not so serious:

  • Don't ask questions like this on SO without making them community wiki

And one serious:

  • Make sure you are clever, talented and driven enough. In my experience 90% of programmers are not.
anon
I don't quite get what exactly there is to be learned here for novice programmers (in this 'advice') ; just sounds a little elitist to me. Does this mean that I'm probably just not clever enough to get it?
ChristopheD
@ChristopheD Programmers are, and should be, elitist - just like any other profession. Would you want to be operated on by (say) a surgeon who wasn't?
anon
@Neil Butterworth: If I'm having an operation I'd prefer a good surgeon, yes. But when I'm just having a cold a local doctor will do just fine. When you (hypothetically) scare away 90% of developers since they're just not good enough; then who will do the massive amounts of repetitive, uninspiring boilerplate coding that **needs** to be done in small local firms (think websites for example)...
ChristopheD
:@ChristopheD But you see, it doesn't need to be done. If 90% of the WWW (for example) vanished tomorrow, I can't see that the sum total of human happiness would be reduced one iota.
anon
+1  A: 

Here's my advice:

If you haven't figured this out yet, understand how you learn. Do you prefer things to be visual or verbal? Do you prefer to be part of a group or do you learn best when left alone? There are a few other questions about learning styles that is a big point to my mind.

Know what drives your passion. Is it writing cool graphics? Is it finding odd ways to solve a problem? Is it creating something? IOW, what motivates you to do a good job?

Know your core values. Similar to what motivates you, what principles do uphold as the highest ideals of value? Do you value loyalty over honesty? How about mercy over justice? We all have some values that we think are a huge deal to uphold, so find yours today.

Last but not least understand that the biggest part of your job will be managing expectations. When is something due? How well does it have to work? How scalable, maintainable, flexible should the code be?

JB King
+2  A: 

Learn how to write well. Coder who can also write, produce better documentation, and can far more clearly explain issues to non-programmers so that everyone can better understand issues. You don't even have to have good interpersonal skills, just learn to communicate via written text very well.

With so many interesting mobile devices now there's no reason not to try programming right now. If it doesn't interest you, consider other careers as not everyone likes programming, and that is OK.

Tell females in the class that at first glance and sometimes in college programming may seem the domain of males but once you reach the real world there are very few fields where you are truly as respected as an equal if you are good at it, plus as you grow in the field over time you'll find many more opportunities to really work from home (or wherever).

Tell them that people that truly understand programming, have a greater degree of control over their lives these days than most people, because so many things involve programming now it helps you to understand the vast array of devices you will encounter through your life and remove a lot of mystery from them.

Kendall Helmstetter Gelner
A: 
  • Take as much discrete mathematics courses as you can. All that abstract reasoning will help you think much more clearly about software should be put together.

  • Learn about the pieces of the computer system from the ground up, transistors to processors to OS'es to compiler/applications to networks to Internet. If you know how the pieces work, you can usually figure out where/why to do something. If you don't, its easy to get lost.

  • Build a lot of code. Work a lot on other people's code. Understand the intricacies.

  • Learn to symbolic simulation in your head.

  • Learn how to deal with "big". Software systems are growing in size. The guy who isn't afraid of a million lines is worth his weight in gold.

  • Think about "code" as data: to be manipulated, analyzed, generated by tools. The future is with automated software engineering tools.

Ira Baxter
+1  A: 

If you don't have curiosity, willingness to break things to see if and how they work, then to change them into something different, to analyse everything and solve everything, then you are in the wrong field.

Learn as many fields and languages as you can and challenge yourself daily to try new and harder things. - If you don't learn new things all the time, you'll get left behind.

If you don't enjoy your job, change to a new job/field - there are many in the market.

Danny Varod
A: 

Try to get some exposure with some Functional Programming like Scala or Haskell Refer this SO Question to get some insights on Functional Programming.

Rachel