Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

At what rate are YOU progressing?

by mothra (Hermit)
on May 02, 2001 at 17:23 UTC ( #77308=perlmeditation: print w/ replies, xml ) Need Help??

As a programmer, I keep thinking...
Am I good enough?

It seems to me that hacking is difficult to improve at in certain respects, given the nature of trying to get better at facing totally new and different problems everyday.

I mean sure, you can learn more syntax, and even possibly master the simple concepts like (if you happen to do web programming) using cookies to maintain state, how to write packages, which methods of CGI you'll commonly use, or even slightly more advanced topics like how to use scoping rules to your advantage, when to prevent buffering...but how does one get good at facing the unknown everyday?

In my current situation, I battle the unknown everyday. It's sad to say, but I wonder if I'm any "better" now than I was when I started working here over 6 months ago. I know a bit more syntax, and I've touched on some very advanced aspects of the tool I'm using, but have I really gotten any quicker? I'm not too sure about that.

Now, admittedly one problem I'm having is the fact that I use a tool that I think is extremely boring (Powerbuilder is like the station wagon of programming languages, IMHO. Python, Perl, and now maybe even Lisp are much more the types of tools I'm excited about learning. Not to mention that I work in a Win32 environment, when my personal preference is definitely more of a Unix/Linux slant.)

Another problem is that I've been thrown into the Lion's Den. The project that I work on is probably easily the most complex one in this office (of 12 or so programmers, with about 6-7 different projects going on). Even after only 4-5 months here, I was doing things (difficulty-wise, not in terms of how fast I churned it out) that others who have been here 3 years are just starting to learn.

What am I doing wrong? I know that I love hacking, and that few other things would give me the creative satisfaction than to one day possess the skills of a merlyn or a tilly or a Dominus or a...ok...you know what I mean. :)

For the last 6+ months, I haven't felt like I've made much improvement (other than learning new syntax maybe, or using some new techniques that next time around I'll understand and be able to do quicker). But in terms of figuring out how I'll solve a new task (ie. how the proc should be written, in which object I should put the code I want to add, if a new object should be added and, if so, what methods, data it should know about, etc) it still often takes me a few days to come up with a reasonable plan of action.

How long did it take you before you felt like you really started to get it? I feel like after a little over 2 years of programming (1.5 of which was school) I should be better. How do you go from knowing nothing to being able to write something like this in 6 hours? (yes, the code and the article took tilly about 6 hours to write, he told me, which is mind-boggling. He did confess to having experience in doing such things, but STILL :)

I hate to ask a question that makes it sound like I'm a total newbie, but how does one get better at programming? How do you face the unknown everyday with the confidence that you'll figure out the problem before your boss fires you?

(On a side note, they recently laid off one of my co-workers who was hired at the same time as me, when it was decided that my skills were above his. But even though he had 2+ years of experience, I didn't consider "being better" than him much of an accomplishment, because he wasn't very good. My supervisor OTOH, with the same experience as said co-worker, is pretty amazing. :)

Comment on At what rate are YOU progressing?
Re: At what rate are YOU progressing?
by one4k4 (Hermit) on May 02, 2001 at 17:40 UTC
    Personally, I've been at my current job for about 3 months now. I can completly understand powerbuilder being the station wagon of the programming world. Hell, the scooter even. (/me imagines picking up a date with powerbuilder.. "It's my moms, sorry..")

    In the past couple months I've come a ways. I've been programming since I was 11 or so. Pretty activly. Perl has been around in my life for the last 2 years or so. Maybe 3. Regardless, with working here I've touched based on a lot of the more advancted topics, and I've notice that my code has been a lot cleaner. Maybe I'm not learning much new material, or many new programming languages, but I'm sure becomming more and more efficient in the tools I use most daily. (Perl/Transact SQL). Even looking back 3 months, I see how I've grown. Efficiency leads into learning new material, at least in my mind

    As far as facing the unknown goes. If you know its something you can do, and dont see any hitches, I think the issue is making sure you have enough time to finish the job. I've been handed things here and been told I have 2 weeks to finish them. Looked at them and thought, "I could do this in 4 hours..". Shortly after working on said project I realize it'll take 3 weeks. Not because of the programming, but because of the symantecs and politics involved. Such is life. But that goes with facing the unknown.

    I've gotten great reviews from the boss(s) and think I'm on the right track being employed here. I certinly feel like I'm learning, but becoming more and more efficient is just as important.

    Well, thats just my $.02, I'm hoping it provides insite.. :)

    _14k4 - webmaster@poorheart.com (www.poorheart.com)
Re: At what rate are YOU progressing?
by gregor42 (Parson) on May 02, 2001 at 18:00 UTC

    In my experience I have found that, as in many disciplines, there are those who were born to it & those who are made. The very best are usually those who are both. Like a Mozart type, with an inherent gift, and a Maestro for a father to encourage him. (..or make him into a trained monkey...)

    For example, I worked with one gentleman once, a Russian immigrant, who spoke broken english. In 6 months he went from knowing only HTML & minimal JavaScript to becoming one of the best Java programmers I've ever met. This guy was in his 40's when he did this. That's natural talent. (Plus the inability to BS w/coworkers because of the language barrier meant no distractions..)

    But then there's the rest of us. I started programming when I was 6 & I'm 30 now. I'm not Merlyn either or Vroom for that matter. But in my own circle of influence I make a difference. How do I get better? By wanting to learn. That's what makes all the difference. It makes a difference in who I hire also. If you want to learn then I'll hire you in a minute over someone who's been writing nothing but CGI's for 3 years & doesn't know how to use mod_perl for example...

    So what does that mean? That means that you're going to act a little geeky, in that you might spend your lunch hour reading tech books, like all of the O'reilly books that are pushed by everyone here with a semi-religious zeal.. (Merlyn helped write a few after all..) or kill time in the office by decyphering how your favorite module's code works.

    It also means that you DO learn the 'wierd' syntax. Learn the code that you don't know & without question you'll find uses for it. And then you WILL use it. Then you'll open your eyes a little more & realize that you weren't the first person to figure that out & you start learning new ways to do things. After a while you'll start realizing that all of these 'gurus' you worship are just plain folks like yerself. They just spend their time differently. They learn. What's more, they're not these inapproachable demi-gods, they're actually interesting people to talk to. & yes you'd be a little snippy too if you kept answering the same simple FAQ-entry questions all the time. But have you ever stopped & realized that when people here take the time to post code, they've taken the time to write about it, think about it, agonize over it, etc... Especially when it's not their code, but rather a reply, you come to understand that these people really (say it with me now) want to learn.

    I know for me, sometimes I feel like I'm searching for the Holy Grail. The truth is you'll never be Good Enough. When you are, that means you're done learning & then well, it's time to die("Say goodbye to the nice people\n");



    Wait! This isn't a Parachute, this is a Backpack!
      After a while you'll start realizing that all of these 'gurus' you worship are just plain folks like yerself. They just spend their time differently. They learn.
      As an example, I can't tell you a thing about competitive professional sports or current sitcoms. I don't watch TV. I don't follow games. People have to explain to me when I'm watching the SuperBowl with them (to be social) that something that just happened was "good" or "bad". And I haven't seen Ally McBeal, and didn't watch my first Seinfeld until prodded by others, and after it was already in syndication rerun hell.

      What I spend most of my spare time doing is being online. Researching the next item, reading about technologies, being here and on Usenet and IRC, answering questions. Well, and the twice-a-week trip to either the Karaoke bar or the live comedy club. And on airplanes, I'm just as likely to read the latest book from O'Reilly as I am a good SF novel.

      Now project that backward 30 years. I didn't do sports in high school (I was the runt that got picked last anyway). I spent much of my time in the library, or at home reading whatever books I could get my hands on.

      So, to get here, I traded all that "normal" stuff. I gave up my childhood for my career.

      Would I do it again? Probably. But don't ask me any questions about our Portland Trailblazers; all I know is the stadium creates traffic jams occasionally, and I can't even tell you what part of the year the season is.

      -- Randal L. Schwartz, Perl hacker

        Says merlyn:
        As an example, I can't tell you a thing about competitive professional sports or current sitcoms. I don't watch TV...What I spend most of my spare time doing is being online.
        I suspect that this is a red herring. You waste a lot of time on IRC. If you stopped doing IRC you would watch TV and get just as much done.

        (This isn't a suggestion, of course.)

        I don't think anyone can be 'productive' all the time. But some people watch TV in their downtime and other people watch IRC; I don't think it's really that different.

        --
        Mark Dominus
        Perl Paraphernalia

        No TV. No sports. You just went up a notch in my book! :)

        And not all of us consider that such things "normal." On the contrary, those things keep the masses amused and distracted from doing "normal" things like learning, exploring, and asking difficult questions of themselves and their surroundings. Why have people partake in debates, communicate with their congresspeople, and learn philosophy and science when they can vegetate and consume instead?

        How many movies do you watch? :-P
Re: At what rate are YOU progressing?
by dze27 (Pilgrim) on May 02, 2001 at 18:15 UTC

    The two main ways I get better at programming are (1) doing it and (2) reading about it. Programming is absolutely one of those things where you need the practical experience of making mistakes, discovering stuff for yourself and trying out new ideas, that you will never get if you just read books.

    However, reading is almost as important to pick up skills. I read many books and just try to absorb as many ideas as possible. I don't usually worry about the details -- I just try to remember that something is possible, that that there might be an alternate solution, that this data structure might work, that there might be a module for this type thing... Then when I come to coding and I run into a given problem I usually remember where to turn. Try reading books like "Programming Pearls" & "The Practice of Programming" which teach you about the craft. Also a lot of people recommend "The Pragmatic Programmer" although that's not a favorite of mine.

    Another thing I'd recommend is to have a very good knowledge of all the standard commands. I know that you don't *need* to know them to get a lot done but it's time-wasting and error-prone to roll your own functionality. I can't count the number of times I've seen programmers at work rewrite existing language functions just because they weren't aware of language features.

    One way I reassure myself that I'm always improving as a programmer is by reading my old code, from even as recently as 6 months ago. I almost always feel that I would write it better if I did it again.

    It can be hard to tell if you're improving, because the process is gradual... but I bet you have improved a lot over the last 6 months. Just keep coding and reading :)

      Says dze27:
      Try reading books like "Programming Pearls" & "The Practice of Programming" which teach you about the craft. Also a lot of people recommend "The Pragmatic Programmer" although that's not a favorite of mine.
      Warning: This is going to be a weird article. I would probably not post it at all, except the original poster cited me as an example. This is what has worked for me; it may not work for people with very different mentalities.

      If you want to become a strong programmer, amaze your friends, and confound your enemies, one thing you should probably do is try to read a lot of books that are not what other people are reading. We have a community in which all the members read the same books. Then everyone knows the same things, and discussions of technique turn into a lot of navel-gazing.

      I recommend: Find two new languages that nobody else you know knows how to use. Then do a couple of projects in each language. Take notes. As you read the language manual, judge every sentence. Ask yourself "Why was it designed this way? Is this like other languages? How are other languages different? Is it better or worse? Why? What would this be good for? When would I want to use this?" and so on. Take notes. Yes. Take notes. Then when you do the projects, revisit the notes. Notice what you were right about and what you were wrong about. Write down the stuff that you didn't appreciate at first and the problems that didn't appear until later.

      This is not like in college where you write down a whole bunch of boring crap that will be on the test. Here, the goal is to write down only the interesting stuff that occurs to you while you are reading. If no interesting stuff is occurring to you, there is a problem. One problem is that you don't find the material interesting. In that case you should trade it in for something you do find interesting. A more likely problem is that you may not know how to read. This is not a joke---most people don't know how to read. They think that the meaning will magically jump from the page into their minds. But it doesn't. You have to read actively. Read once sentence, then think about it for a long time, and ask yourself the questions I listed above. Then read another sentence. You are going for depth here, not quantity, because the goal is not to learn language X, but to become smarter.

      Writing stuff down makes you smarter. It gives you an infinite memory. Smart people can sustain a train of thought for maybe fifteen or twenty minutes if they are not disturbed. If you take notes, you can carry on a sustained train of thought for months. It's amazing how few people do this.

      Do the same thing when you read the Perl manual. Read a sentence. I will pick a sentence from the Perl manual at random: Line 2000 of perlfunc, whatever that is:

      getpgrp
      Returns the current process group for the specified PID.
      Great example. What is a process group? What is it for? When would I want to use getpgrp? What is an actual application in which I would need getpgrp? What is another? What will getpgrp actually return? An integer, or what? What would be the best design here? (Then if the next sentence reveals that they didn't use the best design, try to figure out which one of you screwed up.) Can this call ever fail? When? How? How will it report the error? What might the return value be in that case? (Then read on to see if you are correct.) Are there permission or security problems here? Would it be dangerous to be able to get the process group ID for someone else's process? And so on.

      Then you go on to the next sentence. If you read the whole manual like this, you will progress. That's what you wanted to know, right? How to progress.

      Another thing I suggest: Find out what books everyone else is reading, and then read different books. Then you'll be well-placed to solve the kinds of problems that the people areound you haven't been able to solve. What if everyone owned a hammer and nobody owned a screwdriver? If you know things other people don't, the community will be stronger. Here are some books I liked that other people do not reommend: Paradigms of Artificial Intelligence Programming, by Norvig; Computer Networks, by Tanenbaum; Principles of Program Design by Michael A. Jackson (which is a brilliant, brilliant book that nobody reads); Software Tools by Kernighan and Plaugher. It's tempting for me to suggest a bunch of other random crap that I found enlightening, but that would be missing the point---you need to follow your heart, find the stuff that you find interesting, and read that. If you discover yourself saying one day "Gee, I keep hearing people talk about CORBA, but I don't know what it is," then get a book about CORBA and find out. And take notes.

      The books I like are the ones that make value judgements. You should not be afraid to make judgements. Engineering depends on judgements. There are usually four or five ways to do something, and most programmers pick the first way they think of, which is why software is so crappy. To do good engineering, you need to pick the best way. It doesn't do any good to get all mealy-mouthed and say "Oh, but which way is 'best' will depend on circumstances, so you can never really know, wah wah wah." It's the engineer's job to know. You are in the circumstances, you know the circumstances, and you have to make the best decision for the circumstances. That's what engineers do. Reinforced concrete, or prestressed? (This week I'm reading Why Buildings Stand Up by Mario Salvadori.)

      Also I would agree with Randal's point that most people waste a lot of time doing stuff like watching the TV. It's really easy to waste a lot of time watching a lot of crap on TV. TV-watching is often a waste of time because it is so easy to do it passively; you just sit there and let the pictures go by. I like to watch TV with my wife, and while the show is going on we talk about what has happened, what might be coming up, and why the characters are behaving the way they are. Of course, this requires that you have the right wife; I can't offer any useful advice about that. :)

      People waste a lot of time with novels in the same way that they do with TV: They just turn over the pages and let the words flow into their minds without thinking about what they are reading---so don't. Read actively: "What is James feeling? Why did he do what he just did? What will Lydia's reaction be? What will the outcome be?" I like to read aloud sometimes, because actually hearing the words is different from reading them. Your brain isn't built to read language; it's built to hear it. When you actually hear the dialogue and description in a book, all sorts of meaning becomes much clearer. Of course, if you do this, you're likely to discover you've been reading a lot of crap. ("Gosh, nobody talks like that! Why didn't I realize before how silly this sounds?") Oh well!

      To summarize: (1) read and do things that other people around you are not reading and doing. (2) Read actively, asking questions and taking notes.

      This is what has worked for me. I hope it is not too peculiar.

      --
      Mark Dominus
      Perl Paraphernalia

Re: At what rate are YOU progressing?
by Sinister (Friar) on May 02, 2001 at 18:52 UTC
    I think we all progress without even noticing. If you progress so fast you did notice you can feel rather satisfacted... But if your boss asks you can you do "This Very Fancy Nasty Difficult" project, you might think, hey! I could try, but dont bett on success. Then once you started, it seems as if all those mountains crumble and you flow through the project as never before.
    Now there is a kick for ya!
    Just be patient. This moment (or one like it) will come and it will rock!

    Sinister greetings.
Re: At what rate are YOU progressing?
by lindex (Friar) on May 02, 2001 at 18:53 UTC

    As far as telling how fast and how far are you progressing with a tool, or in this case a programming language, all I can share is my own method.

    Take something simple you wrote along time ago, (in the world of computers this would be 8-3 months ago :) ) now take what you wrote and write the same thing but as you would do it now, disregard any of your old code and just do it as though it is a problem and a task presented to you at the present moment. Now take those two peices of code and evaluate the quality of both, the chances are that if you have learned anything at all since you first wrote said peice of code that the newer one is going to be faster cleaner and what not.

    Another way one can look at is this. Take a problem from this site, maybe something that is written about in Seekers of Perl Wisdom and that is replied to with code as a solution by a perl programmer you respect and beleave is better than you, aka "a good perl programmer". And without looking at the code they posted, write your own solution and then compare there code vs. yours.

    An example of this little method of mine that I ran into once was a situation where I wrote a peice of code for one of my clients. It was supposed to be a simple image manipulation script, that would take images in a directory and process them in a way and then store them somewhere else. Now mind you this was about a year ago and I knew a whole lot less about perl than I do now. So I wrote this script and it was about 200 lines of code and was really ugly. Well recently that same client asked me for some more things (features) to be added into that script. Well once I started on adding those features into the script and took a look at the code for the first time in about a year, I was amazed at how horrible the code was. Well I rewrote it from scratch, and now its about 50 lines of much cleaner code and 800 precent faster with new features and all (where as the new script processes the same image in 1/8th the time the old one would).

    I guess what it really comes down to is whether or not you are happy with how good your code is. And that all depends on how you view your code in comparison to other people code and that all depends on how good you view there code.

    Well anyways that just my two cents, and Iam going to stop babbling now :)




    lindex
    /****************************/ jason@gost.net, wh@ckz.org http://jason.gost.net /*****************************/
Re: At what rate are YOU progressing?
by Ducati (Beadle) on May 02, 2001 at 19:48 UTC

    Mothera and anyone else ...

    I am currently still in Universtiy taking Computer Systems Enigeering. Every day I wake up with plenty of new tasks on my plate and a new, totally forgein, problems to try and solve. Often it is very tough to stay afloat ... let alone try to swim with the sharks !!

    One puts in horrendus amounts of time sometimes and still no concrete solution is reached. Sometimes, one puts in 5 minutes and the problem is solved completly. If you ask a peer they may have done it in 5 minutes compared to your 20 hours ... or vise versa. This gets very frustrating and sometimes you feel like you are making no progres and you even feel pretty stupid sometimes.

    This was very hard for me to cope with at first ... but I have been kinda forced to learn that each person is VERY different from another. I basically comes down to YOU. It is all about genetics and drive. Some people will learn faster, some people will push themselves to learn more, some people will burn out trying to do more, some people will never really know ... and some people will give up at the first sign of trouble. This applies to ALL ranges of intellegence and smarts (I consider the formentioned to be very different). YOU make the choice and YOU have to live with whatever choice YOU make. (YOU meaning anybody who is reading this)

    After many hours of worrying, thinking and everything in between I have come to this simple conclusion:

    Keep fighting for what you want .. it will come.

    I work-out and run to de-stress ... and one day while running I had a thought that seems relevent ... at one point in time I couldn't crawl... then I learned to do that ... then I learned to walk ... then run ... now I train myself at a much higher level. (I was running my daily 5km) It often seemed that I had reached a limit ... but then one day further down the road I realized that I had passed it a long time ago.

    In this context, I just had a full year of Java and Assembly programming courses at school. When I started I knew nothing of either. I was excited to learn. As the courses progessed I ran into problems of varying degrees. Some I solved all by myself, some I had help on and some I never solved completely (argh). Exmas ended last Thusday. I may not be a pro Java, C++, ASM, Perl etc. programmer ... but I know more than what I knew before ... and I am trying new things daily. Sometimes I feel stupid and other times I feel like a God ... it all depends on what is going on. The most important thing is that I have not ... and will not give up. There will always be people who are better at this than me ... but as long as I am pusing my limits I am happy (in retrospect or after some thought).

    With respect to your situation ... I think that you just need to chill ... and keep plugging away at things. Like everything ... in the end you will get out exactly what you put into it. One day you will look back and say ... "I posted that, wow, I really came a long way !!"

    There will always be a new challenge and a new plateau to reach ... and then surpass. Keep climbing and keep fighting !!!

    Ducati

    ============================================

    "We rock the body to rock the party ... until the party rocks the body"

    De La Soul

Re: At what rate are YOU progressing?
by Jouke (Curate) on May 02, 2001 at 19:55 UTC
    First I must confess that I'm not a programmer pur-sang. I started in 1992 as a sysadmin for an OS/2 based network, and continued working in infrastructural jobs until 1997.

    I did however complete a 4 year education in building informationsystems and programming (plus economics and so on). At school I was a real fanatic turbo pascal programmer. All I wanted at that time was knowing everything about turbo pascal, and eventually I just *had* to become an employee of Borland and be the lead programmer on the development team of that compiler...

    When I was a sysadmin I just *had* to know everything about OS/2. My ideal job was being an OS/2 troubleshooter for IBM....

    In 1997 I wanted something completely different. I had to, because it was obvious OS/2 was losing the game and if I didn't learn something else I would end up being an OS/2 systemspecialist without a system to manage ;). I had to start all over again and become a Perl newbie because I wanted to do webprogramming and again, like before, I now want to know everything about Perl, and when I think I'm good enough (I really have a long track ahead according to the "seven stages of a Perl programmer") I want to be working on the core of Perl.

    But did I make progress? After school I had a moderate experience in Turbo Pascal, had to throw it all overboard and start from scratch and become an OS/2 specialist, After 5 years I finally knew more than most IBM OS/2 specialists and again had to throw it all away and start over again. Did I make progress when I started learning Perl?

    Yes I did. I had experience. No Perl experience, but I knew what programming was like (learnt it at school), knew about TCP/IP, Sockets and networks, I had built insight in IT issues. I had colleagues before from whom I learnt a lot (who did a lot more in programming)

    The point I'm trying to make here is that maybe you're not learning what you eventually want to learn, but you're building up experience you surely can use later in your career...

    I wish you the best of luck, and maybe if you're really fed up with this job, you'll find another one in which you can build applications in Perl all day...

    Jouke Visser, Perl 'Adept'
Re: At what rate are YOU progressing?
by AidanLee (Chaplain) on May 02, 2001 at 20:14 UTC

    I think i am coming to understand that one of the many good ways to progress in your skills is to be part of the community (which of course you are doing by being here). By keeping tabs on what problems people are solving and how they are solving them you'll encounter issues that may not have arised yet in your particular employment/hobby focus.

    When I decided to register here i thought it would be "fair" if I tried to answer a question (one i could answer intelligently and legitimately, of course) for every question I asked. I've quickly found that answering other people's questions when i can is quite rewarding, and it makes me even more interested to see what others who also respond to the question have come up with. It is especially interesting to compare one's own response to solutions provided by those "gurus" among us. It gives you the chance to understand the difference of approach you may have. (note I am not saying that difference of approach is bad. I am saying that understanding multiple approaches to a solution is a very good thing).

Re: At what rate are YOU progressing?
by frankus (Priest) on May 02, 2001 at 20:59 UTC
    The first chapter of "Hagakure", musings of a Samurai, written in the 17th century.
    Although it stands to reason that a samurai should be mindful of the Way of the Samurai, it would seem that we are all negligent. Consequently, if someone were to ask, "What is the true meaning of the Way of the Samurai?" the person who would be able to answer promptly is rare. This is because it has not been established in one's mind beforehand. From this, one's unmindfulness of the Way can be known.

    --
    
    Brother Frankus.
Re: At what rate are YOU progressing?
by dnance (Beadle) on May 03, 2001 at 00:13 UTC
    I too am a newbie to coding. I am finding that the more I use different concepts over and over again, I find myself referring to docs for syntax and such less. I'm getting to the point where I can 'think' in code and I can work out how to code something in my head as I'm driving to and from work....(I know, a dangerous way to drive)
Re: At what rate are YOU progressing?
by jynx (Priest) on May 03, 2001 at 01:12 UTC

    Me thinks i'm probably 180 on this one, but i don't really think that just reading books is the solution. Dominus spoke well when he said that you should sit down and read a book, then make notes, and think about it. It's that last part that usually seperates programmers between good and bad, in my opinion.

    It would also seem though, that just books about being a programmer aren't necessarily what you're looking for, although like i said, i could be backwards. i would suggest books like Mastering Algorithms with Perl, or maybe an AI book, or maybe a C++ data structures and algorithms book. Something that goes into the theory and thought behind the programming that will allow you to see with more insight how you want to lay out a program because you have more knowledge of ways to lay out a program well, in any language. Most data structures are possible to create in any language, and sometimes it's far better to borrow from another language than stay true to the language.

    Not a particularly good example, but for an AI class i had to make a square tile floor that related position, whether it was dirty or clean, and other such features, in Java. What i did was create a perl-esque hash, so that with 4 methods and two arrays i could keep track of all of the properties of any one tile easily. Everyone else had about a dozen or two methods and had to do interesting things to keep everything happy. It wasn't necessarily the best solution, but i think it was the most maintainable and flexible, because if i changed two lines the tile had more properties, everyone else had to write two (or more) functions as well...

    It was because i've studies Perl and knew hashes that i thought of that. It's because of my (little) knowledge of C++ sorting and searching that i can write many of the programs i do. If you learn new techniques they'll stay with you no matter what language you use, if you jsut learn the language or how to be a political programmer, you'll be stuck in one type of job or just be some suit behind a desk...

    Hope That Helps,
    jynx

Re: At what rate are YOU progressing?
by arhuman (Vicar) on May 03, 2001 at 02:22 UTC
    At what rate are YOU progressing?

    Definitly slower than I'd like...

    ...and I've touched on some very advanced aspects of the tool I'm using, but have I really gotten any quicker?

    Is quickness the goal ? Not for me, produce good code (easy to maintain/understand/enhance) which solves all my problem THIS is my goal.

    For the last 6+ months, I haven't felt like I've made much improvement (other than learning new syntax maybe, or using some new techniques that next time around I'll understand and be able to do quicker).

    Don't underestimate the non technical part of your work :
    Dealing with non-tech managers/users, learning to hit deadline, handling a heavy workload, doing something totally new, you IMPROVED more than you realize...
    All those stuff are called experience.
    And among all the top programmers I met, none of them was ONLY a good 'tech-guy'.
    To my mind the syntax part is only a minor aspect, THINKING right (I mean thinking in a way that almost magically avoid all the pitfalls) BEING able to adapt, more than any technical knowledge is a sign of a great coder...


    How long did it take you before you felt like you really started to get it?

    After 4 years of coding I thought I was an ace (I was 18).
    Now eleven years later I know that I'll allways be someone else newbie...

    I'll end up this post, with my 2 cents opinion :

    Whatever you're good (enough) or not...
    Whatever you learn fast (enough) or not...
    It doesn't matter, as long as you learn and improve.


    "Only Bad Coders Badly Code In Perl" (OBC2IP)
Re (tilly) 1: At what rate are YOU progressing?
by tilly (Archbishop) on May 03, 2001 at 08:06 UTC
    While I was mentioned directly, I don't know what I can realistically add that hasn't been said.

    Like merlyn I don't have a lot of the usual time-wasters.

    Like Dominus I like being engaged in whatever I am doing.

    Unlike both I don't have decades of programming experience. It still is under 4 years, and I have a lot of gaps. (That I am trying to fill in as I go, but by the time I hit some of the big ones, I am sure that progress will create others.)

    Now for my weird advice, read Re (tilly) 1: Discipline, then RE (tilly) 3: On elegant coding... and you should get a good insight into what my basic learning strategy is. I have direct evidence that the first works for other people. I have no evidence that the second is how others work. I know that neither is something that most people would consider trying.

    And finally a controversial question. Talent or effort? I don't know. I have seen plenty of stories of people who demonstrate that it is supposedly talent. I am positive that there are plenty of people who would add me as yet another example. Yet after I look around from reading yet another book, considering another opinion, writing more code, it sure feels like effort. And sure I have only been programming a short time. But I started with years of experience in math. I didn't have to learn the basics of efficiency, recursion, breaking problems up or paying attention to detail. I started programming with those skills more highly developed than most veterans of programming.

    If I thought that anything real was known about nature vs nurture and talent, I would probably go out and do some research on this question. But the fragments that I saw the last time I got curious did not inspire confidence. Perhaps after they have a while to analyze the human genome, I will take a peek to see what the orthodoxy turns out to be...

Re: At what rate are YOU progressing?
by chromatic (Archbishop) on May 03, 2001 at 08:29 UTC
    I started to get it when I'd learned enough programming languages that the essential concepts all came together. That is, when I had enough information that I could step back and look at the big picture, seeing the similarities and differences.

    Reading the Ruby book was *very* enlightening, because I'd come across a Ruby feature and see how that would work in Perl... sometimes I could even see how to implement it.

    For me, what works is a combination of natural curiousity, some talent, and a willingness to play with things until they make sense. There's probably also a part of my brain that sees patterns wherever I look.

    I was reviewing a book about Unix system administration and came across a chapter on UUCP. It's not as widely used these days, but just reading about how it was implemented gave me ideas on how to do something completely different. Reading some documentation on Apache functions available to modules gave me other ideas.

    The important thing is being able to look at your problem in a new way, and to be able to learn from lots of different places.

    If you have *some* knowledge and experience, and the will to do something about it, all you have to do is capture those creative flashes when everything turns sideways in your brain and you Get It, for just one moment. That's all.

Re: At what rate are YOU progressing?
by runrig (Abbot) on May 03, 2001 at 10:10 UTC
    How long did it take you before you felt like you really started to get it?
    I've been programming for over 20 years now, and by now I get (or am able to get) most of what I need to get. But just for fun (& education) I'll look over in Obfuscated Code and find plenty of stuff I don't get, and some I won't get no matter how long I stare at it :)
Re: At what rate are YOU progressing?
by BrentDax (Hermit) on Sep 07, 2001 at 13:46 UTC
    (Yes, I know this node is old. Oh well.)

    I've found that one of the best ways to learn something is to talk to people who know it, or listen in on them. I wanted to get into Perl internals, so I subscribed to perl5-porters. At first I didn't really understand what people were talking about, but over time I picked up bits and pieces. Although I still haven't touched the code, I have a better idea than most of my peers how Perl works on the inside, and I feel confident that I could probably do some work on it.

    Last week, I posted a message on perl6-internals suggesting an alternative way to store my() variables. (In Perl 5 they store them as an array of arrays, one nested array for each level of recursion; I thought that we should use a symbol table like we do with globals, local()ing things when we recurse.) Once people understood what I was really suggesting (some people had trouble decoupling the storage of globals from the semantics of globals) they came up with reasonable arguments against it. (Basically that it would take up more space, overuse the savestack (the data structure that holds the old values of local()ed variables), require more startup time if we were reading in bytecode from a file, and might be slower. The advantage was that we wouldn't have to write or debug as much code in the core and that certain lookups which must happen at runtime would be quicker.) When I pointed out an optimization they could do, they nodded in agreement (so to speak) and pointed out that it would still be bigger in memory; however, Dan Sugalski (the guy in charge of internals for Perl 6) conceded that there could be significant advantages to my approach and said that they might benchmark the two approaches and compare them.

    I know that, had I not been keeping an eye on perl5-porters, I would have had no idea about any of that. I also know that, if someone else had posted that message, I wouldn't have understood it. But by paying attention to other programmers I learned a lot about a subject I cared about.

    ---

    On a separate note, you mentioned about taking days to come up with the plans for things. That's not a problem at all! My father is a programmer (he learned on a PDP-11 at UCI). He's been doing this stuff for almost thirty years, and he still takes days just writing down how he thinks a new program should work. His programs are generally well thought out and fairly quick and understandable--even to me, someone who doesn't even know that language.

    Some of the best coders take time to think up how to do something. Don't sweat it--if you really are good, you'll come up with the right technique eventually.

    Update: Lo and behold, I've been made Perl 6's first Configure pumpking. See, listening works!

    =cut
    --Brent Dax
    There is no sig.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://77308]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (8)
As of 2014-10-23 04:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (124 votes), past polls