Self-taught developers



  • A quote from a self-taught developer:
    -----------------------
    Another example is.... Sometimes I write for hours uninterrupted.  I don't
    even stop to compile the code (another bad practice)...  When I finally stop
    writing and compile for errors... by this time, I've written massive
    routines... untested under RunTime and untested as a regular user.   Some of
    these routines branch off into MANY logical branches.... some of which may
    never be tested in the final product because the branches are such that
    they'd be rarely encountered.



  • (fixed the spacing I hope)

    A quote from a self-taught developer:

     -----------------------

    Another example is.... Sometimes I write for hours uninterrupted.  I don't even stop to compile the code (another bad practice)...  When I finally stop writing and compile for errors... by this time, I've written massive routines... untested under RunTime and untested as a regular user.   Some of these routines branch off into MANY logical branches.... some of which may never be tested in the final product because the branches are such that they'd be rarely encountered.



  • Speaking from self-taught experience, we're not all that bad. That's down-right horrible in fact, heh.



  • Not me. I usually stop and compile every couple of lines.



  • IMO there is no general rule how often you should compile. It depends on many factors. A COBOL programmer on a big host cannot compile every 10 LOC written; a Eclipse user writing Java compiles on every save, like it or not.

    Untested rarely encountered branches are unfortunately not uncommon...
    (consider all the exception handlers in a Java program that handle errors you can hardly, if at all, trigger, like an SQLException on Statement.close() )



  • Many "trained" developers do things just as bad.  It would be more accurate to say "a quote from a lazy developer"; the fact that the person in question is self-taught is about as relevant as their nationality.



  • @ammoQ said:

    a Eclipse user writing Java compiles on every save, like it or not.


    Even more so, it'll tell you about errors while you're tryping.

    Just incase you don't save except for once in 10 hours...



  • @Iago said:

    Many "trained" developers do things just as bad.  It would be more accurate to say "a quote from a lazy developer"; the fact that the person in question is self-taught is about as relevant as their nationality.


    What if they are self taught foreigner who's insourced?



  • @HitScan said:

    Speaking from self-taught experience, we're not all that bad. That's down-right horrible in fact, heh.

    I didn't mean to speak against all self-taught developers.

     

     



  • If I'm starting some new project from scratch (i.e. I've just created the directory for it and nothing else), I tend to code wildly for a hour or so until I get some kind of system built up that I can run and later add to, before running it even once. It seems to work well enough, at least in the two PHP projects I've done it in.

    For the record, I'm a self-taught, currently mainly PHP programer (developer...). I've also done a course of Java in a online java school (per my real school) and I must say it didn't teach me anything I didn't already know about Java.



  • @ammoQ said:

    a Eclipse user writing Java compiles on every save, like it or not.




    Actually, you can switch that off if you don't like it ("Build automatically" in the "Projects" menu).



  • @Wayne said:

    I didn't mean to speak against all self-taught developers.


    You make a thread called 'Self-taught Developers'. You post a comment by a developer of WTF-ery proportions, and identify him only by the fact that he is 'self-taught'. If you didn't intend to speak against self-taught developers, what was the point of the post?



  • @murphyman said:

    @Wayne said:
    I didn't mean to speak against all self-taught developers.


    You make a thread called 'Self-taught Developers'. You post a comment by a developer of WTF-ery proportions, and identify him only by the fact that he is 'self-taught'. If you didn't intend to speak against self-taught developers, what was the point of the post?


    Hear hear.



  • @murphyman said:


    You make a thread called 'Self-taught Developers'. You post a comment by a developer of WTF-ery proportions, and identify him only by the fact that he is 'self-taught'. If you didn't intend to speak against self-taught developers, what was the point of the post?


    My thoughts exactly. Actually, all the good developers I know were self-taught, at least initially. They may have gone to college or university to refine their abilities, but at the outset they were sat at home and taught themselves. The developers I have met who ONLY learned at college or university and NEVER took the time to learn off their own bat are generally the ones who leave the rest of us with lost weekends rewriting their WTF-worthy code ...



  • @brazzy said:

    @ammoQ said:
    a Eclipse user writing Java compiles on every save, like it or not.




    Actually, you can switch that off if you don't like it ("Build automatically" in the "Projects" menu).


    Yes, of course. But why should one not like it? ;-)



  • @ammoQ said:

    @brazzy said:
    @ammoQ said:
    a Eclipse
    user writing Java compiles on every save, like it or not.




    Actually, you can switch that off if you don't like it ("Build automatically" in the "Projects" menu).


    Yes, of course. But why should one not like it? ;-)




    Well, it's you who said "like it or not". But I actually sometimes do
    dislike it. I'm working on a project with about 6000 classes that takes
    about 15 minutes to do a full build. Make any change to the project's
    class path, such as adding a library... wait 15 minutes before you can
    do anything else. Make any change to the 2000 line interface that
    contains constants used throughout the entire project... wait 15
    minutes. Fortunately, these changes happen rarely, but it's VERY
    annoying if you have to make several such changes at a time and forget
    to deactivate "build automatically".



  •    I agree.  Any developer worth his salt eventually must be self-taught

    in some areas - otherwise the only skills and knowledge they will ever

    possess is that which others teach them.  I find myself teaching myself

    different languages, skills, APIS, algorithms, methods, all the time - it

    is inherent in the process of becoming a better developer.



    Dr MindHacker

    Self-Taught & Open Source Developer




  • IMO there is no general rule how often you should compile. It depends on many factors. A COBOL programmer on a big host cannot compile every 10 LOC written; a Eclipse user writing Java compiles on every save, like it or not.





    There may be mainframe environments that discourage frequent compile / test cycles, but I made mainframe CICS work well enough for me. Of course the VM/CMS development environment was a lot more interactive and customizable than most.

    When I started my professional life, however, we wrote programs on coding paper, sent the pages out for keypunching, sent the deck out for compiling and then sent the test job out for a run. Usually a 2-3 day cycle. We tended to work on many assignments at once just so we always had something to do. We had guys who could write thousands of lines that compiled and ran the first time. I got out of that environment before I developed those skills. Whew. I'd rather let the compiler do the work.

    My dad and I taught ourselves Basic from a book. I'm sure what we did was pretty bad at first. I've had plenty of training classes since, but I'd say the good things that distinguish me from the next guy were all self taught through reading and experimentation.


  • I'm not sure that the problem is self-taught versus college trained.



    I think it is more well-trained versus badly (or not) trained.



    Just about anybody can learn to shove a few bits of VB, Java or C
    together and make a program.  However alarmingly few people
    realise how poorly that skill scales.  As programs get bigger and
    more complex, there is a considerable skill required to maintain
    correctness. 



    Good design, good coding practices, good testing practices ... 
    They seem pretty boring, but they make a vast difference in the quality
    of the product.  Yet employers largely don't recognise the
    difference.  Fred has hacked VB for two years while Joe is a
    skilled analyst programmer.  Fred works for $30/hour and Joe wants
    $60.  Who do you think they hire?



    It isn't universal - there are some god employers, but there are many more clueless ones.



    Me, bitter?  Of course not.  :-)



    Michael J

    (who spent the last three weeks designing test cases to test every permutation of every branch of a big module in a huge system).





  • In continuation of this thread, it seems to me there are 2 kinds of people who program, those who "get" it and those who don't. Plenty of people understand programming enough to make something work, but when it comes to truly understanding best practices (MVC, OOP, loose coupling, simple naming conventions, simple structures, non-WTF code), architecture, maintainability, etc, lots of people don't get it. Whether it's due to lack of training, effort or just intelligence, I don't know.

    There are plenty of people who took 4 years of programming classes and still don't get it, yet there are plenty that have taken 1 (or even 0) classes  yet seem to have an uncanny ability to write clean, maintainable code.

    It seems to come down to common sense and the ability to see far ahead of yourself enough to realize when you are writing WTF code and rewrite. I don't know how many times I've started to write overly-complex code, stopped when I felt it was too complex and refactored.

    My $0.02



  • @murphyman said:

    @Wayne said:
    I didn't mean to speak against all self-taught developers.


    You make a thread called 'Self-taught Developers'. You post a comment by a developer of WTF-ery proportions, and identify him only by the fact that he is 'self-taught'. If you didn't intend to speak against self-taught developers, what was the point of the post?

    Couldn't have said it better myself.   Academic bigot, it bothers me when people think the only way to achieve knowledge is through academia. 

    This reminds me of something, know the definition of an intellect?  (as defined by Sir Arthur C.)

    An individual who has been educated beyond their intelligence.



  • @e.thermal said:

    @murphyman said:

    @Wayne said:
    I didn't mean to speak against all self-taught developers.


    You make a thread called 'Self-taught Developers'. You post a comment by a developer of WTF-ery proportions, and identify him only by the fact that he is 'self-taught'. If you didn't intend to speak against self-taught developers, what was the point of the post?

    Couldn't have said it better myself.   Academic bigot, it bothers me when people think the only way to achieve knowledge is through academia. 

    This reminds me of something, know the definition of an intellect?  (as defined by Sir Arthur C.)

    An individual who has been educated beyond their intelligence.



    Now, it occurs to me, wouldn't someone like Knuth be self-taught? He's an alright programmer, I think.


  • @danielpitts said:


    Now, it occurs to me, wouldn't someone like Knuth be self-taught? He's an alright programmer, I think.

    Knuth had a lot better teacher than Rodney, the one I spoke of in the original post.

    I shouldn't have used "self-taught".  "Unlearned" would be more accurate.

     



  • @Wayne said:

    I shouldn't have used "self-taught".  "Unlearned" would be more accurate.



    I think the main issue here is that that programmer you describe is not typical of any kind of programmer, be it autodidact, schooled, smart, stupid, learned, unlearned, drop-out, eternal student, Paula, Jay...

    WTFs do not respect class distinctions. :)



  • @frosty said:


    Even more so, it'll tell you about errors while you're tryping.


    Ah, so it does splel cheking ;)



  • Self taught -- trained -- nationality -- insourced -- intelligents -- who really cares?



    I agree with RyanD that there are some who just "get it", and the rest
    should get jobs in the insurance industry. Perhaps, there, they will be
    trained to understand both risk and how to mitigate it.



    Putting "Hello World" on the screen doesn't make you a programmer.
    Compensating for it, when it might not show up, is one of the things
    that does.



    OMG I need new co-workers!



  • hee hee .. just kidding about that last bit



  • I'm an autodidactic software engineer with a computer science degree.

    I learned important basics in college, especially design related, but I'm constantly teaching myself new languages and design techniques.  



  • I'm also an agile team-oriented waterfall-centric cowboy coder, but that's another thread altogether. :D



  • @RyanD said:

    In continuation of this thread, it seems to me there are 2 kinds of people who program, those who "get" it and those who don't. Plenty of people understand programming enough to make something work, but when it comes to truly understanding best practices (MVC, OOP, loose coupling, simple naming conventions, simple structures, non-WTF code), architecture, maintainability, etc, lots of people don't get it. Whether it's due to lack of training, effort or just intelligence, I don't know.

    There are plenty of people who took 4 years of programming classes and still don't get it, yet there are plenty that have taken 1 (or even 0) classes  yet seem to have an uncanny ability to write clean, maintainable code.

    It seems to come down to common sense and the ability to see far ahead of yourself enough to realize when you are writing WTF code and rewrite. I don't know how many times I've started to write overly-complex code, stopped when I felt it was too complex and refactored.

    My $0.02


    Programming, like painting or literature, is an art form. I can't paint to save my life, but I consider my self a very decent programmer. It takes practice and a sense of awareness that something just isn't quite right. It takes intelligence to figure out what isn't elegant and to remedy that -- like a artist will work to find just the right colors.

    Beyond that, and like any other art form, it takes a healthy dollop of intuition. Just like in any other area or field, some people got it -- and other people don't.

    WTF code I see on this site usually tends to be a simple lack of intuition -- that sense that "there must be a better way to do this".



  • @WTF Batman said:

    Programming, like painting or literature, is
    an art form. I can't paint to save my life, but I consider my self a
    very decent programmer. It takes practice and a sense of awareness that
    something just isn't quite right. It takes intelligence to figure out
    what isn't elegant and to remedy that -- like a artist will work to
    find just the right colors.



    IMO it's far more a craft than an art. Describing it as an art form
    seems pretentious to me and encourages a prima donna attitude ("You
    dare criticize my design? You just lack the vision to appreciate my
    genius!"). Perhaps the closest analogue is industrial design, where the
    ideal result is a harmonious combination of functionality and simple
    aesthetics - but you also get to implement the gritty details.






  • @Wayne said:

    @HitScan said:

    Speaking from self-taught experience, we're not all that bad. That's down-right horrible in fact, heh.

    I didn't mean to speak against all self-taught developers.


    Who knows how anyone could have come to the conclusion that you did....  You know, other than the title of the thread, and the first sentance of the first post.

    Obviously, the lesson here, is that you should have singled the developer out for being blonde instead of his lack of formal education.  'Cause everyone loves a good blonde joke.


  •  Hm, I've always thought of it as closest to architecture - you need to sort out the structure, and not have the building fall down, but there is room for inventiveness and personal style. Noone can definitively say that, say, gothic is better than postmodern, just like noone can say definitively that, say, generic functions are better than prototypes. Of course, there are horrible buildings that people live in, and horrible code that people use, but c'est la vie.



  • @brazzy said:

    @WTF Batman said:
    Programming, like painting or literature, is
    an art form. I can't paint to save my life, but I consider my self a
    very decent programmer. It takes practice and a sense of awareness that
    something just isn't quite right. It takes intelligence to figure out
    what isn't elegant and to remedy that -- like a artist will work to
    find just the right colors.



    IMO it's far more a craft than an art. Describing it as an art form
    seems pretentious to me and encourages a prima donna attitude ("You
    dare criticize my design? You just lack the vision to appreciate my
    genius!"). Perhaps the closest analogue is industrial design, where the
    ideal result is a harmonious combination of functionality and simple
    aesthetics - but you also get to implement the gritty details.






    My above post was meant to quote this. Hopefully adding some context will reduce my normal incoherence.



  • @brazzy said:

    @WTF Batman said:
    Programming, like painting or literature, is
    an art form. I can't paint to save my life, but I consider my self a
    very decent programmer. It takes practice and a sense of awareness that
    something just isn't quite right. It takes intelligence to figure out
    what isn't elegant and to remedy that -- like a artist will work to
    find just the right colors.



    IMO it's far more a craft than an art. Describing it as an art form
    seems pretentious to me and encourages a prima donna attitude ("You
    dare criticize my design? You just lack the vision to appreciate my
    genius!"). Perhaps the closest analogue is industrial design, where the
    ideal result is a harmonious combination of functionality and simple
    aesthetics - but you also get to implement the gritty details.






    One-hundred percent completely agreed in full.

    El Foo -
    Isn't architecture a craft as well? :)



Log in to reply