Programming › Re: Become A Better Programmer by abdulapopoola(op): 6:06am On Jul 28, 2012 |
@Jamiu please don't call me great. I am only an 'abd. @Ekt bear - it is one of the purest languages  Thanks for reading too. |
Programming › Become A Better Programmer by abdulapopoola(op): 10:24pm On Jul 22, 2012 |
Some good suggestions on improving your programming skills: An awesome team of professionals reviewed my code and quickly exposed my mistakes. Yes, it was a great albeit humbling experience . It gave me a firsthand glimpse of my code-writing flaws; I appreciate this as it will enable me to improve insha Allaah.
Here are a couple of my thoughts on how to become better; maybe I shouldn’t be writing this again but my views have changed a lot since I wrote this and it is great to have a resource I can always point to. Enough talk; here are some tips: 1. Start Simple
Choose an easy-to-learn yet powerful language (you could try python or scheme) that enables you to learn the basics of programming. Choose any language you like; learn it well and deeply enough – its programming style, culture, strengths, flaws and best uses. This takes time: it can even take years but becoming a programming ace is more like a marathon and less like a sprint. 2. Read books
Yes, you have to read. Read books like The Pragmatic Programmer, Code Complete, SICP and other similar classics. They will help you to think better about code, identify potential pitfalls easily and avoid mistakes. Well, this step should come after you’ve mastered the basics of programming and want to move to the next level. Reading will expose you to new ideas, freshen your mind and make you stand out. 3. Read + Write Code
I can’t emphasize this enough; you definitely have to ‘live in’ code and write code just for the fun of it. Write applications using the languages you know, start by building easy applications and then take on more challenging projects. Try out scary ideas too : what is stopping you from writing your own JavaScript interpreter in JavaScript ? 4. Learn the funky CS stuff
All about algorithms, data structures, operating systems, compilers and all other basic theoretical Computer Science stuff. You become a better programmer by understanding how the things we take for granted (compilers, computer memory etc) work. The CS courses will probably expose you to those annoying unrealistic problems but they are a great way to prepare for challenges – afterall it is all about code. Read more about this here and here. 5. Be Honest with your code
As a programmer you MUST know why your code works. Don’t just put in unexplainable pieces of code that ‘seem’ to work – that ’magical’ print statement that appears to make everything work when you insert it and breaks the code when you remove it – I used to do this too . It is a shortcut to disaster as it’ll most likely lead to horrible, hard-to-fix ‘magical’ bugs too. Do you have some tricky code? Step through it with a debugger and see if it really works as it ought to – don’t just assume it works when it compiles and gives the right result for few test cases. Step through it and confirm it yourself. 6. Raise your standards
Handle unexpected cases, never assume data will be valid, use assertions to ensure that your code breaks immediately something is wrong. Don’t display error messages to users, degrade gracefully. Test, test and test your code. Code defensively. Never ever lower your standards for anything, your code speaks volume of you so you should make sure you take a stand to write the best quality code you can, are you copying the same lines of code over and over? Write a method to handle that for you. Understand the architecture of the framework you are working on before attempting to write patches or new methods. Whatever you do, strive to improve your code writing skills every time you write. I know it is challenging to move out of your comfort zone but don’t you want to be a good programmer?  7. Writing code is the easiest part of programming
Don’t just dive into code, you’ll end up with poorly-designed code and get frustrated easily when you realize that your hastily-written piece of code doesn’t do what you want it to do. During an interview, I was asked to write a tokenizer – I rushed to code and ended up with a brittle program that did the exact opposite of tokenization!
When faced with a very tricky problem, think of a possible solution, try out your design on paper or with pseudocode, see that it works and then implement it. If it works fine, test it and then improve its style and readability. Lastly you should optimize it and add all other fine bits.
Programming is like writing, it is an ART and requires time, dedication and effort. So keep at it and don’t think you’ll become a rockstar developer in a few months. Like all professions; you probably need years of top quality work to get there and lots of prayers too.
Do you disagree? Drop a comment  http://abdulapopoola./2012/07/16/so-you-want-to-become-a-better-programmer/ |
Programming › Re: Teaching Software Engineering In Four Months? by abdulapopoola(m): 8:50am On Apr 10, 2012 |
Nope it takes years to become a good software engineer.
But you can become a good programmer in that amount of time and slowly learn more about other aspects of software engineering such as OOP, design patterns, anti-patterns etc. |
Programming › Write Beautiful Code by abdulapopoola(op): 6:33am On Apr 09, 2012 |
|
Programming › The Java Virtual Machine Explained by abdulapopoola(op): 5:30am On Apr 02, 2012 |
|
|
Programming › Re: Terminal Commands For Developers by abdulapopoola(op): 1:43pm On Feb 18, 2012 |
Thanks man! You are right  |
Programming › Terminal Commands For Developers by abdulapopoola(op): 10:48am On Feb 17, 2012 |
|
Programming › Http Information by abdulapopoola(op): 2:19pm On Feb 12, 2012 |
|
Programming › Re: Sorting Algorithms by abdulapopoola(op): 6:45pm On Feb 03, 2012 |
I forgot to mention that insertion sort carries out only swap operations (basically exchanging the pointers) and doesn't carry out shift operations. Algorithms aside, it's been very very nice discussing with you and I am glad to have met you - thanks for your insight. It seems you are a C/C++ person; am I right?  |
Programming › Re: Sorting Algorithms by abdulapopoola(op): 11:57am On Feb 03, 2012 |
Hey ekt_bear
This is from the link you provided:
From Stirling's approximation we know that log 2(n!) is Ω(nlog 2n). This provides the lower-bound part of the claim.
So it is possible for a comparison based algorithm to run in nlogn. |
Programming › Re: Sorting Algorithms by abdulapopoola(op): 11:49am On Feb 03, 2012 |
Thanks ekt_bear.
I was looking at it from a purely theoretical perspective and not actually bothering about the cost of shifting operations.
All the same, thanks for your insight. |
Programming › Sorting Algorithms by abdulapopoola(op): 7:03am On Feb 03, 2012 |
|