Fog Creek Software
Discussion Board

How do I learn to do my job right?


I figure there are some people here maybe with a comparable background but smarter than me.

For you to check the former, let me tell you "a bit" about me.

As many I have started around the age of 15 (which means in 1997) to help some friends installing software/hardware, troubleshooting, etc. Within a year it became more and more smaller companies that I helped so I started my business with 16.

Around the same time a neighbour of mine asked me if I can do some "internet programming". Together with her husband she owns a 2-Man advertising agency. I started doing some web sites (content and design provided to me) and earned way too much money. I think that's when I started living too big.

In the meantime I still served some IT service customers, one of them being a marketing company managed by a guy I will refer to as "The Professor" ;-) As time passed by I started doing some consulting for them regarding a web project.

Being 20 in 2002, with a good 13-year school grade, I got more and more involved in that project with The Professor and finally started working most of my time at their office end of 2002. I had little intention to go study some economics, marketing, computer science or whatever, since I was successful, had enough money (just to fill up the banc account right before apartment, car, pay-tv, etc. would eat it up again) and no idea.

The thing is now, that I _learned_ in the past 1.5 years that I am not _too_ good at coding (I _knew_ that before), that I still need to learn a lot about managing (that was the deal with The Professor - I get less money but learn from him) and that I have to start learning how to do my job. So, what I missed completely in the past 8 years was learning the most basic things to do your job properly. In detail this means I never worked in a team, organized myself, organized a project, organized my desk, prepared things for accounting department, reported to a manager, managed anything.

Now, The Professor is someone who points out errors immediately. And after some serious (and continuous) wrist slapping we decided to cut down salary. But still that did not make me be disciplined and start working properly.

That got me under quite some pressure which I am in right now, because The Professor thought I could handle most of that (pretty interesting and promising and pension-securing) web project on my own just learning the bits about marketing and managing. I, of course, thought I could easily handle this and promised I would.

I am still not getting out of this situation. And while I think that I can learn _a lot_ about marketing, psychology and managing (which I am interested in) from him, I am afraid he is not the right one to teach me how to do _my_ job. He does not have much insight into what I exactly do, so he cannot show me how to do a web project right, but just how to do a project in general right. It's a small team of 3-5 people, no one else having a clue about internet or IT. Then he is a 23-hour working horse - with all the health issues connected to that. Plus at the moment he's not here a lot. So I am thinking:

How do I learn to do my job right?

The solution he suggests is to sit down on my ass and start working getting some routine in the most basic things. The time that _I_ spend more on a certain job because I don't have the routine yet is for free, of course. I _think_ that is pretty much the main thing, because in the past I never had to be disciplined and I never had to work hard to get things done (school was easy, first projects were easy). But at the same time I _feel_ that there are some factors that will keep me from really learning how to do my job right.

Quick Jump, just to let you know what I mean with doing the job right: The thing I can do is creating solutions or even interesting new ideas to help other people work and communicate. That is what the web project that I am working on is for. The problem I have is _doing it_ or properly manage someone else to do it. In particular, getting the best price when working with externals. Then I am lacking organization and timing so that projects tend to get chaoting at times. So the things I do good are under the shadow of the things that I do bad - easy as that.

Jump back. A few factors really annoy me and I am not sure if I can make it (which would be good because I don't know anyone else that smart who would let me travel around Europe to train people how to use the CMS and stuff) under these conditions. He is somewhat conservative regarding the office having some 20 year-old furniture which works of course and is high-quality (otherwise it wouldn't have survived those 20 years, right?) but it is so ... grey. We start at 8 AM and work until 5 PM ("The others are still there? Why are you leaving") or how long it takes. Other examples would make this even longer ... so, skip it.

What it comes down to is: If I stay, will _I_ be able to learn it and will the conditions let me? If I go, will I ever be able to find a chance like this with 23 having no degree and actually not being able to do much of value? If I find it, aren't chances high that I get in the exact same situation in no time?

If you've read this completely - wow! Thanks!
If you have any good advice - thanks even more!!!

Best regards,

Wednesday, July 21, 2004

Ah, just one thing to add. The Professor is absolutely none of the "Convert money into Code that works" guys. He is more like "Hey, there's 5% unemployed here in Germany. Get this code-monkey - cheap!" and "What? There is a _problem_ filling in Japanese characters in that CMS? But the agency knew that we'd use it internationally. Get it done at no more cost!".

Wednesday, July 21, 2004

Hey, that's not long enough. One last thing before the monologue gets deleted ;-)

For some reason many people think that I am _so_ smart and have _so much_ potential. These days I am starting to doubt that...

Wednesday, July 21, 2004

If you want to code better, try "Code Complete" if you haven't already.

If you want to be better organized, try "The 7 Habits of Highly Effective People" if you haven't already.

Oh, one thing - when I used to buy books to improve my habits I found that the books didn't do a thing except just sit there. Then I learned that you actually have to *do the things the books tell you to do* and my performance dramatically improved :-P

Also someone said once "success is based on whether you choose to ignore what you know", and I find that a helpful slogan.

Fernanda Stickpot
Wednesday, July 21, 2004

In a word: discipline.  You're at point A.  You have to figure out what point B is, then do what it takes to get there.

Read Code Complete.  Read some of those time management books other posters recommend on this board.  Read some of the other classics.

I confess to not reading your entire post ... ask other much more specific "how do I do X?" questions here and we'll try to help.

(The most important thing is deciding that you want to get to point B above and not some other point C, which may be spending your 20's doing any number of other things.  Once you decide where you're going, you'll need the discipline to get there.)

Michael Kale
Wednesday, July 21, 2004

Follow Fernanda's advice.

Wednesday, July 21, 2004

Read the Pragmatic Programmer.

Andy Hunt & Dave Thomas (the authors) are inherently lazy and acknowledge that about developers.  Therefore, they come up with practices and ideas that capitalize on this.

Wednesday, July 21, 2004

you've shown amazing versatility by managing to fulfill a role that's usually filled by people who are 10 years older and have much more experience

don't let your insecurities hold you back.  you're not at a disadvantage.  you have a great advantage in that you're young and you're self-taught.  the lack of education is less of a handicap than you imagine.

just keep putting that independence to work: everything you need to know is available to you via the web and books.  read read read!  you just gotta keep delving.

Wednesday, July 21, 2004

If you want to stay at your present job you need to target the areas where you are weak - if it is a technical area, like .net, then get up to speed on it by studying in the evenings/at the weekends.  If it is just your poor organizational skills then there are umpteen books that will help you there also.

If you manage to stabilize your position there you need to develop your skills further so that you can get a job elsewhere when the time comes.

Chris Peacock
Wednesday, July 21, 2004

>For some reason many people think that I am _so_ smart
>and have _so much_ potential. These days I am starting to
>doubt that...

There's this great line from "The Life of Timon of Athens": "O that men's ears should be to counsel deaf but not to flattery!"

I'd advise you to try to take some college courses and keep working on the stuff you love.  If these people provide a work environment that you feel nurtures your interests then stay with them by all means.  However, it sounds like you feel like they're exploiting you (and flattery is often directly proportional to degree of exploitation).

There are lots of great books that you ought to read.  You'll probably get a good list here (and various places on the web).  Stay away from technical manuals as much as possible (they're not for learning -- they're for translating your existing knowledge into a particular medium).

What's going to be most valuable to you will be books that explain universal (or at least very long term) issues.  You want to learn "ideal forms" (in this sense: because all of the "practical" work that we do is intended to attempt to come as close as possible to realizing those forms.  If you are able to build castles in the air, the nuts and bolts of your code will naturally rise to it.

Wednesday, July 21, 2004

I echo the call to read 7 Habits of Highly Effective People.  After 3 reads it's starting to make sense.  But here's a quick synopsis for you that you can use today.

Prioritize properly and stick to it.  Too many of us waste too much time on things that are fun but have no reward (playing video games), or focus on putting out fires (immediate needs with low reward), instead of focusing on the long term things which yield a high reward.

So start keeping a log of all your phone conversations, organize your email (use rules, one folder for each part of a project, or each outside contact), to keep track of who said what to whom and when.

Get a big white board and start planning your project.  Don't break it down too far, just identify when you need to start testing, end primary development, etc.  That should give you a general idea of how much energy and time you can afford to put into the project.  So when "But it needs to be internationalized" comes in you can say "That'll removed our entire testing phase.  Your company, your call, but that's dangerous"

And get yourself into a daily routine that's your own, not the company's.  I suggest coming in early and leaving early, try 7-4 instead of 8-5.  The quiet will probably serve you well as you try to sort out your day and get moving.  And you'll leave before everyone starts getting hectic and noisy at the end of the day.

Oh, and at the end of every day do a brain dump to a pad of paper (one sheet per day, don't throw it away).  Write down all the things you need to do, who you need to contact to do it, and the status of each of your projects and items.  That should keep your head clear at night.  Think of something while you're at home?  Email it in.  While at dinner, phone it in to voice mail.  Don't juggle everything mentally.

Wednesday, July 21, 2004

You should get your act together.  Only advice I have there is figure out what you ought to do, and then turn it into a habit.  If it was easy you would have done it already.  :)

However, I also get a whiff that you may be getting taken advantage of by the Professor.  You would know best.  Are you happy?  Do you feel like you're being treated fairly?  Programmers often have an overdeveloped sense of responsibility, and unscrupulous people sometimes abuse that.  Make sure that isn't happening to you. 

If you are in general not happy and don't feel well treated, you might look at fixing that situation first.  Getting a job at a coding shop that already has some dev processes in place might be a way to do that and also address your original question at the same time.  Then after you've picked their brains for a while you can go back to freelancing.

Matt Conrad
Wednesday, July 21, 2004

It takes 10-20 years of full time projects to really get a handle on how to put stuff together the right way right off the bat. It sounds like you are doing fine. Just realize that it's all uphill from here. Many times you'll think you know everything and are a guru. Then you'll hit a point in a project where you are absolutely stuck and can not move forward. You'll need to break, regroup, think, refactor, reorganize, realize new strategies. Then you'll think oy your previous approach as being amateurish and primitive. If you are making progress, you'll have these sorts of revelations about once a year for the next ten years or so.

Dennis Atkins
Wednesday, July 21, 2004

>> I suggest coming in early and leaving early, try 7-4 instead of 8-5. <<

It sounds like his boss, is from the "software house as a factory" school of thought.  Such people have no concept of a flexible work schedule, and I've heard of them standing at the door at 5:10, waiting to lock up as the employees shuffle out.

Wednesday, July 21, 2004

(I wish there were only 5 % unemployed in Germany).

Wednesday, July 21, 2004

Sounds like you should move on.  Over 5 years anywhere is more than enough.  That long, and your issues and concerns at work begin to seem like personal things.  No job can offer anything you can't find elsewhere, and the greater at-rest momentum you acquire in one place, the worse your plight.

I'd recommend a reboot.  Enroll in a university, work in a nontech job to pay the bills, and meet a new set of friends.  (I don't know how much a degree matters in Germany, but if you can, study something cool and don't treat it as vocational training.)  Your studies will give you an opportunity and impetus to learn time management.  Taking a broad range of coursework, engaging other students, and some of the other activities of university life will help with other things you mentioned.  The same job world will be waiting for you at the end of it, and you'll be a different person ready for action.

Also, do write us back, telling us how much happier you've become.

Wednesday, July 21, 2004

I don't have any advice but some of these comments might be useful for you.

I've always found that "on the job training" isn't worth much, especially at small companies.  Even "being around smart people" training isn't worth much, either.  Pretty much all companies are run like crud; programming, marketing and management being real amateurish.

So, if you know nothing about a subject, you can learn the basics in about a year of working with people who do that job.  If you know the basics already, you can learn by reading or by analyzing the mistakes of people who do that job for a couple of years.  Maybe.  Then, you are an expert.

For example, work for any company, even Microsoft, and you'll see a whole bunch of cruddy C++ code.  That code will be obviously messy, sloppy and junky.  If you know nothing about C++, you'll spend a year learning the basic C++ concepts by pulling out pieces and saying, "Oh, this is what a class does.  Oh, this is what protected is.  Oh, this tiny part works well because of encapsulation."  Then, in the next few years, you'll learn by reading C++ books and by looking at code and saying, "Oh, this is crud because there's no encapsulation here.  Oh, this is crud because this code is inherited and shouldn't be.  Oh, the daily build is always broken because they don't make the person who broke it, fix it."  After those few years, it's just watching people make the same mistake over and over.  "Oh, another dumb company that doesn't do daily builds.  Oh, another dumb program where the guy doesn't understand polymorphism."

So, anybody who tells you that they'll teach you or that you'll learn from the code, is lying.

For programming, there's really about 5 year's worth of after-college education.  One year to learn the basics.  Four years to learn from books and analyze other people's mistakes.

For management, there're really about 1 year's worth of after-college education.  "Terrible" and "manager" are two words that go together, like "apple" and "pie".  I've worked as a manager and, while two programmers might get together to talk shop, managers don't talk about management itself.  There is no "Code Complete" for management.  I'd say that, if you've read 2 books on management and managed 3 people for a year, you are an expert (by comparison to your peers).

For marketing, I'm not as sure although I've read enough to know that marketing isn't nearly as difficult as programming.  Most marketers that I've watched are really just "try this, try that" guys.  Try a trade show.  Try magazine advertising.  Try a PR agency.  If it doesn't work, you just don't attend that trade show again or you cancel the contract.  In programming, if you choose C++ but should have chosen Java, well, you're hosed because it is super-expensive to change.  But, in marketing, you can easily change all the time.  Learning about marketing is mostly about just doing it: organize a few trade show booths and you'll know what you need and who the good and bad people to deal with are.

But, almost for certain, your Professor has never worked in a professional setting as a full-time manager or as a full-time marketer.  (Expert programmers often claim to be able to teach management or marketing but their "expertise" is really just stuff that they invented in their own head or read in a book or saw somebody else do.  Even if they did it themselves, they always faked it rather than came up with repeatable system that works.)

I've also seen and experienced the "you have great potential" thing.  Right now, being young, you actually *care* which makes you learn quickly and do things that other people don't do or don't bother to learn.  But, as you get older, you'll see the "old boys' network" and become cynical, you'll become frustrated, then resigned and lazy.  The "you have great potential" thing usually translates into "wow, you get a lot done and you work dirt cheap!" by comparison with others.  But, sooner or later, everybody learns that it pays better to throw your energy into boosting your salary/doing what you want to do rather than doing what the company wants you to do.  Unless you work for yourself, hard work only pays off if you are management's buddy.  And, if you're management's buddy, being lazy pays the same as hard work.

That's why they say: "It's not what you know, it's who you know."

Daniel Howard
Wednesday, July 21, 2004

I read 7 Habits.  I found it to be a complete waste of time.  It seemed like a bunch of MBA non-sense. 

christopher (
Wednesday, July 21, 2004

The professor sounds like my ex: 'this is the correct way to do it, because this iss the way I do it'. I got over that by leaving. And then I discovered (remembered?) that there are seevral ways to skin a cat, all comparatively effective.

If you're good at earning dough, coming up with ideas, generally being creative, but not so hot at the follow thorugh, the best thing (IMO) is to find someone the other eay, and form a partnership of some form. There are probably people out there thinking 'I'm shit-hot at those detial things, but I'm no good at coming up with the ideas in the first place, if only I could get better at that bit...'

Recognise your strengths. Recognise you don't have to be good at everything. Embrace humanity's diversity and variety. Take Ritalin

Wednesday, July 21, 2004

Actually, I see "Rapid Development" as "Code Complete" for software managers. Written by the same guy too.

Whether you should leave or stay, only you can decide.

However, I suggest looking at one thing you could do differently to improve results. Maybe it's making a list of things to do. Maybe it is cleaning up your office. Maybe it is being a tougher negotiator. Figure out one thing that would make a difference, and then start doing it. As someone else said, all the books in the world won't help you unless you actually apply what is in them.

Wednesday, July 21, 2004

Wow, THANKS for all your comments.  :-)

As I expected there is not one safe solution. Let me try to make some things clearer:

It took about 2 years until I started working for the Professor. Mainly because I said to myself "he's so much smarter than you, he will take advantage of you". But I have experienced him over the years to be absolutely fair. He sticks to what he's promised and he will always give you a fair chance to make up for things you failed in.

I am not all to concerned about my lack of programming/developing skills because I have learned it is better to have people do that who are really good and _effective_. Although I still have to learn something about good code in order to be able to evaluate the work I buy.

I _am_ concerned about my lack of organization skills. I _know_ I would have a much easier and effective time if I just wrote it all down and get the "immediate, low rewarding" things out of my mind.

My big problem though is acutally _doing_, whether it is to code small things myself or _managing_ someone to do it. Just let me give you one example: The web project was done for 10 months and still no English translation. I found (for myself) a lot of reasons why this is right. First of all, of course, it's much to much work to do, phew. Then, I know the German text is bad. There was good text, which has been changed over and over by different people under different premises and now it's screwed up. So I said to myself it's senseless to make all the translations out of it. What happened was that the Professor had a strange feeling about the English version still not being finished (I gave him the feeling that it was a huge amount of work). So, he hired someone to do it - and he did it in 7 days! While this actually shows that I did a good job in planning how the CMS and especially the relations general/language/country specific content should work. But I won't get rewarded for that now, right?

Still, he gave me a chance to do things better, and I _am_ improving. But still I am not even able to give him a feeling or a clear message what I am achieving each day. He keeps calling me asking "What are you on?" And - blocked by the feeling that I need to defend/rectify in this situation - I don't get across that I actually did something worthwhile. Partly, this is because I am not _that_ effective yet, partly it is because I still don't priorize and organize my work properly. It's just the tiny bits that keep me from finishing or pushing forward things.

I believe most of the pressure that the Professor puts on me is to really make me learn. Those "stupid" casting shows on TV often remind me of the way the Professor treats me, sometimes the same strategies. Just that I don't have that big goal in front of me "I will be a superstar" but just a vage imagination what comes then. And I know there will be no "final" that I win and then I am "a good manager". So being unsure about myself and my goals it is hard to keep motivated to be disciplined. Most obstacles are much more effective in demotivating me than I am effective in motivating me with goals. So that is definately one thing I should work on (and write down).

Certainly I have the "books don't do anything by themselves to help me" problem. Adding to that is that I am a slow reader and I _love_ my private life. That is why I often find myself rather going to the movies than reading a book that would help me.

One thing I have accepted from the Professor is that you can't be two persons. You can't be someone completely different at home than you are at work. So things you fail in your job are most certainly things that you have, _personally_, a lack in. So being personal at work does not have to be bad but can actually help you change things.

I just got an e-mail back which can be used as a good example of how I am failing (sometimes small, sometimes big time) each day. Yesterday I sent out e-mails to the French-speaking branches that the French version of the web site is online. I just need price lists and shipping/payment options to also make the shop work. What did I forget? For the 300.000th time... I did not set a date for it. So forgetting a simple "by Friday" in my e-mail yesterday ruined my day today :-( I did not even set a date for myself to ask again.

Looking forward to more comments and better times...

Best regards,

Thursday, July 22, 2004

You seem to lack the ability to boil something down to its basics and execute those basic ideas. With the ability to adjust as you learn more or when you realize you've done something nonsensical.

You're stressing yourself out. Just observe and when you do something absurd, consider what the real mistake in your understanding was.

Also maybe there is a lack of empathy on what a rational actor thinks. In little logistical details, where you outline what others do, you should consider, "What does this person need to know (or want to see) in order to get to step 3?"

There is a current in German culture about getting things right the first time. While this philosophy gets good things accomplished, it also leads to a certain inflexibility. Witness the vicious, Kafkaesque cycles in German bureaucracies where Amts Eins and Zwei both want a certain paper from each other, before they will give you their paper. (It happened to me, and it took unconventional methods to break the cycle. Bringing a female friend of mine, who cried and complained about the embarrassing state of Germany.)

You do not seem passionate about your work, therefore you will not care enough to keep the little details in mind. Your boss is, therefore he can work 23 hours a day. Therefore you must determine what you are passionate about.

As far as I can tell, the only thing you have a passion for is looking good for your professor. However, a true passion would make the prof's opinion a secondary matter.

Anyway, giving advice is the most dangerous thing, because it is impossible to foresee how it will turn out. So you see I haven't given you any.

Tayssir John Gabbour
Thursday, July 22, 2004

Stefan, if you are not willing to give up your personal time to improve your organizational skills then things can't be that bad.

Chris Peacock
Thursday, July 22, 2004

"Certainly I have the "books don't do anything by themselves to help me" problem. Adding to that is that I am a slow reader and I _love_ my private life. That is why I often find myself rather going to the movies than reading a book that would help me. "

Any other way of helping him out! Quick!

Thursday, July 22, 2004

Stefan, you seem to be managing projects like you're reading a novel instead of directing a movie.

Reading a book = knowing that there's a beginning and an ending, but each chapter holds unforseen surprises, and you never know exactly how long its going to be until you're finished it.

Directing a movie = the script is written.  its just a matter of executing what's there.  Your planning must include every conceivable advance detail and contingency plans in case unexpected ones ones occur.  When your boss asks where you are, you can show him exactly where in the "script" you are directing things...

Thursday, July 22, 2004

I think you are doing alright.

In my opinion the Professor is not exploiting you, it is just that he does not know how to be a good mentor. At least he sounds nicer that the many people who gave you advice here!

Also, there is more than one way to do things. What you have to do is to cool down, objectively look at how you approach a task and compare with the Professor point of view.  Don't assume that just because the Professor disagrees with you then he is right and you are wrong.

Final advice. You seem to lack confidence at this time. After a few more years you should be fine. Just beware not turn around and become a I-am-always-right arrogant PHB!

Rick Tang
Thursday, July 22, 2004

On the Seven Habits, I found the book annoying and pompous and ridiculously pseudo-scientific with its fancy graphs of nothing.

The audio tapes, on the other hand, are excellent.  Great hot tub listening and the last talk ("Sharpening the Saw") is more than worth the price of admission.

And it's essential background reading to keep a handle on horrible middle-class corporate mangling of the language.  Just try using google to find out how to actually sharpen a real saw.

Thursday, July 22, 2004


All this prattle about how you're so smart and have so much potential is just a flattering way of cracking the whip on you.

I took a lot of that kind of abuse when I used to believe it, and when I was already working hard, and feeling terribly guilty for any and all of my free time.

I don't have a really snappy comeback for it, but you might try asking, as bluntly as possible, what you could be doing differently in your 40 hours a week at work to "fulfill your potential".

Thursday, July 22, 2004

I admit that I skimmed a lot of the above, so if this is redundant, please excuse me.

I see a problem in not being sure if you want to practice the craft of software development, or the business of business.  If you want to be a coder, you can probably get by without a University degree, just by practice, discipline and leveraging the doors you currently have opened for yourself.  If you want to be a manager / marketing guy / leader in business, you'll probably need the degree.  Not because the degree teaches you how to do those jobs, but because that's the way the world sees the division between those two types of work, and because the experience of University helps prepare you for a career of infinite bureaucracy : -)

Friday, July 23, 2004

*  Recent Topics

*  Fog Creek Home