SitePoint Sponsor

User Tag List

Page 1 of 3 123 LastLast
Results 1 to 25 of 75
  1. #1
    SitePoint Wizard
    Join Date
    Dec 2004
    Location
    At My Desk!!
    Posts
    1,642
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    What makes a good programmer?

    Ok so 1 minute you think your doing really well and you know how to do this and that, then when the internet goes and you need to write a script without any internet resources or any books you go blank! Does that mean that you are not a very good programmer as you cant remember how to do it all, or is it the fact that there is so much to learn that keeping it all inside that tiny brain box would be impossible?

    Thoughts on this please as im loosing self belief
    "Am I the only one doing ASP.NET in Delphi(Pascal)?"

  2. #2
    SitePoint Evangelist dscriptor's Avatar
    Join Date
    Oct 2005
    Location
    in front of my computer
    Posts
    571
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    i believe a good programmer, understands what he's doing, i mean, when the time comes that no more manual and internet, he knows how to manipulate certain things and solve a problem.

    but, a good programmer, also knows how to keep his references in case a need arise.
    happy is the man that finds wisdom....wisdom in {PHP}.


  3. #3
    dooby dooby doo silver trophybronze trophy
    spikeZ's Avatar
    Join Date
    Aug 2004
    Location
    Manchester UK
    Posts
    13,807
    Mentioned
    158 Post(s)
    Tagged
    3 Thread(s)
    I doubt there is anyone who can remember all the funtions from memory so what I do is:
    download and keep a copy of the manuals on the computer & a flash drive
    When I write a function or program, copy that onto the flash drive
    See a snippet that might be useful? - stick it on the flash drive
    Build up a library of useful stuff - design ideas, coding bits and bobs and things that inspire you - stick it on the flash drive!
    OOP function library-on the drive

    KEEP FLASH DRIVE WITH ME

    That way it doesn't matter if there is no interent, I have enough resources with me to do what I need.
    Mike Swiffin - Community Team Advisor
    Only a woman can read between the lines of a one word answer.....

  4. #4
    SitePoint Wizard
    Join Date
    Dec 2004
    Location
    At My Desk!!
    Posts
    1,642
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    now thats a good idea, so what was it, a flash drive?
    "Am I the only one doing ASP.NET in Delphi(Pascal)?"

  5. #5
    SitePoint Evangelist dscriptor's Avatar
    Join Date
    Oct 2005
    Location
    in front of my computer
    Posts
    571
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    thanks for the technology of flashdrive!
    happy is the man that finds wisdom....wisdom in {PHP}.


  6. #6
    SitePoint Wizard Dean C's Avatar
    Join Date
    Mar 2003
    Location
    England, UK
    Posts
    2,906
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    What makes a good programmer? Practice...

  7. #7
    Non-Member
    Join Date
    Jul 2005
    Posts
    606
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    a $3000 suit

  8. #8
    SitePoint Wizard
    Join Date
    Dec 2004
    Location
    At My Desk!!
    Posts
    1,642
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    lol
    "Am I the only one doing ASP.NET in Delphi(Pascal)?"

  9. #9
    SitePoint Wizard HarryR's Avatar
    Join Date
    Dec 2004
    Location
    London, UK
    Posts
    1,376
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'd go for two factors, their level of undertsanding of the system and their ability to simplify and distill problems into code.

    For exmple:
    • Understanding: not just 'because this function returns this', but 'this function does this because it does this, this and this which relies on this'
    • Simplification: This complicated piece of logic will cause problems, write it in a simplified way that's easy to understand and won't cause problems.


    With knowing whichever API you're developing against being a relatively small part of this, the ability to switch from one language to another while retaining the skills you've picked up (e.g. being able to adapt) is a much larger part of being a 'Go(o)d Programmer'.

  10. #10
    SitePoint Zealot marbly's Avatar
    Join Date
    Nov 2005
    Location
    Croatia
    Posts
    178
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    As with any other job, being good in programming requires the use of brain (as opposed to just playing along a set of premade rules). You can read all the books and online resources but they cant teach you how to be smart. Good programmer is a smart programmer, one who plans the project in advance and doesnt just stitch parts of code randomly as they come. You do have to go through some brainstorming experience before you get there, the important thing is not to forget to brainstorm first and code later.

    The thing you ask about - forgetting the code - doesnt tell about your programming abilities. Its true that an experienced programmer already has loads of code snippets ready to pop out of his head, but no one can or should hold it all inside. I beleive that you should try to remember the strategic parts of your job (development), and dont focus on the monkey coding bits.

  11. #11
    SitePoint Member carjam's Avatar
    Join Date
    Jun 2006
    Posts
    11
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I'm more of the marketer/writer/biz person but my husband is a programmer and he's a really good one.

    He often helps other senior level programmers at work because they know he can find problems/solutions within minutes. He is always saying that it is not how much code you know, it is how you think. Are you logical? How do you look for problems and their solutions? Do you think outside of the box?

    If you think logically then the next ingredient is perseverance. Are you willing to stick at a problem until a solution is found, do you learn from your mistakes or do you run to the other guy to solve it before getting a chance to even make a mistake?

    Folks who do not know programmers often think if you know one you know them all. They don't realize that a good programmer is worth his weight in gold.

  12. #12
    SitePoint Zealot marbly's Avatar
    Join Date
    Nov 2005
    Location
    Croatia
    Posts
    178
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by carjam
    They don't realize that a good programmer is worth his weight in gold.

  13. #13
    SitePoint Wizard
    Join Date
    Dec 2004
    Location
    At My Desk!!
    Posts
    1,642
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    well well, they are very good explanations of the topic. At least i dont have to memorise all this code
    "Am I the only one doing ASP.NET in Delphi(Pascal)?"

  14. #14
    SitePoint Addict GeertDD's Avatar
    Join Date
    Feb 2005
    Location
    Belgium
    Posts
    334
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    What makes a good programmer?

    Debugging skills.

  15. #15
    ALT.NET - because we need it silver trophybronze trophy dhtmlgod's Avatar
    Join Date
    Jul 2001
    Location
    Scotland
    Posts
    4,836
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I consider myself a good programmer, and whenever I've had to recruit anyone, I look for similar traits I consider I have, these include

    * A passion for programming
    * Willing to learn new things
    * Never afraid to admit their mistakes or take critisim
    * Willing to explore different technologies and languages
    * Attention to detail
    * Can easily understand the larger picture as a whole
    * Is lazy - handy for code reuse
    * Is dumb - handy for getting the meaning of what clients are going on about (read: asks a million questions)
    * Likes debugging



  16. #16
    SitePoint Wizard silver trophy Karl's Avatar
    Join Date
    Jul 1999
    Location
    Derbyshire, UK
    Posts
    4,411
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by carjam
    He is always saying that it is not how much code you know, it is how you think.
    Here here, I often popup in these threads and say exactly the same thing. It's not much to do with understanding a language (although of course it helps) it's all down to the way you think and approach problems, I've seen some shockingly bad programming even in commercial projects, that had they had good thinkers on-board would never have happened. A good programmer, will be able to code in pretty much any language given a few days and a good reference.
    Karl Austin :: Profile :: KDA Web Services Ltd.
    Business Web Hosting :: Managed Dedicated Hosting
    Call 0800 542 9764 today and ask how we can help your business grow.

  17. #17
    Non-Member
    Join Date
    Apr 2006
    Posts
    337
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    With practice and experience, you'll become a good programmer.
    If you need a book or the internet to know how to write a script, you are definitly not there yet.
    However if you just need a book or the internet to remember the syntax of a language, but can figure out on your own how to design a script, then yes, you are a good programmer.
    There are so many languages out of there. Remembering the syntax for all of them is a very difficult task. However, that does not imply that you are not a good programmer.

  18. #18
    SitePoint Wizard
    Join Date
    Dec 2004
    Location
    At My Desk!!
    Posts
    1,642
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    very interesting way to put it, i generally know what i want to do and how to do it, but as you say, remembering all the syntax is the hard part
    "Am I the only one doing ASP.NET in Delphi(Pascal)?"

  19. #19
    SitePoint Wizard HarryR's Avatar
    Join Date
    Dec 2004
    Location
    London, UK
    Posts
    1,376
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quote Originally Posted by ablaye
    However if you just need a book or the internet to remember the syntax of a language, but can figure out on your own how to design a script, then yes, you are a good programmer.
    I wouldn't say it's that easy, theres more to software design than simply figuring out how to put something together...

    • Do you take performance considerations in?
    • Does it need to be expanded on in future?
    • Security implications?
    • Will maintainance developers understand it 3-4 years on?
    • Will such & such a feature be obsoleted soon?


    Knowing how to balance those is what most professional developers aspire to, and code comes naturally after you've considered all the factors in.

    Also, maintaining code.. there's very little that's write once run forever, refactoring & upgrading as you get better or find new ways to do things and keeping old code moving along with you rather than stagnating...

    Edit:


    Oh yeah, and writing code instead of spending your time on SitePoint also helps!

  20. #20
    Non-Member deathshadow's Avatar
    Join Date
    Jul 2006
    Location
    Dublin, NH
    Posts
    901
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    There are several things that in my mind separate the good programmers from the bad...

    Organization skills are the cornerstone to ACTUALLY writing a good program. Keeping things in order with logical relationships while at the same time minimizing the code involved and maximizing portability is what programming 'should' be all about. The term 'spaghetti code' applies to the worst of the lot - programs that show a woeful lack of forethought by making calls to it's sub-functions wildly with no smooth program flow... I've recently begun to use the term 'spaghetti file-system' for the way some people layout their website calls - cross linking to files across directories with tree relationships that don't match the linking relationship.

    Good organization skills also mean you have the ability to USE things that are well organized – like reference manuals. Once you’ve learned the basic syntax of any programming language, from that point forward the only book you should need is a reference manual to the functions specific to that language – the ability to quickly find what you need in the function lists, especially on functions you don’t use every day – can be many times more productive and simpler than trying to remember every little detail off the top of your head. This is a folly many ‘geek coders’ fall into, spending so much time trying to learn every little detail of every little function, that they never end up producing anything useful – in the old days we had a term for these folks: demo-coders. (Something I’ll admit I’ve been guilty of from time to time myself)

    Organization also translates DIRECTLY to the code itself. Properly tabbed flow for opening and closing of elements can let you avoid the simplest of programming mistakes, clearly illustrate sections, and remove the need for a lot of 'pointless' comments you see (like /* end section */ - BARF). A quote I’ve heard attributed to Niklaus Wirth (creator of the Pascal and Modula languages), but that I doubt actually came from him goes something like “If you cannot take the time to indent/de-indent your execution blocks, you probably lack the patience to be a programmer in the first place.” (while I agree with it, I actually think a python coder came up with it)

    Just typing in your code – there are good coding habits, and bad coding habits… Good habits include actually FORMATTING your code for clarity, and ties into good communications skills. Code-side it's as simple as using full words that MEAN something for your functions, variables and classes, something that again can facilitate the removal of unnecessary comments... I'm getting kind of sick of seeing:

    /*header class*/
    .h {

    or worse

    /*header class*/
    .header {

    If you cannot see what's wrong with those examples - all this about communication and organization probably also means nothing to you. (That second one is a definite NSS) One of the EARLIEST concepts I had drilled into me is that with proper formatting, naming and program flow – your code should be self documenting, reducing the need for comments in the first place... at the same time I'm NOT saying comments are bad - you do something that NEEDS explaining, explain it - but lands sake don't comment for the sake of commenting.

    Communication skills can also be the difference between work getting done and not getting done, getting the job and NOT getting the job, asking for help and actually GETTING the help; and that last one works BOTH ways. It is supreme arrogance to assume you’ll never need to ask for help, and if your code is in disarray, with cryptic function and class names – and you cannot even vocalize what the code is supposed to do much less even put together a coherent sentence - you can likely expect that pink slip any time. The same goes for PROVIDING help to others… It often matters not whether your code works or not - if nobody else can make heads nor tails of it quite often it is useless, making YOU useless. Figure in things like putting together your proposals, interacting with other departments – It extends to all levels yet is increasingly the most common skill LACKING among programmers.

    CLEAR communication is also important if for no other reason than to be BRUTALLY honest and forthcoming with what you think of something. Increasingly people are getting a bit to delicate in their use of the language, being afraid to say what they actually mean or even say anything at all for fear of offending someone. Combine this with the ‘quick fix’ mentality that pervades today, and this has led to an environment in which programmers look for ‘magic bullet’ hacks to make their faulty code work, instead of actually biting the bullet, learning how to code properly and doing the RIGHT thing, a full recode – you see this in CSS all the time now with hack upon hack layered upon hack.

    But then, I define hacks differently from most – on the grounds of how I was taught to program… First thing I learned is NEVER assume the value of a register or memory location – the machine language equivalents (for the purposes of this discussion) of variables and properties. If you set a property in CSS like float:left – and it changes the behavior in ONE browser but not the others, that (to me) just means that one variable isn’t initialized the same in that one browser – that’s not a hack, that’s initializing your variables properly and not making ‘wild assumptions’ about their default values. A hack is something that you have to nest inside some sort of conditional to hide it from the other browsers, or use some random character to make the other browsers ignore it – THAT’s a hack... on the same definition that REAL programmers use for 'compiler specific' includes (talk to a C programmer about that with GCC, Borland C++ and Microsoft C++ some time.) An emergent conditions or behaviors that can be passed to all browsers safely is not a hack… and is one of the differences in my mind between good programming and bad programming.

    Although the bottom line above all else, is the ability to learn new things and adapt quickly. I’ve got three decades of programming under my belt, and I’ve probably forgotten more than most people will ever learn on the subject. DiBol, Fortran, Cobol, 8080/Z80 machine code, basic, dbase, clipper, pascal, PROLOG – WHEN am I ever going to use those again, yet in their heyday each was an essential skill. The one constant in computing is that EVERYTHING is a moving target, therein nothing is constant. A good experienced programmer knows that to expect ANY of their current skills or knowledge to have any relevance five years from now is pure folly. Language specifications change, languages come and go, standards come and go… if you think you are going to learn to program and be done learning, you might as well not bother.

    Damn I’m long winded.

  21. #21
    SitePoint Wizard
    Join Date
    Dec 2004
    Location
    At My Desk!!
    Posts
    1,642
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    woah whens the book due?
    "Am I the only one doing ASP.NET in Delphi(Pascal)?"

  22. #22
    ✯✯✯ silver trophybronze trophy php_daemon's Avatar
    Join Date
    Mar 2006
    Posts
    5,284
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Writing code is the last thing to consider when talking about a good programmer. Hey, I can make my dog to write code, but he will not become a good programmer just because he manages to do that.

    Here are the key abilities of a good programmer:
    • Ability to understand the business processes of a web application
    • Ability to understand the environment that the application is going to work in
    • Ability to understand the requirements
    • Ability to adopt existing technologies and techniques to achieve the best performance (security, efficiency, reusability, etc.) in compliance with requirements

    To add, the thinking a programmer should be oriented to end user. The applications are not being developed for programmers, the end users must understand what is going on. There's no use of an application if the user cannot use it, no matter how many "cool" feature it may have.

    All these abilities require the logical thinking, smart mind and experience. The only way to achieve that is education, and I hardly believe that many can self teach to become a good programmer. As well as I hardly believe that many have a talent to become one.
    Saul

  23. #23
    SitePoint Enthusiast
    Join Date
    Jul 2006
    Posts
    98
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    What make a good programmer?
    tries hard, practices

  24. #24
    SitePoint Member
    Join Date
    Aug 2006
    Posts
    1
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I totally agree with what you've all said.


  25. #25
    SitePoint Zealot
    Join Date
    Sep 2005
    Posts
    145
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    1. Can listen to the customer's request and figure out what it is they truly are asking for, without needing an interpreter to explain tech-speak.

    2. Able to write code that can be modified by someone else without having to rewrite the entire thing.

    3. Willing to write code that ... see number 2.

    4. Is willing to accept that sometimes the customer only wants a calculator - not a Cray.

    5. While they may not know every command in every language, knows where to look and can pick it up fairly quickly.
    Your Message...My Words...Combined Success
    Use my words to convey your marketing message
    Help For Web Beginners Tutorials for true web newbies.

    First Arts & Crafts directory to feature websites & crafty tips.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •