Exploring this Job
Spending a day with an experienced systems software designer or applications programmer will allow you to experience firsthand what this work entails. School counselors can often help you organize such a meeting.
If you are interested in computer industry careers in general, you should learn as much as possible about computers. Keep up with new technology by talking to other computer users and by reading related magazines, such as Computer (https://www.computer.org/csdl/magazine/co). You will also find it helpful to join computer clubs and use online services and the Internet to find more information about this field.
Advanced students can put their design ideas and programming knowledge to work by designing and programming their own applications, such as simple games and utility programs.
Without software, computer hardware would have nothing to do. Computers need to be told exactly what to do, and software is the set of codes that gives the computer those instructions. It comes in the form of familiar prepackaged software, such as games, word processing, spreadsheet, and desktop publishing programs, and in customized applications designed to fit specific needs of a particular business. Software designers are the initiators of these complex programs. Computer programmers then create the software by writing the code that carries out the directives of the designer.
Software designers must envision every detail of what an application will do, how it will do it, and how it will look (the user interface). A simple example is how a home accounting program is created. The software designer first lays out the overall functionality of the program, specifying what it should be able to do, such as balancing a checkbook, keeping track of incoming and outgoing bills, and maintaining records of expenses. For each of these tasks, the software designer will outline the design details for the specific functions that he or she has mandated, such as what menus and icons will be used, what each screen will look like, and whether there will be help or dialog boxes to assist the user. For example, the designer may specify that the expense record part of the program produce a pie chart that shows the percentage of each household expense in the overall household budget. The designer can specify that the program automatically display the pie chart each time a budget assessment is completed or only after the user clicks on the appropriate icon on the toolbar.
Some software companies specialize in building custom-designed software. This software is highly specialized for specific needs or problems of particular businesses. Some businesses are large enough that they employ in-house software designers who create software applications for their computer systems. A related field is software engineering, which involves writing customized complex software to solve specific engineering or technical problems of a business or industry.
Whether the designer is working on a mass-market or a custom application, the first step is to define the overall goals for the application. This is typically done in consultation with management if working at a software supply company, or with the client if working on a custom-designed project. Then, the software designer studies the goals and problems of the project. If working on custom-designed software, the designer must also take into consideration the existing computer system of the client. Next, the software designer works on the program strategy and specific design detail that he or she has envisioned. At this point, the designer may need to write a proposal outlining the design and estimating time and cost allocations. Based on this report, management or the client decides if the project should proceed.
Once approval is given, the software designer and the programmers begin working on writing the software program. Typically, the software designer writes the specifications for the program, and the applications programmers write the programming codes.
In addition to the duties involved in design, a software designer may be responsible for writing a user's manual or at least writing a report for what should be included in the user's manual. After testing and debugging the program, the software designer will present it to management or to the client.