The essential skills of the problem solving software engineer are: Understand business mission. Our clients and their customers are NOT in business in order that the software engineer gets to play with cool new toys. The software engineer must understand each activity and each decision in the software lifecycle in the wider context of the business mision of the client and client's customers. Ability to learn new things. The half-life of a bit of computer related information is probably about 3-4 years. Not only must the software engineer constantly struggle to understand the clients problems and business, but the tools available for solving those problems are constantly advancing. Critical thinking. Not everything stated by clients and vendors is true. The software engineer must be able to sort through incomplete and conflicting claims. Communication Skills. Every phase of nearly every project involves communication with clients, customers, vendors, programmers, team members, funding sources, and many others. The software engineer requires effective written and oral communication skills. Technical Skills. Yes, of course, the software engineer needs technical skills, but the software engineer with a sound technical background can usually learn the nre technical skills required by each project without difficulty. The software engineer needs to be proficient in at least one or two programming languages or environments, understand hardware and operating systems, be able to use a data base and design applications using data base tools, and understand the implications of the software development lifecycle. See also: DevelopmentPrinciples and MyMotto