You will notice that there are no micro coding tips&tricks below. No info on how to make a fast for loop or such. The tips I post is what
I
think you should do to
learn how to learn
those tricks for yourself. In all, this list is a little softer around the edges and goes mostly for the background things.
Most noticeably you will see things that are totally opposite to what most recognized people say about how to code. This is probably because there is actually a difference in target audience. This is about
you
, and how you should become a great coder, maybe even a rock star coder! They often say how you should do to write good and portable code that other coders can understand and maintain.
#1 Do development on a fast computer
Wicked fast even. Compiling should take at most a couple of seconds so that you do this often. In fact what is most important is how long it takes from you hitting that Run Project short key until your application shows up. The lesser the time the more you will run the application and the more keen you will be to try new things, which is how you learn. If running takes too long you will go for, not safer, but code you know to work, and you will evolve more slowly. A good advice is also to keep a crappy computer around for testing. Your GUI might feel snappy on your super fast developer monster machine, but your customers might not be so lucky as to have one of those.
#2 Use a big TFT screen
Code is talking to you in more than characters. With a bigger screen you will get more overview and this helps your right side brain into the game. You will see patterns more clearly and you can see the structure of a whole method and not just parts of it. You should have such a big screen that your methods will fit, in most cases, on one page. Eyes move fast, editor scroll panes do not. I use a 30 inch Apple CinemaDisplay and a 20 inch Dell rotated 90 degrees as a second debugging monitor.
#3 Learn your IDE
It matters less what IDE you use, today they are all above the
good enough
bar. Be ashamed every time you do something in a way you know you can do faster another way. Learn a new feature of your IDE until you have learned them all, or at least learned enough. Use short keys but don't over exaggerate. Be super lazy and create short cuts for everything you do. All to keep down the waiting time and minimizing the most important code-to-show time.
#4 Don't learn APIs too well
The APIs might change and/or you might start to use another API. Learn how to find information about the APIs really fast. Use your IDE for this where appropriate. Use JavaDoc for your own code and mount the JavaDocs in your projects for imported APIs. Knowing how to find information is good for everything, storing APIs in brainRAM is bound to get old. If for instance you don't use some sort of parameter help/completion you have a long walk ahead.
#5 Write smart cool compressed code constructs
And test them thoroughly! You will learn what works and what don't. You will evolve, not to use the smartest and coolest code, but in terms of knowing that smart code constructs is seldom the way of the rock star programmer, other than for showing off. Less code, in a smart way, means less to maintain. Over-smart code that is just for show will make your fellow code maintainers put "fart bags" on your chair just when the new super-hottie from the Rocket Scientists Department comes over to ask you a question (which would be a bad thing).
#6 Read books
You might be good at what you do, but knowing only that, whatever it may be, is seldom enough to really shine. Knowing enough about more fields than the field you are about to shine in is golden. Take for instance a GUI coder that knows nothing about databases. He might be almost useless since he can't interact with the guy doing the backing store, and so on. It takes as much effort to be 90% good in five fields than to be 99% good one one.
#7 Go back and enhance your old code
Not that it is sound from an economical point of view but because you learn oodles of things reading you own crap, which old code always is. Code gets rotten after a couple of years, it really does, since you evolve. If you can't find bad things in your old code you either already are a rock star programmer, or maybe more probable, hasn't evolved much lately.
#8 Eat your own dog food!
If you create APIs, create some applications using that API. If you create applications, ask your friends/wife(s)/husband(s)/children to try it. Don't say
you
did it; say that your crappy no-good overpaid work mate did it, so you get some honest feedback. Honest feedback is golden.
#9 Don't ask people for advice
Learn how to get that answer yourself instead, it is way more useful. Finding out how to get information about something is a value in itself and may pay you back more than the solution to the problem in the first place. Ask only if you must or if the question in itself is more a discussion and you are actually spreading information. Of course you shouldn't take this too literally, but I see lots of people asking pointless questions they could have found out faster by ten seconds of googling.
#10 Do micro benchmarks
But know that they are useless for almost all purposes in the real world. It will increase your knowledge about performance though, and next time you have a higher probability of choosing the fastest construct for new code. Don't do premature code optimization but learn how to write fast code from the start, without sacrificing readability.
#11 And last...
Eat right, exercise more, don't drink too much coffee, and all that other crap that matter more than you think, but you won't do because I said so.
Thoroughly enjoyable article, Michael. The comedy of life because a lot of it is true. I would add being active in the open source community, but other than that, I think you've covered just about all the bases.
Re: My Top Ten Tips on how to become a Rock Star Programmer
I will add a few more (on top of my list).
1 - Don't rely upon assumptions that you did not verify or worst that you cannot verify (e.g. object allocation/garbage collection is going to be blazing fast with the new VMs)
2 - Don't listen to advice before but request for feedback after (criticism is useful only when focused).
3 - Find the right middle ground (the middle-way) - Simplicity versus Performance, Functionality versus Testing, there are always trade-off. And don't forget that your capital time is limited (basically this rule could be called
"getting the most for your buck"
).
Jean-Marie Dautelle - Marlboro, MA
-- Javolution: Everything should be made as simple as possible...
-- JScience: But not simpler!
Re: My Top Ten Tips on how to become a Rock Star Programmer
I don't like the words Rock Star Programming as I really think that good code is elegant, clean and sober.
Also, I think that #1, #2 and #8 are in conflict.
OK, you are just fishing for a new computer, aren't you?
Re: My Top Ten Tips on how to become a Rock Star Programmer
> did anyone edit this article before it was posted?
No.
I have gone back and found out you're absolutely right. Some grammar was way off. Some still is, but I can't tell, as you probably couldn't tell if you wrote something in Swedish,
my
native language..
Re: My Top Ten Tips on how to become a Rock Star Programmer
Agreed #1 is condradictory, compile often. Well then, why have an IDE? Since an IDE will tell you the same thing a compiler does, when there might be errors in pre-compilation. I guess for me glam rockstar is so 80's for me.
Re: My Top Ten Tips on how to become a Rock Star Programmer
>
#1 Do development on a fast computer
> Wicked fast even. Compiling should take at most a
> couple of seconds so that you do this often.
Would a dual "Dual Core" Opteron system fit the bill? No less than 8 GB of RAM of course. You know, for those edge cases like where I might want to open every single project I have in my IDE at once
> editor scroll panes do not. I use a 30 inch Apple
> CinemaDisplay and a 20 inch Dell rotated 90 degrees
> as a second debugging monitor.
What about those 3 and 4 panel LCDs? Do you recommend those?
>
#5 Write smart cool compressed code
> constructs
And let's not forget: complement that cool compressed code with lots and lots of XML.
>
#10 Do micro benchmarks
> But know that they are useless for almost all
> purposes in the real world. It will increase your
> knowledge about performance though, and next time you
> have a higher probability of choosing the fastest
> construct for new code. Don't do premature code
> optimization but learn how to write fast code from
> the start, without sacrificing readability.
Wait, I'm confused... how can you write slow code if you have a wicked fast machine?
>
#11 And last...
> Eat right, exercise more, don't drink too much
> coffee, and all that other crap that matter more than
> you think, but you won't do because I said so. :)
I guess since you didn't mention beer or cigarettes that those are necessary to become a rock star programmer? And what is this "eat right" concept? I have never heard of this -- something new the XP guys "invented"?
Re: My Top Ten Tips on how to become a Rock Star Programmer
Kudos for posting a witty and fun read. I think being a "Rock Star Programmer" is a great way to look at really enjoying the art of coding/developing/engineering (or whatever the pointy haired manager calls it these days...) I would add a few more:
12. Subscribe to RSS feeds, monitor the more reputable blogs and take in a podcast now and then.
13. Learn a programming language that is totally unrelated to what you use at work. Coding in one language/paradigm after a while forces you to "think" in that language. Learning an unrelated language can alter the way you think about programming in general and could help you approach problems in a different and more effective way.
Do not use a particular feature of your IDE if you don't know how to build your app without it. Instead of messing around with more or less stable plugins learn how to do the same things by writing build scripts using common APIs and tools. Keep your build environment flexible and portable, understand how things are working, keep your backstage canny.
This is a killer for a whole bunch of programming platforms
Re: My Top Ten Tips on how to become a Rock Star Programmer
Oh, no, please stop this "learn an unrelated language" nonsense. In which way would it help me in my Java programming to learn C++ and its overloaded operators? Just to take a typical example.
Re: My Top Ten Tips on how to become a Rock Star Programmer
He said totaly unrelated.
C++ is like the uncle or granduncle of java.
I think he means something like lisp, cobol, Mathematica, PHP or perl.
Completely out of the object oriented world.
I already had some ahh-moments with lisp and cobol.
Mike
My Top Ten Tips on how to become a Rockstar Programmer
At 2:55 PM on Mar 7, 2006, Mikael Grev
wrote:
Fresh Jobs for Developers Post a job opportunity
Most noticeably you will see things that are totally opposite to what most recognized people say about how to code. This is probably because there is actually a difference in target audience. This is about you , and how you should become a great coder, maybe even a rock star coder! They often say how you should do to write good and portable code that other coders can understand and maintain.
#1 Do development on a fast computer
Wicked fast even. Compiling should take at most a couple of seconds so that you do this often. In fact what is most important is how long it takes from you hitting that Run Project short key until your application shows up. The lesser the time the more you will run the application and the more keen you will be to try new things, which is how you learn. If running takes too long you will go for, not safer, but code you know to work, and you will evolve more slowly. A good advice is also to keep a crappy computer around for testing. Your GUI might feel snappy on your super fast developer monster machine, but your customers might not be so lucky as to have one of those.#2 Use a big TFT screen
Code is talking to you in more than characters. With a bigger screen you will get more overview and this helps your right side brain into the game. You will see patterns more clearly and you can see the structure of a whole method and not just parts of it. You should have such a big screen that your methods will fit, in most cases, on one page. Eyes move fast, editor scroll panes do not. I use a 30 inch Apple CinemaDisplay and a 20 inch Dell rotated 90 degrees as a second debugging monitor.#3 Learn your IDE
It matters less what IDE you use, today they are all above the good enough bar. Be ashamed every time you do something in a way you know you can do faster another way. Learn a new feature of your IDE until you have learned them all, or at least learned enough. Use short keys but don't over exaggerate. Be super lazy and create short cuts for everything you do. All to keep down the waiting time and minimizing the most important code-to-show time.#4 Don't learn APIs too well
The APIs might change and/or you might start to use another API. Learn how to find information about the APIs really fast. Use your IDE for this where appropriate. Use JavaDoc for your own code and mount the JavaDocs in your projects for imported APIs. Knowing how to find information is good for everything, storing APIs in brainRAM is bound to get old. If for instance you don't use some sort of parameter help/completion you have a long walk ahead.#5 Write smart cool compressed code constructs
And test them thoroughly! You will learn what works and what don't. You will evolve, not to use the smartest and coolest code, but in terms of knowing that smart code constructs is seldom the way of the rock star programmer, other than for showing off. Less code, in a smart way, means less to maintain. Over-smart code that is just for show will make your fellow code maintainers put "fart bags" on your chair just when the new super-hottie from the Rocket Scientists Department comes over to ask you a question (which would be a bad thing).#6 Read books
You might be good at what you do, but knowing only that, whatever it may be, is seldom enough to really shine. Knowing enough about more fields than the field you are about to shine in is golden. Take for instance a GUI coder that knows nothing about databases. He might be almost useless since he can't interact with the guy doing the backing store, and so on. It takes as much effort to be 90% good in five fields than to be 99% good one one.#7 Go back and enhance your old code
Not that it is sound from an economical point of view but because you learn oodles of things reading you own crap, which old code always is. Code gets rotten after a couple of years, it really does, since you evolve. If you can't find bad things in your old code you either already are a rock star programmer, or maybe more probable, hasn't evolved much lately.#8 Eat your own dog food!
If you create APIs, create some applications using that API. If you create applications, ask your friends/wife(s)/husband(s)/children to try it. Don't say you did it; say that your crappy no-good overpaid work mate did it, so you get some honest feedback. Honest feedback is golden.#9 Don't ask people for advice
Learn how to get that answer yourself instead, it is way more useful. Finding out how to get information about something is a value in itself and may pay you back more than the solution to the problem in the first place. Ask only if you must or if the question in itself is more a discussion and you are actually spreading information. Of course you shouldn't take this too literally, but I see lots of people asking pointless questions they could have found out faster by ten seconds of googling.#10 Do micro benchmarks
But know that they are useless for almost all purposes in the real world. It will increase your knowledge about performance though, and next time you have a higher probability of choosing the fastest construct for new code. Don't do premature code optimization but learn how to write fast code from the start, without sacrificing readability.#11 And last...
Eat right, exercise more, don't drink too much coffee, and all that other crap that matter more than you think, but you won't do because I said so.Have you got things to share?
Cheers,
Mikael Grev
www.migcalendar.com and www.miginfocom.com
35 replies so far (
Post your own)
Re: My Top Ten Tips on how to become a Rock Star Programmer
"enough to rally shine" - did anyone edit this article before it was posted? Some grammar is wrong.Tom
Tom Pridham
Technologist & Founder
Coastal Software Solutions Inc.
office: 813.600.5053
Pridham@Mindspring.com
Lol
ActiveObjects: an Easier Java ORM; Fuse: Resource Injection for Java
Re: My Top Ten Tips on how to become a Rock Star Programmer
I will add a few more (on top of my list).1 - Don't rely upon assumptions that you did not verify or worst that you cannot verify (e.g. object allocation/garbage collection is going to be blazing fast with the new VMs)
2 - Don't listen to advice before but request for feedback after (criticism is useful only when focused).
3 - Find the right middle ground (the middle-way) - Simplicity versus Performance, Functionality versus Testing, there are always trade-off. And don't forget that your capital time is limited (basically this rule could be called "getting the most for your buck" ).
-- Javolution: Everything should be made as simple as possible... -- JScience: But not simpler!
Re: My Top Ten Tips on how to become a Rock Star Programmer
I don't like the words Rock Star Programming as I really think that good code is elegant, clean and sober.Also, I think that #1, #2 and #8 are in conflict.
OK, you are just fishing for a new computer, aren't you?
Cheers,
Matt
Re: My Top Ten Tips on how to become a Rock Star Programmer
> did anyone edit this article before it was posted?No.
I have gone back and found out you're absolutely right. Some grammar was way off. Some still is, but I can't tell, as you probably couldn't tell if you wrote something in Swedish, my native language..
Cheers,
MiG Java Calendar Component, MiG Layout for Swing/SWT (Vote -> JDK)
Re: My Top Ten Tips on how to become a Rock Star Programmer
> Also, I think that #1, #2 and #8 are in conflict.Correct you are. I have updated #1.
> OK, you are just fishing for a new computer, aren't you?
Yes.
Cheers,
MiG Java Calendar Component, MiG Layout for Swing/SWT (Vote -> JDK)
Re: My Top Ten Tips on how to become a Rock Star Programmer
Agreed #1 is condradictory, compile often. Well then, why have an IDE? Since an IDE will tell you the same thing a compiler does, when there might be errors in pre-compilation. I guess for me glam rockstar is so 80's for me.Re: My Top Ten Tips on how to become a Rock Star Programmer
Actually I meant run often.The 80:s is hip again, for a month or so. Then it's something new that's hip..
Cheers,
MiG Java Calendar Component, MiG Layout for Swing/SWT (Vote -> JDK)
Re: My Top Ten Tips on how to become a Rock Star Programmer
>#1 Do development on a fast computer
> Wicked fast even. Compiling should take at most a
> couple of seconds so that you do this often.
Would a dual "Dual Core" Opteron system fit the bill? No less than 8 GB of RAM of course. You know, for those edge cases like where I might want to open every single project I have in my IDE at once
> editor scroll panes do not. I use a 30 inch Apple
> CinemaDisplay and a 20 inch Dell rotated 90 degrees
> as a second debugging monitor.
What about those 3 and 4 panel LCDs? Do you recommend those?
>
#5 Write smart cool compressed code
> constructs
And let's not forget: complement that cool compressed code with lots and lots of XML.
>
#10 Do micro benchmarks
> But know that they are useless for almost all
> purposes in the real world. It will increase your
> knowledge about performance though, and next time you
> have a higher probability of choosing the fastest
> construct for new code. Don't do premature code
> optimization but learn how to write fast code from
> the start, without sacrificing readability.
Wait, I'm confused... how can you write slow code if you have a wicked fast machine?
>
#11 And last...
> Eat right, exercise more, don't drink too much
> coffee, and all that other crap that matter more than
> you think, but you won't do because I said so. :)
I guess since you didn't mention beer or cigarettes that those are necessary to become a rock star programmer? And what is this "eat right" concept? I have never heard of this -- something new the XP guys "invented"?
Haha. Good post Mikael!
Re: My Top Ten Tips on how to become a Rock Star Programmer
Kudos for posting a witty and fun read. I think being a "Rock Star Programmer" is a great way to look at really enjoying the art of coding/developing/engineering (or whatever the pointy haired manager calls it these days...) I would add a few more:12. Subscribe to RSS feeds, monitor the more reputable blogs and take in a podcast now and then.
13. Learn a programming language that is totally unrelated to what you use at work. Coding in one language/paradigm after a while forces you to "think" in that language. Learning an unrelated language can alter the way you think about programming in general and could help you approach problems in a different and more effective way.
Keep your backstage canny
Do not use a particular feature of your IDE if you don't know how to build your app without it. Instead of messing around with more or less stable plugins learn how to do the same things by writing build scripts using common APIs and tools. Keep your build environment flexible and portable, understand how things are working, keep your backstage canny.This is a killer for a whole bunch of programming platforms
Re: My Top Ten Tips on how to become a Rock Star Programmer
Oh, no, please stop this "learn an unrelated language" nonsense. In which way would it help me in my Java programming to learn C++ and its overloaded operators? Just to take a typical example.What you claim is pure BS!
Re: My Top Ten Tips on how to become a Rock Star Programmer
He said totaly unrelated.C++ is like the uncle or granduncle of java.
I think he means something like lisp, cobol, Mathematica, PHP or perl.
Completely out of the object oriented world.
I already had some ahh-moments with lisp and cobol.
Mike
Re: My Top Ten Tips on how to become a Rock Star Programmer
You forgot #11 Get a family to get off your job once a while...There is nothing more rewarding trust me