Follow Slashdot blog updates by subscribing to our blog RSS feed


Forgot your password?

Ask Slashdot: What Do You Wish You'd Known Starting Out As a Programmer? 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?
This discussion has been archived. No new comments can be posted.

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

Comments Filter:
  • How to troubleshoot. (Score:5, Informative)

    by darylb ( 10898 ) on Thursday August 21, 2014 @01:40PM (#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.

  • by aeschinesthesocratic ( 1359449 ) on Thursday August 21, 2014 @01:48PM (#47722177)
    Or just the proper applications of unit and regression tests.
  • One Year In (Score:5, Informative)

    by Niris ( 1443675 ) on Thursday August 21, 2014 @02:00PM (#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 [] 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 []). 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 [] is awesome.
  • by NoImNotNineVolt ( 832851 ) on Thursday August 21, 2014 @02:14PM (#47722489) Homepage
    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?
  • by Anonymous Coward on Thursday August 21, 2014 @02:39PM (#47722793)

    C is a very fine first language. I started with BASIC on C64.

  • by Kevin by the Beach ( 3600539 ) on Thursday August 21, 2014 @03:01PM (#47722971) Homepage
    Amen, and Amen. I wasted so much of my life meeting meaningless deadlines. When my children were growing up, the wisest advice I gave them was to NOT choose a computer career. (both are Social Workers like their Mom) Sure, It's less money but they will live longer and be much happier with a life worth living. Programmers come in two shades... Green and Jaded
  • by plopez ( 54068 ) on Thursday August 21, 2014 @03:27PM (#47723151) Journal

    If I get paid for it.

  • Regular expressions (Score:5, Informative)

    by Drakker ( 89038 ) on Thursday August 21, 2014 @03:31PM (#47723183) Homepage Journal

    Why... regular expressions of course! I could have saved myself endless hours of dumbfounded confusion!

  • by Foolhardly ( 1773982 ) on Thursday August 21, 2014 @04:59PM (#47723891)
    How did this get modded up? These kinds of statements say far more about the person saying them than anything closely resembling reality. I spent nearly 6 years as a plumber before I made the switch to programming and only one of these points has any validity.

    better hours

    Forget the fact that some summer days you'll wake up at 3:30 AM and head to the job site because by the afternoon it's too hot to throw a shovel (dig holes/trenches). Plumbing is the kind of work with mandatory overtime, 24-hour on-call shifts, AND inversely periods of time where work dries up completely (i.e., no pay).

    comparable pay

    In 3 years as programmer my income has surpassed the highest paid, 30-year veteran, Journeyman plumber at my previous place of employment. And good luck finding an employer that offers 401K contribution matching.

    healthier lifestyle

    Tell that to my great grandfather, my grandfather, several uncles, brother, and my father - all plumbers with severe back issues starting early in their careers and worsening to a chronic state in old age.

    While I'm sure that poor pay and shitty hours are a reality for some programmers, they usually have a choice whether they realize it or not. Most blue collar professions don't provide you the option to quit and find better conditions in the same field elsewhere.

    If you're overworked, underpaid, and unhealthy that is on you to do something about it.

  • by Prien715 ( 251944 ) <`moc.liamg' `ta' `epopcitsonga'> on Thursday August 21, 2014 @06:24PM (#47724443) Journal

    Do you understand the benefits of a union?

    Classically speaking, unions existed to drive up benefits through threat of strikes or walkouts. In the 20's and 30's, unions were responsible for the 40 hours workweek, Saturdays off, and a living wage -- by preventing things like random firings and unpaid work (see 80 hour work weeks in the game industry).

    To be clear, if individuals were better at negotiating wages, we'd see a rise in salary in the field, but according to statistics [] this is quite simply not the case. "Ah, but salary went up from 80K to over 100K you say", to which I agree, but if you adjust for inflation [], you'll see that that $80K in 2004 is equivalent to $100K in 2014 (26.1%). In the same period, the tech heavy Nasdaq grew 143% []. While some of this can be attributed to there being more people employed in the field, I doubt there 2.5x more CS graduates than there were ten years ago.

    So while pay is still decent, there's still no rise in salary despite what many consider an obvious shortage in the field. If more CS majors studied those useless fields like "history", we'd have a union and there wouldn't be a bunch of indentured servants [] known as H1Bs driving wages down (by artificially inflating the labor pool with people who can't quit).

"The eleventh commandment was `Thou Shalt Compute' or `Thou Shalt Not Compute' -- I forget which." -- Epigrams in Programming, ACM SIGPLAN Sept. 1982