Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Ask Slashdot: What Do You Wish You'd Known Starting Out As a Programmer?

Soulskill posted about 2 months ago | from the how-to-program dept.

Programming 548

snydeq writes: Most of us gave little thought to the "career" aspect of programming when starting out, but here we are, battle-hardened by hard-learned lessons, slouching our way through decades at the console, wishing perhaps that we had recognized the long road ahead when we started. What advice might we give to our younger self, or to younger selves coming to programming just now? Andrew C. Oliver offers several insights he gave little thought to when first coding: "Back then, I simply loved to code and could have cared less about my 'career' or about playing well with others. I could have saved myself a ton of trouble if I'd just followed a few simple practices." What are yours?

cancel ×

548 comments

Sorry! There are no comments related to the filter you selected.

What to know (5, Funny)

amicusNYCL (1538833) | about 2 months ago | (#47722015)

What Do You Wish You'd Known Starting Out As a Programmer?

How to program, I guess.

Re:What to know (1)

Anonymous Coward | about 2 months ago | (#47722285)

How to program *properly*, I guess

Re:What to know (0)

Anonymous Coward | about 2 months ago | (#47722455)

starting out i'd settle for at all
properly comes with experience, just being fluent in the syntax would get most people past the more tedious and frustrating part of getting started.

What to know (-1)

Anonymous Coward | about 2 months ago | (#47722481)

You little bitch :)

get more involved in open source contributing (4, Insightful)

jjn1056 (85209) | about 2 months ago | (#47722017)

I think the main thing I'd change is I wish I had started becoming active in the open source community around the tools I commonly use. I spent the first 10 years of my career mostly working on my own, or with a few people on the job and was not connected at all with the greater community. I think if I had done so earlier I'd be a better programmer today

Re:get more involved in open source contributing (1)

Jason Levine (196982) | about 2 months ago | (#47722323)

I was the same way. When I started out in web developement, I'd stubbornly insist on building everything myself from scratch. Of course, this meant I was putting a ton of extra effort into each project when I could have been using pre-written components to speed up my development. In addition, my custom code was trickier to support. (Pre-written components from other sources that have hundreds of eyes looking at can be debugged a lot easier than custom code that has one or two pairs of eyes looking at it.) Not that pre-written is always the answer, but they should be considered, not dismissed out of hand.

C++ is not the language you start with (4, Insightful)

Anonymous Coward | about 2 months ago | (#47722023)

On my CS track, you start with C++, learn data structures and algorithms, and then learn assembly on a 68k.

I can't think of a better way to discourage someone from learning how to code.

Re:C++ is not the language you start with (5, Funny)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722233)

Going by my wife's experience, I can suggest a better way to discourage somebody from learning to code. It's called Java.

Re:C++ is not the language you start with (1, Offtopic)

gnupun (752725) | about 2 months ago | (#47722309)

Python, or even BASIC, are better than C/C++ for beginners.

'weed out' classes (3, Insightful)

oneiros27 (46144) | about 2 months ago | (#47722459)

I wasn't a comp-sci major, so I don't know how common they are in that field ... but in engineering, you typically have a freshman class that's referred to as the 'weed-out' class.

It's not supposed to be fun. It's supposed to be damned hard, so they can see who's got the fortitude to stick with it.

Not all of life is going to be a cakewalk -- there are going to be times when you really have to knuckle down and study, and it's often better to get it over with early on than spend 3 years towards the degree and then find out that you can't cut it.

Pick a different job. (5, Insightful)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722039)

I wish I had known to pick a different trade instead of programming. Programming isn't a profession like law or medicine. It's a skilled trade like plumbing, masonry, or electrical work. But unlike plumbers and electricians, programmers aren't smart enough to unionize, and so they get fucked in the ass by management. If you have to live in the United States, don't become a programmer. There are better ways to earn a living.

Re:Pick a different job. (1)

GameboyRMH (1153867) | about 2 months ago | (#47722069)

Came here to say this!

And it sucks everywhere except NYC/SF/Austin/Boston

I probably should have gone into some kind of engineering.

Re:Pick a different job. (2)

pscottdv (676889) | about 2 months ago | (#47722157)

Chicago is pretty good.

Re:Pick a different job. (1)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722281)

Can you get manage a 40 hour workweek as a coder in NYC/SF/Austin/Boston or Chicago (as another reply mentioned)?

Re:Pick a different job. (0)

Anonymous Coward | about 2 months ago | (#47722339)

I've done it both in Chicago and SF - it's by far worse in SF. It's a sweatshop industry in SF. A programmer earning in the top tier here has pretty low standard of living here and most jobs will try to get you to work 80 hours a week. In Chicago, there was a *little* less pressure, but wages are better as the entire world doesn't flock there willing to work for peanuts.

Re:Pick a different job. (5, Funny)

slashdice (3722985) | about 2 months ago | (#47722371)

SF still sucks, depending on which side of the glory hole you sit.

Re:Pick a different job. (4, Interesting)

MAXOMENOS (9802) | about 2 months ago | (#47722117)

I work in a unionized software shop. It's awesome during bad times. In good times one is tempted to think it's better in fast-and-furious start-ups, but then one compares one's salaries and benefits and realizes, "no, actually, union shop is still better."

Re:Pick a different job. (1)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722243)

As somebody who started working in the trade in 2000, what do you mean by 'good times'? :)

Re:Pick a different job. (3)

geekoid (135745) | about 2 months ago | (#47722469)

For you? Jan 2000 - June 2000

Re:Pick a different job. (5, Interesting)

roman_mir (125474) | about 2 months ago | (#47722119)

Programmers are smart enough not to unionise, which allows newcomers into the field without these insane artificial barriers of entry.

Unions are barriers to entry into the field to any newcomers, unions are also horrific from point of view of price setting and prevent people who actually excel in the job from making significantly more than those who only coast by. Your complaint is a complaint of somebody who shouldn't have become a programmer in the first place, but also it is a complaint of a horrible person, who wants to prevent others from entering the field freely.

People shouldn't be licensed just to try and make a living, all professional government dictated licenses and participation in various organizations are a huge economic mistake but more importantly they are a huge impediment to individual freedoms.

Re:Pick a different job. (0, Troll)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722209)

Save the right-wing talking points for somebody who gives a shit. And stop conflating unionization with government-mandated licensing. If you're smart enough to code for a living, you're smart enough to know better.

Re:Pick a different job. (1)

Anonymous Coward | about 2 months ago | (#47722313)

Save the right-wing talking points for somebody who gives a shit.

Ditto to your left-wing criticisms.

I'm sick of hypocrites who soap-box about partisanism in an obviously partisan way.

Re:Pick a different job. (1)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722391)

You think talking union is left-wing? Man, your perspective is fucked. I haven't even started talking about work-for-hire alienating developers from their work.

Re:Pick a different job. (2)

udachny (2454394) | about 2 months ago | (#47722475)

You do not have to accept a job if you do not like the contract, maybe you should actually try and live by some of those principles you espouse here.

Whether union left or right wing is irrelevant, unionization that gets special government privileges is wrong and unconstitutional but of-course it exists due to the politicians buying votes with stolen money.

Re:Pick a different job. (3, Interesting)

udachny (2454394) | about 2 months ago | (#47722421)

Of-course unionization is government mandated licensing, show me a union in the USA and I will show you a special class of people protected by government from free market competition.

I do not have 'right wing talking points', I do not fit into your 'right/left' ideology. My belief system is based on a very basic principle of individual freedoms. Individuals are above the collective, the mob cannot have special privileges at the expense of individual rights. A society where a mob can steal rights of an individual has no right to exist.

Re:Pick a different job. (4, Informative)

NoImNotNineVolt (832851) | about 2 months ago | (#47722489)

I was a cashier at the local supermarket in high school. Of course, all supermarkets are unionized. Do you have any idea how hard it was to get this job?

Not hard. I applied. I was working that same week. If the union was a barrier to entry, it wasn't one big enough for me to have noticed. What the fuck are you talking about?

Re:Pick a different job. (5, Insightful)

sinij (911942) | about 2 months ago | (#47722121)

If you mean the quality of code that gets churned by your average coder, then yes, it is just like plumbing.

Re:Pick a different job. (4, Insightful)

Rinikusu (28164) | about 2 months ago | (#47722205)

One of the most difficult things I've had to come to accept as a developer is: If you see a 'clever' way to solve something, STOP. The sad fact is most programmers work on programming teams and you need to absolutely view yourself as expendable. Embrace mediocrity and find another outlet for your creativity. This could be personal projects outside of the workplace, or other hobbies altogether.

Re:Pick a different job. (1)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722255)

I write SF, but it's hard to let go and not give a shit at my day job because I'm still enough of a Randroid to want to give people their money's worth.

Re:Pick a different job. (1)

Anonymous Coward | about 2 months ago | (#47722295)

Bang on. Applies to the trades. Always consider that the person fixing whatever you built is a first year apprentice and you'll build it right the first time!

Re:Pick a different job. (1)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722415)

I assume the guy succeeding me has nastier anger issues than I do, lacks my reluctance to initiate violence, and knows where I live.

Re:Pick a different job. (0)

Anonymous Coward | about 2 months ago | (#47722423)

One of the most difficult things I've had to come to accept as a developer is: If you see a 'clever' way to solve something, STOP. The sad fact is most programmers work on programming teams and you need to absolutely view yourself as expendable. Embrace mediocrity and find another outlet for your creativity. This could be personal projects outside of the workplace, or other hobbies altogether.

A common enough occurrence during my tenure @ Yahoo was using clever ideas to start side companies, quitting Yahoo to focus on that, then selling the company to Yahoo and coming back as a consultant before starting all over again.
If you think about that for a minute you see the real awesomeness of it: They're working on the exact projects they want to work on. And they get rich doing it.

Re:Pick a different job. (0, Troll)

Anonymous Coward | about 2 months ago | (#47722125)

Get out of my trade. Unions are not your friends. I've watched as union workers fucked me over at trade shows. If you feel that unionizing is what you need, then I submit that, as a developer, you aren't capable enough keep a real job.

Re:Pick a different job. (1)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722181)

Get out of my trade. Unions are not your friends. I've watched as union workers fucked me over at trade shows. If you feel that unionizing is what you need, then I submit that, as a developer, you aren't capable enough keep a real job.

Pay me enough, and I'll happily GTFO of the programming trade. $50,000/year will do.

Re:Pick a different job. (0)

Anonymous Coward | about 2 months ago | (#47722197)

Because those two things are totally related.

Re: Pick a different job. (0)

Anonymous Coward | about 2 months ago | (#47722263)

Kind of similar, I would point out to my younger self that most business people want you to work you as much as they can to make them wealthy, and most developers are boring people who care far too much about a lot of shit that doesn't really matter.. Yeah scifi is fun, but it's just passive entertainment, not something you should base your life on. I struggle to get my coworkers interested in going out for a few beers once in a blue moon, because they'd rather sit at home watching TV. I should've travelled the world, drinking the night away on far flung beaches. Instead I spent two decades staring at a screen in a lab.

Re: Pick a different job. (1)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722447)

And drinking beer is a basis for a life? Look, AC, I started writing because I wanted something in my life that was wholly my own. I gravitated toward SF because I OD'ed on Judas Priest albums and thought androids on nuclear-powered motorcycles were cool.

Re:Pick a different job. (4, Insightful)

Khashishi (775369) | about 2 months ago | (#47722357)

It's not unionized because conditions aren't bad enough to warrant it, as much as programmers like to complain.

Re:Pick a different job. (2)

Lilith's Heart-shape (1224784) | about 2 months ago | (#47722487)

Is there a threshold value at which conditions do become bad enough to warrant organization? Private-sector unionization is on life-support, and the public sector isn't much better. Meanwhile, wages for the average worker in constant dollars have stagnated while prices and corporate profits continually increase. It's not like the government gives a shit about us, so maybe it's time we banded together and started looking out for ourselves and each other.

Re:Pick a different job. (1)

LessThanObvious (3671949) | about 2 months ago | (#47722417)

Is it really that bad out there? Are programmers outside of the big geographic technology growth areas really undervalued?

Re:Pick a different job. (1)

iceman480 (3793311) | about 2 months ago | (#47722443)

Ignoring naysayers like this.

"Programming isn't a profession like law or medicine"

You mean like medicine with huge student debt and lower payments from the insurance companies? You mean like law with huge debt and a law school bubble with too many lawyers?

Every industry has it concerns. Every parent would tell there child not to major in what they did. Pilot, doctor, teacher, even investment bankers (long hours) etc. What makes you think programming is any different. If you cant work around managements annoying nature in programming, than I don't think you can manage it in any other industry.

Re:Pick a different job. (1)

Anonymous Coward | about 2 months ago | (#47722465)

But unlike plumbers and electricians, programmers aren't smart enough to unionize

The problem being of course that they all think they're too smart. Every single one believes he is the exceptional "rugged" individual who can do better on his own than with the support of his fellow man.

I wish you'd know basic English... (-1, Flamebait)

Anonymous Coward | about 2 months ago | (#47722041)

It's "could NOT care less", you stupid, American cretin...

You don't even know what the hell you're saying when you say it. Could NOT care less. Idiot.

Re:I wish you'd know basic English... (0)

Anonymous Coward | about 2 months ago | (#47722201)

Yeah, I've seen this a LOT lately and it bothers me too. It's simple english. To say you could care less about something means literally that! This means that you DO care to some extent and that it could be neglected much further than it is currently.

Why is parent modded down?
Is it a new thing where we say the complete reverse to what we mean?
Is it opposite day already? Or are some people really that dumb?

Re:I wish you'd know basic English... (0)

Anonymous Coward | about 2 months ago | (#47722271)

Why is parent modded down?

Probably because you're angry. You could have said the same thing without foaming through your mouth.

Re:I wish you'd know basic English... (0)

Anonymous Coward | about 2 months ago | (#47722355)

Valid point but the parent was not me. You should not assume that 2 Anons in 1 thread are the same person. Also,I don't know of a mod option that is -1 too angry.

Re:I wish you'd know basic English... (1)

DERoss (1919496) | about 2 months ago | (#47722499)

Given that snydeq wrote the opposite of what we think he meant, he might not understand your (Anonymous Coward's) correction. After all illiteracy often includes an inability to understand what is written and not merely an inability to express one's self in writing.

snydeq wrote: "I simply loved to code and could have cared less about my 'career' ..." That means snydeq cared more than he could have cared. If he instead wrote: "I simply loved to code and could not have cared less about my 'career' ...", that would mean he did not care at all.

research what's in demand (1)

mpicpp (3454017) | about 2 months ago | (#47722049)

I would have saved myself a lot of trouble if I had looked at job postings to see what was in demand and what was not. I'm also going to suggest at least an associates degree. If you have a master's, you get much more interesting projects to work on. Some people look at degrees and some people give technical interviews. A degree isn't mandatory, but you do get exposed to standards and how people expect your code to look, function, etc.

Getting a job is not what you'd want (0)

Anonymous Coward | about 2 months ago | (#47722051)

My parents raised me with a pragmatic approach to life: study hard and then get a job. They should have said: "Study hard, so you can go and live a productive life while changing the world."

Re:Getting a job is not what you'd want (1)

slazzy (864185) | about 2 months ago | (#47722279)

Yes, instead of looking for a great job, create great jobs for people.

javascript: I read it instead (0)

Anonymous Coward | about 2 months ago | (#47722053)

Reading server up-time maintenance...

Every day until I retire I would.... (0)

Anonymous Coward | about 2 months ago | (#47722079)

Every day (until I retire) that I would code boring stuff that other people (that can't make up their mind) want.

History (5, Insightful)

TechNeilogy (2948399) | about 2 months ago | (#47722083)

I would have studied more about the history of computers and computer science. It would have kept me from re-making so many mistakes and re-inventing so many wheels.

Where to begin (4, Interesting)

MAXOMENOS (9802) | about 2 months ago | (#47722087)

  • Project management, specifically the importance of not being a bottleneck.

  • How to design a solution on my own time before I code a solution on company time.
  • Differential diagnosis of bugs (see #2 of the link above --- although I learned this skill later in graduate school and have applied it multiple times since.)
  • Code for readability and correctness first, efficiency later. Code that is "too clever" will never be maintained (except by you).
  • I really enjoy programming as a way of automating tasks and not for other reasons --- which makes me better as a systems administrator than as a software developer.

Re:Where to begin (5, Insightful)

preaction (1526109) | about 2 months ago | (#47722179)

  • How to design a solution on my own time before I code a solution on company time.

Though I inevitably unconsciously think about work code during non-work time, I will never consciously spend time thinking about or working on work code during non-work time.

They are paying for my brain, they can pay me to sit and think for a while. The actual typing of code is not what programming is.

How to troubleshoot. (4, Informative)

darylb (10898) | about 2 months ago | (#47722091)

Knowing how to troubleshoot systems -- whether it's code, or things like cars and other physical machines or electrical wiring -- is key. Every programmer will spend time fixing his own code, and has a good chance of spending even more time fixing someone else's. Building the skill to understand complex systems quickly, and to apply fixes that are short of "re-write the whole thing", is essential.

I've been a developer for over 20 years. Maybe 20-25% of my total time is spent writing new functionality. About 35% is fixing bugs (mine and others'), with the remainder spent on process documentation, design, etc.

How to write code (4, Insightful)

DudeTheMath (522264) | about 2 months ago | (#47722093)

Write like someone smarter than you will have to fix it ("Who wrote this crap? At least I can tell why he or she did that."), and like someone dumber than you will be adding features ("Bless him or her for making this easy."). You'll be both eventually.

Re:How to write code (0)

Anonymous Coward | about 2 months ago | (#47722359)

You save only 59 seconds over 8 miles by going 75 instead of 65. Do you really have to pass that guy? Do the Math!

Ya sorry I'm late. I would have been here 3 seconds ago but the jerk in front of me had a bike rack!

Re:How to write code (4, Insightful)

Jason Levine (196982) | about 2 months ago | (#47722381)

The worst is when you handle old code and think "Who programmed this garbage", only to realize you did years ago.

That's the bad part of growing as a programmer, you look back at your old code and see it as awful since you now know better. (It can also wind up making you think you're a horrible programmer because your old code looks so bad. It doesn't mean you ARE a horrible programmer, though, just that you are growing.)

Read a book (0)

Anonymous Coward | about 2 months ago | (#47722097)

If I had a time machine I'd tell old me to read even more. I spent a lot of time reading, but not enough since I'm still learning plenty of stuff that makes my life incredibly easier. And then go contribute to some stuff on GitHub instead of writing irrelevant subkloc crap all the time.

But overall I did fairly well. Nice job, old me.

Captcha : reread

Quite simply... (5, Funny)

NecroPuppy (222648) | about 2 months ago | (#47722113)

That people who use spaces for indentation are just WRONG. :)

SmallTalk (1)

angel'o'sphere (80593) | about 2 months ago | (#47722131)

I wished I had known about SmallTalk and started with it rather soon.

Perhaps I should have finished my studies quicker and made a PhD and should have went into research instead of programming in the industries.

Most programming jobs are complete shit (0)

Anonymous Coward | about 2 months ago | (#47722137)

Get ready to be told how to do your job by some asshole who read a "How to Program in 24 hours" book and thinks s/he can engineer a solution better than someone with 20 years of experience in the problem space, and then learn how to take the blame when it all falls to shit.

The secret, of course, is to do this while being amiable and competent. As long as my paycheck is deposited on time and as long as that money spends, you can call me a mother-fucking incompetent fuckhead all day long.

Hindsight is 20/20 (5, Insightful)

MagickalMyst (1003128) | about 2 months ago | (#47722141)

I wish I had known how uninteresting and boring coding could be when working for a corporation. It was the ability to be creative and imaginative that made me fall in love with coding in the early eighties. Although I still work in IT, I generally don't code for companies anymore. And somehow coding has miraculously become very interesting once again!

Found a company (0)

Anonymous Coward | about 2 months ago | (#47722159)

Even if there is a big exit, employees get a bonus and founders get paid.

Managment is populated by idiots (0)

Anonymous Coward | about 2 months ago | (#47722161)

and those are the good ones. They generally don't get in the way enough to prevent success. Then you get one that thinks they know enough to 'fix software development". That's when you're really in trouble.

That an assembler was way easier than hex opcodes (4, Insightful)

mark-t (151149) | about 2 months ago | (#47722171)

When I first started programming the 6502, back in 1981, I was still in school, and I was manually entering hex opcodes for every machine language program I wanted to create... I was doing this for about 6 months before somebody pointed out that I could use an assembler. I honestly didn't understand what they were talking about until I used one to type in a program that I saw in Nibble magazine. I never looked back. An assembler would have saved me *loads* of time if I had known about it at the beginning.

Not so many good looking chicks (-1)

Anonymous Coward | about 2 months ago | (#47722173)

as I thought. Did not know that.

Kids These Days (0)

Anonymous Coward | about 2 months ago | (#47722175)

Newbie programmers these days are completely spoiled with the riches of memory and GHz available. I wish I'd known that a lot of the time spent hand-optimizing my code would be immaterial in a few years time when newer cheaper hardware made the improvements negligible.

Test driven development. (3, Informative)

aeschinesthesocratic (1359449) | about 2 months ago | (#47722177)

Or just the proper applications of unit and regression tests.

Grit (4, Insightful)

jones_supa (887896) | about 2 months ago | (#47722183)

I would have teached him grit. Oh god, how many unfinished little projects I had. Learn to concentrate on one thing and finish it properly. Just keep grinding on it.

Rewrite (1)

ERJ (600451) | about 2 months ago | (#47722189)

Sometimes re-writing something just because it uses older technologies or isn't how you would design it is not worth it. Your customers may live by the "quirks" of your system and those code work-arounds may be there for a reason.

I wish I had read Dale Carnegie (4, Insightful)

pscottdv (676889) | about 2 months ago | (#47722203)

How to Win Friends and Influence People

Important knowledge (0)

Anonymous Coward | about 2 months ago | (#47722211)

What a soul sucking career career it really is.

Simple (4, Insightful)

geekoid (135745) | about 2 months ago | (#47722217)

put every god damn penny you can into a 401k.
Oh, you mean programming wise?

Get on the right track (1)

Mr. McGibby (41471) | about 2 months ago | (#47722221)

Once you've got experience in one language, technology, or area, it can be hard to get out of it. Employers look for people that already have experience in the field. If your first job isn't what you envision yourself doing for the rest of your life, then make efforts to get experience doing the things you want to do. Most any programming experience is worthwhile, but once you feel you've learned what you can, find another job.

Find awesome coders and learn from them (0)

Anonymous Coward | about 2 months ago | (#47722235)

**Read their code**.

Talk to them. E-mail them. Chat with them. Download open source software and challenge yourself to hack in a new feature.

I spent a lot of my youth programming in a vacuum. I learned a lot, but I would have learned faster if I didn't re-invent (and fail at re-inventing) many things myself.

Maybe he should consider learning a language (2, Insightful)

ScentCone (795499) | about 2 months ago | (#47722239)

Like, perhaps, English. So that he could - after all these years as a professional who types out strings of characters that very specific meaning - understand that when he says "could have cared less about my career," he means "could NOT have cared less about my career."

Maybe he's been working all these years in languages that don't incorporate the concept of "not" or " ! " in evaluating two values. Are there any? I couldn't care less. Grown-ups who communicate or code for a living should be able to handle that one correctly.

A Programmer Competency Matrix (5, Interesting)

Deffexor (230167) | about 2 months ago | (#47722249)

This Programmer Competency Matrix [sijinjoseph.com] has been instrumental in helping me "know what I don't know".

Re:A Programmer Competency Matrix (2)

jones_supa (887896) | about 2 months ago | (#47722379)

I like it too, but it's kind of brutal. :) I'd say that even if you land somewhere between level 1 and 2, you're pretty good already. This is how I would interpret it:

Level 0: Rookie
Level 1: Competent for many programming jobs
Level 2: Experienced guy competent for most programming jobs
Level 3: A true genius competent for the most advanced tasks

Starting out programming in HS and college... (0)

Anonymous Coward | about 2 months ago | (#47722257)

...I wish I'd known to spend less time hunched over the keyboard and more time getting laid.

Contracts (0)

Anonymous Coward | about 2 months ago | (#47722259)

I wish I had known more about contracts and asserted my influence more in negotiating them. Decades ago, good programmers with domain-specific knowledge were hard to find. Verbal promises were easy to come by, as well as easy to break.

Become A CEO instead (0)

Anonymous Coward | about 2 months ago | (#47722289)

mo money, mo perks and sales people will buy you drinks at strip clubs

All the program language snobs out there (0)

Anonymous Coward | about 2 months ago | (#47722305)

Seriously if you learn VB, Java, and C# all the hipsters want you learn some play language with crazy features that I don't need for 99% of things.

One Year In (5, Informative)

Niris (1443675) | about 2 months ago | (#47722311)

I just had my one year anniversary as a full time Android developer, and it's insane how much I've learned after leaving school. Luckily there's two older guys (well, one now, the other moved on recently) on my team who are _awesome_ mentors.

1. Pay attention to everything you can in the work place. You may be a client side developer, backend, whatever, but pay attention in every meeting or conversation that you can eavesdrop on. You may not understand everything going on with the teams you don't work in, but just being exposed to their terminology and _looking up what they're talking about_ will get you far. This doesn't go for just development, either - listen to the business and sales guys talk and try to understand your clients and what they need so you can build a great product by anticipating what will work for them before they have to ask.

2. Write a blog. Seriously. I'm the first to admit that I don't really know anything when it comes to development, but I've been actively writing new posts to my blog [blogspot.com] and it forces me to grok whatever I'm writing about. Whatever you're doing, post the code on GitHub so others can read it (mine's here [github.com] ). Developers who read peoples code online tend to be awesome about making suggestions and asking questions that make you realize you screwed up without being jackasses about it.

3. If there are tech meetups in your area, go to them. If you're in a decent sized city (I'm in the Denver/Boulder area, which isn't huge, but it's a lot bigger than where I'm originally from) you can find multiple meetup groups related to tech that you're interested in. It's a great way to learn new things and meet a lot of awesome people in your area.

4. If there's hackathons in your area, no matter how small, go to them. You meet awesome people and learn how to work in teams that are different than the one you're in every other day. Plus there's usually free food and beer, so what's not to like about that?

5. Pick up skills that compliment your work area by doing projects that aren't work related. It helps you understand what other teams are doing and how it affects you, plus it just makes you more awesome while keeping down the monotony. As a client side developer, I've been taking a Udacity course on using AppEngine to make backend APIs, and it's been fun.

6. For the love of God, check for null pointers and other kinds of exceptions. You may not catch all of them due to inexperience in spotting them, but that's what senior devs doing code reviews are for. You don't want code going into the wild that crashes, even when data is bad. Getting a call on a Saturday saying something bad is happening is not what you want - the weekends are yours to do whatever you want, not put out fires that could have been avoided.

7. Open source third party libraries are your friend. People way smarter than me have put together some amazing things that we use every day, like Otto and Picasso from Square. Try libraries out in a sample project, and if they will work for what you're doing, give it a shot. If you can make them better in the process, submit a pull request. Like I mentioned earlier, the open source community is awesome and if your pull request isn't up to par, they'll let you know what you can do to fix it.

8. You're going to fail at some things, and it's alright. Fail early, learn what did and didn't work, and try again. Learning from mistakes is how you get better. Along this same line of thought, if you run into a roadblock that you can't figure out yourself via documentation/stepping back and evaluating the problem, StackOverflow [stackoverflow.com] is awesome.

Two things.... (4, Insightful)

bobbied (2522392) | about 2 months ago | (#47722327)

1. A copy of the "Mythical Man Month" by Fredrick Brooks and being told to read it.

2. A set of closing prices for every stock on the NY exchange for the next 20 years with the advice to become an investment banker..

If #2 isn't possible, then sitting down with somebody who could explain that you get what you negotiate, not what you deserve, so don't settle for what you get.

Learn the tools (1)

MikeRT (947531) | about 2 months ago | (#47722333)

The best tools in a language's ecosystem will free you to actually use the language as intended. With Maven that's certainly the case. Once I committed myself to spending a few days really learning how Maven worked and trying various scenarios with it, I almost cried at how much opportunity cost I'd incurred from sticking with Java IDEs in the past before Maven was built in everywhere. By freeing me from Jar hell, making testing as easy as following a convention and "mvn test" and stuff like that, it got 75% of the drudge work out of the way immediately, leaving me to actually learn Java.

Hardware (1)

TechyImmigrant (175943) | about 2 months ago | (#47722345)

1) Screw software, hardware is where it's at.

2) Hard topics pay well: DSP, information theory, crypto, information coding, etc.

SW Engineering as a _trade_ is still maturing (1)

Krishnoid (984597) | about 2 months ago | (#47722373)

One thing that keeps coming up is the constant inflow of rookie (and intermediate-level) programmers making rookie mistakes. There seems to be an unwillingness to treat software creation, from the academic level onward, as a controllable process towards a working, reliable, secure, usable, maintainable result. It's still being treated from day one as a sandbox with a rigorous theoretical mathematical underpinning, but cowboy coders and fluid design-level rules in the day-to-day.

Examples of this are that the nuts and bolts of code standards, defensive programming, code hygiene, technical debt, refactoring, and at a higher level, revision control, automatic builds, code review, and static analysis are considered best practices by some, but are nowhere near ubiquitous.

It may not be an unwillingness as much as growing pains, or that the field lacks a requirement for a P.E. certification that can be used to push back on unreasonable business pressures. Don't assume that you're entering or working in a field that has a well-established set of rules that you can rely on, and if your gut tells you that cult of personality is overriding a technically-based meritocracy, that may very well be the case. The process of software creation seems to still be changing, evolving, maturing.

You can still learn those best practices and apply whichever of them you have the power to in your own environment -- just don't assume everybody will abide by them, or even agree as to what they are.

9-to-5 and documentation (0)

Anonymous Coward | about 2 months ago | (#47722401)

What do I wish I knew before becoming a programmer?

The boss expects you to be in the office every day and be on-time at 8:30 am

"The Boss" isn't a programmer himself

The boss expects code to be documented and expects documentation to be written for the end user.

WTF? I code when it suits me and the code speaks for itself, but the boss can't understand that because he's not a programmer.

Programming is a tool (0)

Anonymous Coward | about 2 months ago | (#47722403)

And use of that tool depends on the problem space. It's like asking people in a hardware store what they wish they'd known before they started, um, screwing?

My lessons (5, Interesting)

Rob Hostetter (2908585) | about 2 months ago | (#47722409)

Here's my advice, been programming for 15 years. Write comments, one per block of code that does a step, then fill in code. You will then have well commented code, and forced yourself to think through the solution before you begin coding. This saves tons of time by avoiding thought errors before you code. When hunting a bug, don't just look at what's not working. Instead look at what was most recently changed, even if it seems it couldn't possibly be related. The times I didn't do it this way have cost me many days hunting down a really tricky bug. Sometimes it really is unrelated to recent changes, but not often. If you are stuck, take a break and do something mindless, like get some water, go to bathroom etc. your subconscious keeps working without the interference of your conscious mind. Preplan your work a few days ahead if possible. You can avoid many roadblocks by thinking through things ahead of time. Persistence pays off. I've worked through many "seemingly impossible" tasks, only to find the solution after failing a few times first. Visualize what the users interaction will be before coding. I like to draw it on paper and pretend to use it. Putting yourself in your users shoes allows you to see what might be difficult to understand. I rarely keep my first design, but since it's just a drawing I'm not invested in it. If you lay it out in software, it's much more tempting to keep a poor design. Ask a colleague if you are stuck. Often, articulating the problem out loud is sufficient to solve it!

Memory Debugger and Profiler (1)

jimmifett (2434568) | about 2 months ago | (#47722411)

This would have been so useful to know how to use back in the olden days of yore.

What do the kids use these days for the various languages?

Reusability (1)

wzinc (612701) | about 2 months ago | (#47722429)

Reusability and modularization - those would've saved me a lot of time.

Easy (1)

mseeger (40923) | about 2 months ago | (#47722437)

I wish i had known that i knew nothing ;-). Because at that time i thought i knew everything...

Assembly (0)

Anonymous Coward | about 2 months ago | (#47722439)

To start on a simple machine with assembly, not a powerful machine with BASIC

If I had a timemachine (1)

zwarte piet (1023413) | about 2 months ago | (#47722441)

I'd be having a threesome with my younger self and older self

In a large organization, politics matter (4, Insightful)

idontgno (624372) | about 2 months ago | (#47722461)

You can ignore them, in which case you've volunteered for the role of "victim".

You can make them your full-time job, in which case you're no longer a developer.

You should find a good defensive middle ground. At least, some situational awareness. Put your head up and look around. And listen.

Spaghetti sucks when it's code (0)

Anonymous Coward | about 2 months ago | (#47722473)

Proper code architecture / abstraction!

Advice to my younger self considering an IT career (3, Interesting)

MondoGordo (2277808) | about 2 months ago | (#47722485)

Become a plumber. - better hours, comparable pay, healthier lifestyle, & your job will never be off-shored or out-sourced,
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?