Next Friday I'm giving a short (30 min.) talk to a bunch of software engineering students who will be attending the same university I did.

Some context:

The place is Montevideo, Uruguay

The university is Universidad de la República (public, free university)

The Software Engineering programme takes 5 years (if you're very good and don't start working early). Around 800 new students per year, around 80 graduates per year. Conditions are harsh, particularly the first two years.

Most of them probably have no idea what software engineering or programming is.

My goal would be to somehow give them an idea of the field and hopefully motivate them to endure the hardships ahead to eventually become successful developers.

"Welcome to the first day of the rest of your life"
–
AndrewKSFeb 23 '11 at 18:44

3

Yes, exactly, most people leave pretty early because of the many difficulties (overcrowded lesson halls with 300 people, tests where only 10% get a passing grade, etc.)
–
ÁlvaroFeb 23 '11 at 18:51

2

I only remember one part of my first day of a CS degree speech: "Everyone, look to your left. Now look to your right. pause Only one of you three will graduate from this program."
–
TyannaFeb 23 '11 at 18:55

2

@Developer Art - I'm guessing it's b/c it's a free university. I think more people would go for CS if they didn't have to pay the huge tuition fees for it, thus the drop out rate would be higher as well.
–
TyannaFeb 23 '11 at 19:05

17

"Welcome to hell, bwahahahahahahaha...", you have to practice that manic laughter though for it to last 30 minutes.
–
biziclopFeb 23 '11 at 21:04

if you want to encourage them, tell them how your work helps people, provides personal satisfaction, and generates a comfortable income

if you want to discourage them, tell them that 9 out of 10 of them will fail and the 10% that survive had better be willing to give up their social lives, evenings, and weekends to an ever-changing field where today's innovation is tomorrows legacy junk.

Give a brief definition of each SE course available. No one wants to wind up in his last semester of senior year to find out the course he really wanted to take was only offered every other Spring semester.

All joking aside, what do you wish someone had of told you before starting that program?

When I was a TA, I often told first year students not to be too hard on themselves. Most kids who were accepted at my school were use to being at the top of their class in high school. It's quite a shot for many of them when they get that first fail (or even anything under 80%).

Let them know to seek help when the need it. If they don't understand something, ask. Courses in college are not the same as courses in high school. They move much faster and there is next to no repetition.

Everything you do, is not a simple thing, so must be thoroughly planned, so you make sure before you ever code/program anything, you have a clear plan that will get you towards your end goal.

Love your job, but your life is more than your job or career, remember to keep good friends, and good love around you, and to support you."

To be the best, you must observe, and watch the best.

I highly recommend everyone watch Jim Valvano's Speech for his ESPY Award in 1993. Here is a man dying as we speak, yet has the most passion in his life for his job/career, and how he shares that passion with others.

If you want people to stick something out, you need to be honest up-front. Paint a reasonable but not horrific picture of the challenges of a degree where getting good grades takes lots of effort and perseverance and probably more than a little self-study. After you've painted that picture, describe the rewards. Talk about the personal growth of dragging up your grade in a course through working when others might be having fun, or at least working less. Talk about the value of knowing that you've grown intellectually and also built your character by not giving up.

Finally talk about the rewards of being a programmer. Think about what we programmers get to do all day (when we aren't in meetings or tearing our hair out over legacy code, that is): make stuff work. Whether we're fixing bugs or implementing new features, we type on our keyboards and awful lot but get the reward of seeing something run at the end of it. It's hard to beat that cool feeling of creating, especially when you believe in what your end users are doing. People out there get to write code that helps save lives, run stock markets, pilot space ships, etc. Sure, that's not every job, but if you don't learn to program in the first place you won't even have a shot at such a position.

study hard, learn as much technologies as you can - then after you finish your studies, everything you have learned will be obsolete and you'll find yourself a nice job at Tesco. Actually what we'll teach you was obsolete 10 years ago :)

drink, party, make 5-10 part time projects and learn by yourself - maybe then studying will be anything more than a waste of time. If you think you'd rather skip vodka with friends today or scoring 3 chicks a week is too much - think twice, in a very short 5 years you'll be having job and a wife, or maybe even both.

leave now and take interior painting course. It's rewarding, easy, and you'll have cool friends that don't play World Of Warcraft.

Initial years after completing graduation may not be financially rewarding

Yes, that's 100% correct. If you only follow the lectures all your commercialy desired skills will be clicking next in Wordpress installation script or configuring email. In my opinion you could cut all the cr*p (80-90%), keep mathematics, algorithmics, maybe relational model or compiler theory (one of two up to your choice). You'd save a couple of years + you'd be as qualified as anyone that took full course because you can learn everything else yourself.

Ah i forgot very important By The Way point:
"Look around and remember - never, ever hang with them! It will limit your chances of becoming level 50 wizards but it's also more likely that at the end of the year more than 20% of you will no longer be a virgin"

Wow, your school sounds harsher than mine. My first day they said, look to your left, look to your right. Those two people won't be graduating. For you, it'll be look at the 5 people to your left and the 4 people to your right. Those 9 people won't be graduating. Ouch! I think an impression needs to be made that it is going to be difficult. Set the expectations high so they have fair warning early on because they thought it would be a breeze.

I'd say be honest, tell them to find a programmer/mentor/whatever and show them what life will be like. Dont get me wrong I love programming and I like my job pretty well......but In the beginning of college did I have ANY idea what i'd be getting into.....hell no.

Also tell them to study hard, and EXPECT it to take more than 4-5 years (took me 6....but I didn't know what i wanted to do at first either). for my College around 60% that started dropped out, then another 20% never made it past halfway. I got lucky, I wasn't the best student but I somehow pushed through and thats all that matters to me.

On the upside however, I got a job pretty easily and got lots of requests for interviews....so once you get out getting a job isn't too bad (i live in a small city tho.....might be different for large cities)

Tell them that all the implementation details they learn will be wrong by the time they graduate. They can learn fundamentals and math, which will be useful. Everything else they'll have to teach themselves. The industry changes every 5 to 10 years, so nothing you know will be useful long term.

I think the most important thing to tell them is that programming is not something which can be taught. You either can think in the right way to create good code or you can't. Those who can, should, because you've got a gift to create incredibly powerful world changing technology from scratch. If you can't, if you struggle, if you're not good, STOP. If you can't get in the zone, and always struggle, then you will never be a good programmer.

My advise, after being there for ten years of my life, is to form a study group with other friends and being very persevering. Also talking about the challenges and the possibilities out there when you start working would be a plus.
Good luck!

Tell them that programming is an avenue to a career in pretty much any industry they choose. If they really don't like it after the first few years it's possible to use it to move into management positions.

I'd ask them to reflect on why they've chosen to pursue a course which is clearly notoriously difficult to complete and will soak up 5 years of their life. If they want to learn to become excellent software engineers, understanding how/when/why to write x/y/z solution, then they're in the right place.

If they are there because they had to move out of the family home, they had no better idea, they just want to learn PHP/Java/C# (buy some books of eBay plus a computer - will save at least 3 years of their life), then perhaps they've not properly considered what their end goals are for the next few years. Software engineering is much more than just coding.

I remember what was told to me on my first day as an engineering student. It really struck my mind, and I think it's a deep truth, so you may find it useful as well.

I was told that the main duty of an engineer is to reason about money. You don't have to design beautiful architectures for their own sakes, or implement a new system, or anything else, without keeping in mind the economical side.

What is the most effective way to solve my problem? How much does it cost to do it? Am I really willing to pay for the solution to the problem, or would I prefer keeping the problem and the money? Am I better solving the problem on my own, or paying someone else to deal with it? (Not only offshoring, but also buying a module or a commercial product is the same).

In the end, as engineers, we have to keep an eye on the practicability and economical feasibility of what we design. That's what sets us aside from pure scientists.