This article will try to outline my understanding of what constitutes software development. The best analogy to describe software development would be to compare it with writing. Most of us have a decent grasp of the English language, we are all posting in this forum aren't we Let me then ask a question. How many of us believe that if we were to write a book, it would sell like the Harry Potter books. Is the reason my book would not sell because of my lack of English skills.Now, lets look at writing tasks. We could start with a post it we put on the refrigirator as a reminder to buy milk, there could be emails we exchange, there would be fairly easy to contruct reports we generate at our work place and so on till you come to the large books.Similarly, you could have a small Javascript to handle MouseOver functionality in a webpage to more complex software pieces to finally a large software project, like say Banking software. Writing the small pieces of code, you could achieve with a basic understanding of any language, as in writing a Post-It. But as you progress to larger and larger pieces of software, you require skills to visualize the entire project, the interdependencies and how all the pieces should be put together. This would be the design of the software system. It is not necessary that you know UML etc. to be able to design good software. You require problem solving skills, a vision and enough communication skills to present your ideas to your readers or listeners.There are tips and tricks you learn as you develop more and more software, which are quite difficult to document, that will help you in designing better software. This is the primary reason, nobody has really written a good book on "how to design good software". It would be about as useful as a book on "How to write a best seller".Now, lets talk about Design patterns and algorithms etc. These are the scientific part of the software development process. There are well established rules and conventions about which design pattern to use in what kind of scenario etc.Next, development methodologies. These deal with how software is developmented and deal more with the process of writing code than the code itself. There is therefore more of Management than software development.Thus I believe, Software development involves art, some science and a lot of intelligence and aptitude.