Forgot your password?
typodupeerror
Programming

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

Posted by Soulskill
from the how-to-program dept.
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:
  • Where to begin (Score:5, Interesting)

    by MAXOMENOS (9802) <maxomai.gmail@com> on Thursday August 21, 2014 @12:40PM (#47722087) Homepage
    • 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.
  • by MAXOMENOS (9802) <maxomai.gmail@com> on Thursday August 21, 2014 @12:43PM (#47722117) Homepage
    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."
  • by roman_mir (125474) on Thursday August 21, 2014 @12:43PM (#47722119) Homepage Journal

    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.

  • by Deffexor (230167) on Thursday August 21, 2014 @12:54PM (#47722249)
    This Programmer Competency Matrix [sijinjoseph.com] has been instrumental in helping me "know what I don't know".
  • My lessons (Score:5, Interesting)

    by Rob Hostetter (2908585) on Thursday August 21, 2014 @01:07PM (#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!
  • by udachny (2454394) on Thursday August 21, 2014 @01:08PM (#47722421) Journal

    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.

  • by MondoGordo (2277808) on Thursday August 21, 2014 @01:14PM (#47722485)
    Become a plumber. - better hours, comparable pay, healthier lifestyle, & your job will never be off-shored or out-sourced,
  • by carlhaagen (1021273) on Thursday August 21, 2014 @01:33PM (#47722717)
    I started programming as a kid at the age of 10. This question just doesn't apply to me at all. No such thing as "career" etc. were relevant to me at that point.
  • by obarthelemy (160321) on Thursday August 21, 2014 @01:35PM (#47722755)

    I work for consulting firms, selling both flesh-by-the-month and fixed-budget custom dev/integration. Here's what I'd like begining devs to know:

    1- be presentable. Be clean, pleasant, non-threatening (agreed, that means be lame. Lame is good). You don't *have* to wear a suit and tie (though if you want to move up, you probably should), but at least clean jeans (chinos is much better) and a top with a collar (polo is OK). "Town" shoes are much better than hiking or sport shoes. Needing to express your personality by shocking others is pretty much a dead-end. It's not "look how much you need me that I can bug you by being an ass", it's "look how much I'm sabotaging myself by making my self be a problem".

    2- don't be afraid to say "no" and "I don't know". And don't say anything else instead (like "yes" or "this idea/tech sucks"). If your client/boss is asking for unrealistic, impossible stuff, just say so, or at least say you need to check, don't accept. Saying you can't do something, or something is undoable, will hurt you and others a lot less than accepting and then not delivering. Also, "I can't do it" and "it's undoable" are not the same. Maybe you need help from someone else. Maybe you need training.

    3- Be proactive. Learn new skills and try to help people around you. You boss mainly. If you spot a problem or a potential sale, say so. Don't make a huge issue out of it, don't get frustrated if it doesn't get top priority, but do point out issues, and if you can, solutions.

    4- be patient. Many youngsters have this mental image of where they want to get, and how good they are. You'll probably get there, but not in 6 months. You *will* have to work on nonsensical doomed projects, with idiots as coworkers and bosses. That doesn't prevent you from building skills (technical, personal , organizational), networking and building up your brand...

  • by Anonymous Coward on Thursday August 21, 2014 @01:53PM (#47722909)

    I've had quite the opposite experience. I've worked multiple union and non-union shops, and the only thing the union shops had going for them was slightly more pay. The culture sucked. The managers really sucked and were sexist dicks. The waste of resources was astounding. Few people put in more than three hours of work a day (I don't consider this to be a positive thing)... and, most importantly - all the most skilled people who were the most enjoyable to work with quit because the culture was so shitty.

    Now I work non-union and it's a bit more stressful, yes, but I don't feel the us-against-them nonsense between managements and underlings, and I don't have to put up with idiot incompetent co-workers and managers to the same degree. Oh - I also have better benefits and a pension plan than any union shop around here.

  • by plopez (54068) on Thursday August 21, 2014 @02:33PM (#47723199) Journal

    Learn principles and techniques. A little theory. Use programming languages to help you learn it but do not obsess over the language. All programming languages suck, just to a greater or lesser extent and some in more interesting ways than others. But basic principles never change.

  • Writing (Score:5, Interesting)

    by Art3x (973401) on Thursday August 21, 2014 @04:12PM (#47723975)

    I'm going to answer this in a different way: what I knew when I started that I think most programmers, and most people, don't. That may sound arrogant, but I keep seeing it every day of my working life.

    I wasn't a computer science major or anywhere close: I was a film major and English minor. It was the English that has helped me more than anything learn very quickly certain secrets to programming effectively. And yet it wasn't even the English classes themselves, because a lot of what is fashionable to teach in English [paulgraham.com] is misleading or harmful.

    What really happened was a certain approach to writing. It is taught clearly in just a few books, like The Elements of Style and On Writing Well. Reading these books literally changed my life. If I were to try to summarize it, it would be that the goal of writing is to reach the reader as plainly as possible, instead of writing in a flowery, fancy, or important-sounding way. To do that actually is the greatest amount of work. It actually is the opposite of everyone's inclination. Even for professional, longtime writers, it doesn't happen on the first draft or even the seventh draft. It involves adhering to certain non-glamorous principles like using as few words as possible and preferring the short word over the long one. It means putting yourself in the background. In short, in trying to be elegant [paulgraham.com].

What this country needs is a dime that will buy a good five-cent bagel.

Working...