One minor nit - on myself - on clever code, the answer to the second question was supposed to be "No!".<br><br><div class="gmail_quote">On Wed, Aug 26, 2009 at 7:54 PM, tug <span dir="ltr"><<a href="mailto:tug.williams-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org">tug.williams-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I agree with everything that's been written - I've recently acquired a team of lesser experienced C++ developers. I hadn't realised how much I'd learned in the past 25 years.<br>
<br>
Fundamentals are not being learned... You should experience Assembler (6502 was mine, then 80C51...) - write half a program, get the brain to hurt, be in awe of people who wrote complete systems in assembler, and move up the food chain.<br>
<br>
C and C++ are important steps because C++ developers can migrate to Java, the other direction is harder. Developers coming from non C / C++ world often don't understand data properly. They think memory is something handled by the operating system, and think that smart pointers are all you need :S - this may be a perfectly sufficient solution, but understanding what's happening underneath is important to understanding everything.<br>
<br>
Code problems are almost always an inability to understand what someone else's code is doing, not that the code is not fast enough. Write simple functional code, and measure performance. IF the solution is not fast enough, learn to measure bottlenecks, and pick the low hanging fruit. Experience will teach you what to avoid next time.<br>
<br>
Add comments, and lay the code out to be readable - disk space is cheap, monitors are big, compilers are efficient, and doing something in one line of code is not clever. Oh and put rude comments about existing code - the next person after you will also need some light relief!<br>
<br>
tug<br>
<br>
colin davidson wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">
If you want to code well, do a lot of coding. Read code. Read Linux sources - either kernel or modules. If you find the code easy to understand, ask yourself why and try to incorporate the good practices that you identify in your own code. If you find it hard to read, ask yourself why, and try to avoid the bad practices that you identify in your own code.<br>
<br>
Read good books on programming. Read "The mythical man month" by Fred Brooks, "Peopleware" by Tom DeMarco (very good for humility - I'll let you work out why), "The psychology of computer programming" by Gerald Weinberg and, above all, "Code Complete" by Steve Mcconnel. I'm sure others can recommend other, equally good, books but from personal experience I can recommend these as both easy to read cover-to-cover and full of wisdom and useful advice for the programmer.<br>
<br>
Finally, observe the KISS (Keep It Simple, Stupid!) principle and, to paraphrase Einstein, make your code as simple as it can be, and no simpler. When you have finished writing something (be it a clause, a function or a program), ask yourself "Is this code really clever?". If your answer is "Yes!", ask yourself "Does it really need to be clever?". If your answer is "Yes!", rewrite the damn thing. Unnecessarily clever code is bad code, period. Once you get past the meaningless gobblydegook written by computer language illiterates who call themselves coders (and practice will almost certainly remedy this problem in anyone inherently capable of programming a computer), the most common kind of bad code by far is "clever" code.<br>
<br>
I wouldn't spend time and money on a course until I'd done the above, if I were you, you can get far more bang for your buck/time "just doing it".<br>
<br>
Good luck, cheers, Colin (the other one)<br>
<br></div><div class="im">
On Wed, Aug 26, 2009 at 4:32 PM, Dave Germiquet <<a href="mailto:davegermiquet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" target="_blank">davegermiquet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org</a> <mailto:<a href="mailto:davegermiquet-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" target="_blank">davegermiquet@gmail.com</a>>> wrote:<br>
<br>
Hello All,<br>
<br>
I am currently looking to expand my programming knowledge from more<br>
than College. College has taught me the basics of programming, Object<br>
Oriented concepts however not how to properly use them. I have learned<br>
alot of my concepts from looking at other people's programs.<br>
<br>
I am looking to take a course which gives me information on how to<br>
properly structure code and use Object Oriented programming in day to<br>
day use.<br>
<br>
Can anyone make a suggestion on where to find a course with more<br>
advance concepts of programming? Language is not really specific<br>
however I'd prefer java/c/php.<br>
<br>
Basically so I'm programming the correct way, instead of just putting<br>
code together to do a specific task.<br>
<br>
Dave Germiquet<br>
--<br>
The Toronto Linux Users Group. Meetings: <a href="http://gtalug.org/" target="_blank">http://gtalug.org/</a><br>
TLUG requests: Linux topics, No HTML, wrap text below 80 columns<br>
How to UNSUBSCRIBE: <a href="http://gtalug.org/wiki/Mailing_lists" target="_blank">http://gtalug.org/wiki/Mailing_lists</a><br>
<br>
<br>
</div></blockquote><div><div></div><div class="h5">
<br>
--<br>
The Toronto Linux Users Group. Meetings: <a href="http://gtalug.org/" target="_blank">http://gtalug.org/</a><br>
TLUG requests: Linux topics, No HTML, wrap text below 80 columns<br>
How to UNSUBSCRIBE: <a href="http://gtalug.org/wiki/Mailing_lists" target="_blank">http://gtalug.org/wiki/Mailing_lists</a><br>
</div></div></blockquote></div><br>