Subscribe to tlhIn`toq's Blog        RSS Feed

Be about the code

Icon Leave Comment
I just spent an hour+ writing this in response to a specific thread. When I was done I thought it might be good as a blog entry. All too often we see rookies ask a question, provide virtually no code and ask for "help" with it, but there isn't anything to help with. Then when we suggest they either need to make some effort for us to have something to actually help with, or suggest they aren't really making an effort while in class, we as volunteer mentors get attacked as not caring or being out of touch with their needs. So here is my reply to that.

In today's world of instant gratification and social media its easy to think that everyone wants to [+Friend] you. Please keep in mind that all of that is not in the real world. You might have 300 Facebook friends, but when it comes time to move out of your third floor apartment with no elevator count how many of them show up to help you move your furniture in exchange for pizza and soda/beer.

There are a lot of different teaching methods and philosophies. Some teachers want to be the cool guy and have the students call him by his first name and be everyone's buddy. Some are just trying to deliver the material, keep their tenure and not get caught staring at some co-ed's boobs. Some deliver all the information. Some just ask questions and try to make you think and research to find the information on your own. Well, guess which kind I am. None of them. Because I'm not your professor. I am a volunteer mentor on a site aiming to help people with their coding issues. I operate under the presumption that the person asking the question wants to become a professional software developer. As such there are a few things you might not realize about that chosen profession.
  • You get hired expected to be able to do you job on a professional grade in exchange for a paycheck, not a bunch of 'atta boy's.
  • You will be told what to do and what the deadline is.
  • You will not be held by the hand.
  • The deadlines are short, the pressure is long.
  • You are in competition with your coworkers in a very competitive market.
  • You do not have the right to be employed. If you can't perform you will be gone and someone else will be in your cubical next week.
  • Some areas of development such as game production are notorious for burning out developers, thinking of them as disposable, and expect to replace 85% of their coders every year.
  • Your boss is not there to be, nor is wanting to be, your best fishing buddy.

As a volunteer mentor here I try to help those that show they are suited to the job. Not everyone can be anything they want to be if they just wish hard enough, despite what your grade school teacher tells them. I don't have the temperament for food service. I would not be a good air traffic controller. I would not be a good doctor. I'm okay with accepting what I can and cannot do. Not everyone is meant to be a software developer.

When a new member posts their first few questions they are all equal in my eyes as someone that could turn out to be good at this. But the only thing any of us have to go on is their posts. We don't know them. We don't see them. We don't hear their tone of voice. We don't know if they spend 80 hours a week trying to learn their craft, or just skip half their class lectures and troll the internet for some mook silly enough to do their homework for them. All we have to go on is what they type to us.

My role here is not to help you finish your project. I don't get graded on your project. My hope here is to help you LEARN and UNDERSTAND and to APPLY that understanding to your code. My role here is to not to become life-long friends and get birthday cards from you every year. I am not your cheerleader. I am not going to lie to you and say you can being anything including a developer if you just wish on a star every night. You've had that lie perpetuated to you enough. You have friends, family, clergy, Facebook, Twitter, the bar, and Starbucks if you need people to blindly root you on.

But I have a life outside of being a mentor here, too. I am going into my second decade as a senior developer, 10 years before that as a code monkey and before that 10+ years as a computer technician. I also have to look at the people asking questions here as potential co-workers or people in other companies that I will have to interact with. Do I really want someone looking for copy/paste code in the cubical next to me? Do I want the guy unwilling to do even a little research constantly leaning over asking "How do I make a xyz?". Do I want to have to make 50 code band-aides because the company we'er interfacing with writes horrible code? Does my office really need someone whose feelings and ego are so fragile that everyone has to treat them like a special little snowflake? Frankly I don't want my chosen field that I love very much to be polluted with these kinds of people. There are other careers better suited to these folks. Nobody should be miserable doing a job they aren't meant for. And the rest of use should not have the places we spend more than half our waking days ruined by people that are miserable in their jobs.

Assuming you even supplied any code, I might have pointed out where a bit of your code was bad, a bad practice or something you shouldn't do. If I did, I'm sure I mentioned why. I'm sorry if it hurt your feelings to have someone tell you that your code was bad. But would you prefer I lie to you and tell you it is wonderful; that way your boss can be the one to tell you your code is bad and you're fired? We were all rookies. We all wrote horrible code and followed terrible practices when we were learning. If someone doesn't tell you its bad and tell you a better way then you have no reason to fix it. Its not a reflection on you as a human being. If a chunk of your code sucks it doesn't mean I'm saying you kick puppies.

Now I didn't say you should leave coding. I didn't call you stupid or lazy. I didn't say you couldn't do this. I didn't say I hate you and I didn't tell you to "piss off mate". I did however talk to frankly, bluntly and from one grown adult to another. Since I don't know you that means I don't know if this is the first time someone's ever done that. But I can tell you that as you enter the real software development world it won't be the last time.

I'd like you to take a day away from this thread. Don't check it. Don't re-read it 20 times. Then come back and read it as if you were't the author. Look at it from the perspective of any other reader here that knows nothing about you, your project, your skills. Be objective about your own thread.

  • Did you supply the relevant code from your project so the mentors here could actually help you?
  • Did you take the advice you were given, apply it, and come back with an updated attempt?
  • If you didn't understand the advice did you admit that and ask for clarification or to rephrase it?
  • If the people here asked you questions, did you actually answer the questions asked or did you spin off on some other tangent trying to justify why you were right or couldn't try the advice given or that somehow your case is *special*?
  • Did you get pissy and defensive when someone told you that you needed to hold of on architecting a program from scratch until you knew a little more of the nuts and bolts of your chosen coding language? That's just life. You can't start with skyscrapers. You have to go from birdhouse to doghouse to outhouse before something bigger.
  • Did you lash out at the person trying to help you when all they did was ask for your code so they could help you with it? Maybe because you don't really have any off your own code yet and felt like you had been 'caught out'?
  • Did you take it as a personal attack when someone suggested you might need to study harder, or differently or maybe get a tutor? Maybe your textbook just doesn't click with you. There is no shame in that. You aren't limited to just the course book: You know that or you wouldn't be here. So buy another book to augment your learning. Maybe your professor's examples & methods don't click with you and a tutor can provide the time to rephrase something 10 times until it make sense. Cut the teacher some slack. He's got 50 students from varied backgrounds and he has to find some middle ground in the hope that 75% will catch 75% of what he says. He'll actively teach, but you have to be equally responsible for being an active member of your learning process: You can't just sit back and download the words.

After you've done that tell me what you think of your own thread. Tell me where I missed something important you posted. Tell me where I misinterpreted your intention in your code. I'm happy to discuss any of it, and still help you with no animosity. But be about the code. Don't get all personal telling me how I should be helping you differently, try to be your friend and making some emotional connection and try to boost your self-esteem. If you need that there are are plenty of therapists out there. If you want to talk about your code, your coding skills, your potential as a developer, the direction you need to go with learning this craft and grow as a professional then I have all day for you.

0 Comments On This Entry


Trackbacks for this entry [ Trackback URL ]

There are no Trackbacks for this entry

May 2022

15 16 1718192021

Recent Entries

Search My Blog

4 user(s) viewing

4 Guests
0 member(s)
0 anonymous member(s)