What are the essential concepts all programmers should learn and use?

Why create project documents from scratch when you can have an entire suite of tried and tested templates and guides available for you at the click of a button? Get it now!

The SOLID principles are probably the most important From those you understand the motivation behind using a pattern such as MVC, why people think of persistence ignorance as important and so on. They are at the core of the majority of good practices.

The SOLID principles are probably the most important. From those you understand the motivation behind using a pattern such as MVC, why people think of persistence ignorance as important and so on. They are at the core of the majority of good practices.

I've only briefed by the SOLID principles, but I'll make sure to read Unclebob's paper "Design Principles and Patterns". Thank you! – tplive Jun 29 '09 at 5:50.

Loose coupling, high cohesion. And as for books, Code Complete covers almost everything at some level, at least.

1 for code complete! – gath Jun 26 '09 at 9:29 I'll have a look at the book, from the web link it looks very interesting. Thank you for your tip!

– tplive Jun 29 '09 at 5:51.

Software development is a HUGE arena and you should be careful that you don't take on too much too quickly. Unless you're going to go in the direction of functional programming I'd suggest you start off by making sure you fully understand the concepts surrounding OO design and programming as this should be your foundation. Once you understand that well you'll be able to understand design patterns a lot better and get a feeling for when to use them.

I'd suggest you try out a few languages till you find one you feel comfortable with, personally my favourite language is Ada which is a very pure OO language but in the business world I work in C# which still has a lot of issues but these are outweighed by the more vibrant job market. I wouldn't worry too much about Scrum at this stage as you need to focus more on your dev skills before worrying about project management. The most important thing is to work with as much code as possible, download lots of good reference solutions and work through the code till you understand it, and try and keep an eye on the development trends.

If its viable you may also want to considering attending some developer conferences too as these can be very inspirational.

Thanks for your response! – tplive Jun 29 '09 at 5:49.

Stay away from ACRONYMS (including those you've listed) and Methodologies(tm). At least in the beginning. Read good books.

Start with this one: Pragmatic Programmer. Learn algorithms and data structures, possibly from Introduction to algorithms by Cormen et al. Write a lot of code.

Practice is more important than anything else.

Good books are always welcome. But I need to know that I'm "equipped" before taking on any book. For instance, I'm just finishing the SitePoint book "Build Your Own WebSite Using ASP.NET 3.5" and it's been a good learning experience, but I feel that I've still only touched the very tip of each topic covered... So I need to dig into each topic more, build on the examples and make it "my own".. – tplive Jun 29 '09 at 5:54.

How to test software with unit tests. Being able to do that will solve 90% of all the other issue automatically since you can't test while they are around. When you know how to test, you can start on advanced topics like design.

I've heard about Unit testing, and it's an interesting topic, but I've laid off on it as I initially thought it would require too much insight.. Now I'll look at it again. Thank you for your tip! – tplive Jun 29 '09 at 5:55 You're already unit testing your software, you just throw the unit tests away: You write a piece of code, you run it, you check the result, you fix the bugs, repeat... Automatic unit testing is simply telling the computer what's right and wrong and let it do the checks for you.

– Aaron Digulla Jun 29 '09 at 13:24.

I'd recommend "Object Oriented Analysis and Design with Applications" by Grady Booch et al. The latest editoin has detailed explanation of concepts of OOAD including MVC, UML (which he invented), and discussions on how to manage the whole process of software development. The second part of the book exemplifies all this by developing 5 sample systems (with sometimes orthogonal aspects from the very core).

I've borrowed "The Unified MOdeling Language User Guide" by Booch et al, from a colleague and started perusing the first few chapters. I'll look at the other book as well! I love learning by example!

Thank you! :) – tplive Jun 29 '09 at 5:57 ooad is much more thorought book than just guide to uml, check it out as well :-) – MadH Jun 29 '09 at 10:57.

Another good one is of course Design Patterns by GoF which will give you an idea of loose coupling, ways to efficient encapsulation and reuse of code, etc.

For what concerns the algorithmic part, take any book which is not bounded to a particular programming language. My favorite is Introduction to Algorithms by T. H.

Cormen et al, it gets a bit theoretical at some points, but I especially like it when they are proving certain things and not just asking you to believe it.

When you are working with any modern general purpose language, it is probably a good idea to get a handle on patterns (MVC or Model-View-Controller is one). The book by the "gang of four" is a must read for this, or at least research a few and use it as a reference. Clicky Refactoring is another concept that should be in your arsenal.

The book by Martin Fowler on this subject is a very nice read and helps understand the aforementioned patterns better also a little explanation about UML is included. Can't post more than one hyperlink so... search on amazon for: Refactoring, Improving the design of existing code When you want to communicate your designs UML (Unified Modelling Language) is the 'tool' of choice for many people. However UML is large and unwieldy but Martin Fowler (again) has managed to boil it down to the essentials.

Search on amazon for: UML Distilled (make sure you get the most recent one) SCRUM is one of many methods that is used to manage software development groups, I do not think there is much merit in learning that when you are just starting out or on your own. Especially not in detail. Hope it helps... PS: SOLID I haven't heard about yet, somebody else has to help you there.

You'd have a decent foundation if you surveyed basic Data Structures, Algorithms, and Algorithms Analysis.

I think that you should start coding real world problems to get a feel for problems in the programming domain. Then you have a better background to understand why objects are important. Then, after managing objects, you will learn why patterns and OO principles are important.

Personally, I highly recommend the Agile Software Development, by Robert C Martin. But it may be a long and tiresome read unless you have a feel for the problems being solved. I'm afraid that you may need 500-1000 hours of coding at the minimum before you get an appreciation that the problems being solved are real.

And it probably takes 7000+ hours before you develop an instinctive heart-felt pain from merely reading the problems, making this sort of book become the page-turner that it should be. Regrettably, many of the sound practices that you should develop are only appreciated after having to live with your code over time. If you just do many excercises and abandon the code afterwards just "because it works", then you are missing out on the greatest pain of all.It is a luxury our industry does not have, and "technical debt" is a very very real and costly to those with large code bases.

I feel kinda silly answering my own question like this.. :) But one valuable resource I've found for learning to write code, is the Euler Project at projecteuler.net It's basically a collection of mathmatical problems that you solve by writing your own solution to it. Once you've found the answer to a particular problem, you're allowed access to that problem's forum where different solutions are discussed. I was amazed at how much I was learning in a) solving a challenge, b) reading about other peoples approaches and c) how many programming languages there are out there!

:) The problems start out easy (you can tell by the number of people who's solved them) and progress to harder and harder problems. Currently I'm working on problem #3, having solved the previous two... I recommend you start chippin' away at them, no matter your level!

If you like Project Euler. Try pythonchallenge. Com too.It is Python focused but you can solve the Problems without Python.

I like it very much cause you have to unlog the next Challenge. – bastianneu Jun 30 '09 at 14:32.

The essential concepts are all programmers should learn and use (without quotes):. The Essential Concepts are designed to help you succeed in your general chemistry course. Please visit your bookstore to order these helpful supplements...".

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions