4 (+6) Tips for Being a Good Programmer

The Codist has an article today entitled, “So You Want To Become A Programmer“.
The post has 6 solid entries for getting a person imbued in the programming culture, and landing the first job. If these sort of tips interest you, I strongly suggest you give it a read. I humbly offer my own additions to the list:

7) Code cleanly
This could be an amendment to #4 . Writing clean code can give you a distinct edge if you are lacking experience.
There are so many people that write spaghetti code with the one letter variables, and 100+ line functions who brute force their way into the profession through sheer problem solving ability and force of will. When you apply for an entry level position, you are often applying for the ability to mentor with a senior developer, or a team of developers. They would rather have a “clean slate” with no bad habits, than a hot shot problem solver who writes in their own dialect.

8) Learn development methodologies
This one is two fold:

  1. Even if you are a solo developer, you are never coding alone. Part of being a professional programmer is insuring that when you get hit by a bus, the application doesn’t go with you. You need to learn what is expected of a good application, and what your future project leads or maintainers would like to see.
  2. Learning development methodologies is also a good idea because it will give you a better idea how to interact with a team of developers. Lone coders are a dime a dozen. If you know how to play nicely in the sandbox, you will be more attractive to potential employers. A team can’t rearrange itself to fit your quirks. Showing that you understand when and how to communicate, and an idea of the many phases of development will lower any risk associated with your employment.

9) Learn to love over-time.
If you program, you are going to be lucky to have a 40 hour week. Yet, You are probably going to be paid for 40 hours of work as a salaried employee. You need to come to grips with that fact. Few people -enjoy- working and not getting paid for it, but is going to happen. On top of that, you have selected one of the most fluctuating fields out there. It is on your time, and your dime to keep pace with emerging technologies. This is one aspect that separates a good programmer from a great programmer.

10) Get the job done
The previous points have been about doing your job well. This point is about WHEN you do your job.
All businesses and project owners operate under deadline. If you accept a project with a deadline, you need to follow through. Even if you accepted something with a ludicrous date, the deed is already done. This point ties to #9.When you accept any deadline, it is your responsibility to see it through (regardless of the time it takes). When you follow through on deadlines with clean code, you increase your trustworthiness, your reputation, and your value as an employee. You want to be the goto person and in demand. If you consistently getting low balled with deadlines, you need to assess your situation:

  1. Are you estimating your due dates correctly? Do you have a good methodology for estimating man hours?
  2. Have you educated your project owner about cutting corners? Have you given real world examples of how deviating from procedures can impact the bottom line?
  3. If you feel you have sufficiently addressed the first two items, it is not out of the realm of possibility that you are being taken advantage of. At least you get a clear signal that the current position is not a good fit.
Tags: , ,
Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Reddit
  • DZone
  • Technorati
  • StumbleUpon

11 Responses to “4 (+6) Tips for Being a Good Programmer”

  1. jon Says:

    About #9, what the hell? So you belive that a programmer should work for free? Why does the employer deserve such charity?

  2. Charles Says:

    They definitely don’t deserve charity. But as a salaried employee, you should be paid more than you would be if you were hired as an hourly employee. You are expected to get the job done. That is the part I want to emphasize. I have seen many new programmers come in with a mentality of “you are only paying me for 75% output. I will increase my productivity if you increase my pay”. You give 100% (or more) until you either don’t want to, or you are being taken advantage of. Then it is time to renegotiate. The other more simple scenario:
    You are given a task on Friday at 4:30 which is due on Monday morning. You are going to have to work on the weekend. Sometimes you will get Comp time, and sometimes you won’t depending on what the task is. There are a considerable amount of intangible drains on your time which will carry you well outside the realm of a 9 to 5 job.

  3. JT Says:

    The issue here is not working for free. It’s really about being flexible and not adhering to a strict 40 hour work week. An employer should expect a bit of flex time… sometimes it will be short, other times long. But the more an employee holds to the “40 hours and I’m outta here” approach, the less management thinks of them being a “get it done” kind of person. This may suck as in general the contract is for 40 hours week, but it’s the way life works. Is it right? that’s debatable… but it is the way things work at most companies. I’ve seen promotions awarded for people working “hard”… not “right”. Again, it sucks. But to “get ahead” it pays to be aware of the way management views these situations.

  4. Chris Says:

    Strongly disagree with #9. In my experience developer overtime has always been a direct result of poor management - poor project planning, ludicrously optimistic design, poor problem anticipation and avoidance, poor communication.

    A new programmer is way better off doing his/her best to avoid the badly mismanaged outfits. Instead opt for the ones that don’t treat their developers like an inherently inferior species that can be flogged into working 12 hr days just because developers don’t have an MBA.

  5. Tara Says:

    Chris and Jon….
    Ok….so you believe you only work 40 hours a week and your done?? I’m not even a programmer and I know that’s not true. It has been my experience that working with those people who say it’s 5pm and I’m outta here @ 4:59 are not the most productive sorts. You need to put 110% all the time every time. If you want to make a name for yourself within your company you need to be willing to bend over a little. If you company appreciates you…you’re gonna see it in your pay check. If they don’t…you just need to move on until you find a place that does, and sometimes, you’ll never find it and you just need to ask yourself…do I need a career change? Poor management or not the failure of a project is ultimately on you even if you’re not really to “blame.” So you might as well nut up and get the job done.

  6. Robert Says:

    Number 9; This is against the law. If developers are willing to do this then they will be taken advantage of. In California, salaried does not mean ‘exempt.’ A programmer must be making the equivalent of ~40 dollars an hour to be considered exempt or an executive of some type.
    This is kind of thinking is not ‘OK’ no matter what your career path is. If you are not exempt and you are working over time you are being taken advantage of. Corporations DO NOT have your best interests at heart and if they had it their way you would work for free. There is a reason why we have labor laws.

  7. Chris Says:

    There are different kinds of overtime. On the point of principle, I am very reluctant to do overtime that involves routine tasks. Working until 9pm to fix yet another bug in the payroll system is not why I joined this field. Of course, things happen once in a while and you have to step in, such as when you are new to the team or the tasks have large visibility and impact, but I believe working overtime should be an exception.

    However I have no problem staying late to work on innovative projects. The deal is that if I am staying late without extra pay, then at least I get out of it something, such as knowledge of new technology or a valuable experience.

    My point, and its one based on experience, is that a developer is usually better off resisting overtime than actually embracing it. Once you start routinely doing overtime, management expects you to keep doing the same for the same pay. You just end up raising the bar for yourself.

    Let me tell you where I come from. I used to work for a large software vendor where everybody was putting in a fair amount of overtime. Management just took it, said “thanks for the great effort, team!” in a lovely email and life moved on. The people that stayed that latest were not necessarily the ones that got the promotions. Now I work for a small company that does Extreme Programming, where I am at least twice as productive as before, yet we never go beyond 40 hr days (which is part of the XP paradigm). My career and pay is so much better for it, and the level of satisfaction with what I do has quadrupled.

    Of course, developers should always spend extra time staying on top of technologies, reading up on trends and experimenting with languages, and I do a fair amount of stuff like that during evenings and weekends. You will never go far in the field if you don’t.

    Just my experience anyways.

  8. Charles Says:

    Chris,
    Those very valid points and I agree completely. I think we are talking around the same points. When you are a beginning developer, you are gaining knowledge of a new (to you) technology, as well as experience that can be put on the resume. I think it is a balancing act that is more difficult for a beginning developer to address. Someone in your situation has far more leverage, and no need to pad the resume.
    An experienced developer should hopefully never get into the situation. They have more experiencing with controlling the direction of projects to insure success on a sane schedule.

    Sorry to Threadjack: Could we discuss your Extreme Programming experiences some time?
    I have yet to talk to someone who didn’t have an agenda in pushing XP. I would love to hear your input, as a hopefully unbiased source.

  9. Tara Says:

    Chris it sounded much better this time and I am in agreement. I’m hardly gracious about working overtime I just know it’s what I need to do in the position where I work.

    As for Robert….of course corporations don’t care about you…however in my line of work, if the cat is bleeding all over the floor it doesn’t mean I get to leave because it’s 10pm…yeah there are labor laws but sometimes you need to stick it out to get the job done. I don’t look at that as being taken advantage of I see it as being able to fix the problem and fix it well.

  10. JT Says:

    Corporations are indeed, incented to take advantage of employees. It’s wise to study or at least know the laws in your governing state. PA for example is an employment at will state so an employer can release an employee without notice for no reason without penalty.

    California is clearly different than the east coast. I’ve lived and worked in both places. But again, it’s important to understand and work your local laws. Most employers, however, are not really happy to hear law quoted to them.

    Again, it’s about working the system here. Knowing what’s expected and how to deliver that is key. Personally, I don’t care what hours my employees work as long as they meet their own deadlines. I don’t “set” deadlines for them, rather negotiate with them to establish those timelines. If an employee has a problem meeting a deadline and did not notify me of that issue, we will have a problem.

    It’s key to be flexible.

Leave a Reply