Ten Tools Every Software Developer Needs
In the early days, software development was more art than science and developers were looked on as geeks and quasi-magicians. Over the years, methodologies have evolved that have brought the software development process more into the mainstream. Here are ten recommendations for the modern programmer. Get to know these tools and you’ll be in high demand in the software development field.
In no particular order:
1) SQL – Structured Query Language is the Lingua Franca of database programming and all modern business programming requires some database interaction. Having a strong SQL understanding will ensure you can talk the database language when the time comes.
2) Database Design – Good database design is a key factor in any modern complex system. You may never have to design a database from the ground up but you will certainly need to know key concepts like indexing, foreign keys and table normalization.
3) UML – The Unified Modeling Language isn’t really a language at all but rather, it’s a mechanism for expressing relationships and processes in any system. UML is widely used in commercial software design and development, and it will greatly enhance your ability to communicate and understand complex systems.
4) Object Oriented Design – Good OO design skills are required in most software development today. While UML might be used to express a system’s design, the software developer must be able to actually design the objects themselves using good OO design skills. In an analogy, UML might represent the written sheet music, and the OO design would be the process of composing the music.
5) Refactoring – Refactoring is closely related to OO design. It is the process of improving on existing implementations by applying sound design principals and making changes accordingly.
6) Design Patterns – Software developers often face similar or even identical problems while developing disparate systems. Some problems, and their solutions, are so common that they have been cataloged into a common set of design patterns. The more of these patterns a developer knows, the more productive he or she will be.
7) Web Apps – Web application programming is evolving rapidly and it’s a completely different model than traditional desktop or client/server application programming. The modern developer will become familiar with the evolving technologies and stay abreast of the changing landscape.
8) Client/Server Apps – Client/Server apps operate in more controlled environments than Webb apps and come with their own sets of concerns. Many C/S applications run today’s businesses and will continue to through the foreseeable future.
9) Programming Language Skills – The basis for all software development is the programming language. Languages come in and out of favor and the modern developer has to keep current on the languages that are in-demand. At the time of this writing, Java, C#, C++, HTML, XML, and other Web-oriented languages are in high demand.
10) Infrastructure – Although the hardware, operating systems, network topology and administrative concerns that go along with those things aren’t directly tied to software development, they are very closely related. A software developer who has in-depth knowledge of any of those topics along with the previous 9 tools will be highly sought after in today’s marketplace.
Joe Pescatello is an accomplished author and commercial software developer. Visit http://UncleBobsAttic.com for a sample of his writing and web development. You can reach him at joe-p@unclebobsattic.com.
Open Source and Offshore Development
In combining Open Source software and offshore development, high quality, cost effective software is more easily obtainable. In fact, I suggest Open Source should always be a part of any outsourced software development, but that is a different topic. The focus of this article is how Open Source provides a foundation of trust and confidence when u...
Motivate Your Software Developers
Programmers are motivated by more than just money. By paying attention to their desires and interests, you can motivate your software developers to be happy and productive. Consider these six motivations and watch your team's productivity and software quality soar.Programmers need to be challenged or they become bored. While tedious tasks are of...
Tools for Website Construction
Construction toolsWhenever something is built, the proper tools are needed to accomplish that task. Starting out, you will need a computer, monitor, printer, a connection to the internet and software. Since the first four are most likely already in place, we will go over choosing software. There are many ways to obtain software necessary for you to...
Time Management Software
Sometimes we need software to help manage our time. Many small business owners invest more time thinking about how to spend the money for profit, and invest less time in how they will spend their time. Since time is money and money is time, a strategy needs to be active to get the most out of your time management scheme. If you do not have plans, g...
Landscape Design Software
Landscape design software is useful for visualizing your ideas before actually starting the work. These software programs are powerful yet user-friendly, and can be used by homeowners and professional landscape designers. Looking at the landscape design beforehand can save you a lot of time, effort and money trying out various ideas on your land.Th...
What Clients Want
A potential client calls and wants a website, as a web developer you are more then happy to help. You show them your work, explain how your work is better then the rest and sell the person on the importance of Web Standards. Do you think that a client wants to hear all about Web Standards? Most likely they do not. They do want to here how you a...
Buying Landscaping Software
Using Specialist Software Packages For LandscapingGarden design software packages are a really good way to get some inspiration for your landscaping project. If you are currently shopping for some great ideas then landscaping software is a good place to start as youll likely find what youre after. If you are so inclined you can also consider creati...