Careers in Software Development
The position of software engineer includes designing, writing, fixing/upgrading, testing, and integrating software to do specific functions. It can also include implementation, installation, and support. The amount of design input, supervision, and creativity is related to one's position level and years of experience.
There are a variety of tools and languages (such as C++, Java, Visual Basic, Cold Fusion, XML) that one can use to write software, and many different specializations depending on the purpose of the applications. The field is constantly evolving - what is a "must have" language today will be obsolete in a few years.
Born to code
Some of the most successful developers are those who were "born to code." Often described as geeks, these folks would be coding at home if they didn't have jobs, and so, are thrilled that someone will pay them to do what they love. Other good software engineers are people who may not program at home, but are involved with some sort of engineering project. Will Clarke, a Senior Software Developer at Multex.com, remarks, "It is about having an engineering mindset. If you don't have a deep interest in building things, you just won't be able to compete as a programmer."
A sizable portion of the field is comprised of people who were drawn to programming because it is a lucrative, stable career. Some have hard science or engineering degrees but found programming to be better paying then working in their original fields. Others (especially in the last two or three years) chose software development specifically because of the high salaries. "These are the people who previously would have been lawyers, accountants, or doctors," explains Haidee Brown. "Within the next five years, there will an increase of business-oriented people in the profession," she predicts. The field is also becoming culturally diverse, as people from all over the world immigrate to the U.S. to work in the High Tech arena.
Learn on your own
The ability to learn on your own is more important than which languages you can code in. It is essential in this field to keep your skill set current because the field is constantly changing. For example, in 1994, the 'hot' technologies were C and UNIX. In 1996, it was C++. Now it is Java, which didn't exist six years ago, and XML, which has been around for only two years. Most programmers train themselves through books and online research, since most training courses are too time-consuming and expensive (not to mention rarely dealing with cutting edge technologies) to keep up with demand. The need for constant training is one reason why many programmers say that working in an office with other programmers, especially those more experienced and senior, is so important.
Time management skills are also key. The code cannot be perfect because you won't have time -- deadlines can be very short. There is a balance between getting a project done and making sure that it is something that will work for a long time (i.e. doesn't have to be fixed immediately). If you can think of the big picture as you code, and especially the future developments of your present projects, you will be a very valuable employee.
A strong Computer Science, math, hard science (such as physics), or engineering degree is usually required to excel in the field. Many science degrees now give basic training in Java and C and use similar mathematical and abstract thinking. Due to the constantly evolving nature of IT, one's specific educational background is less important than current experience in hot technologies. More important than the actual languages learned in school is the ability to think abstractly and a comfort with mathematics.
In this job market, those without the academic background who have current experience in a 'hot' language will probably find employment. For example, you can become a scripting programmer without a degree if you have scripting experience gained via network support. But there is a great deal of skepticism regarding those without math, science, or engineering degrees who have retrained to become software developers. "You need to be able to think in a certain way. Six months of training in C++ does not make a good programmer," opines one developer.
While most people think of the prototypical geek when defining computer programmers, the field is becoming more diverse as more people enter the field, attracted by high salaries. However, successful software developers are intelligent, abstract thinkers who are good with mathematics and logical reasoning. A programmer must be able to pay attention to details, since as Sean Tierney, an IT manager at an Internet startup, notes, "abstract thinking is needed, not ambiguous thinking. You have to be able to pay attention to details, since a misplaced comma will stop the application from functioning. In programming either the application works or it doesn't."
Software development is still a male dominated field. The current programming culture is still known for lax attitudes towards time-keeping and dress codes-not to mention a distaste for authority. The combination of high salaries and high demand allows these professionals to have more control over their working conditions. "Managing programmers is like herding cats" is a common expression in the industry.
Contrary to the geek stereotype, communication skills are very important, both written and verbal. Many good software engineers prefer clearly defined specifications and well documented code so that future programmers have a lucid understanding of what has already been done. A typical dot-com will have only a few software engineers because of high costs. Therefore, a staff programmer may be called upon to represent and explain technical requirements to other staff, clients, and partners.
How much dough?
The salaries are quite high in this field, ranging from $50K to $120K+, depending on the years of experience, educational background, range of languages and skills, management level (such as development lead), and industry. Note: Start-ups may pay significantly less than banks or other major corporations; and consultants may earn significantly more than their full-time, one-company counterparts. Nevertheless, many employees prefer to work at lower-paying dot-coms and software development houses because they prefer more relaxed, egalitarian company cultures. No matter what the industry, benefits include stock options and bonuses, although these too vary from place to place.
Most of the top salaries require some management responsibilities as well as programming. There is a cap for those who wish to avoid management and just code for the rest of their lives. Programmers who decide to move into management or who start their own businesses often stop programming eventually as business requirements take up most of their time and they are unable to keep current in the field.
Our Survey Says
Strong math, problem solving and analytical skills are needed, along with an ability to work independently. "There can be a great deal of grunt math work, so anyone not comfortable with math should probably stay away from this job," says Joe Shashaty, Software Engineer at Netsol.
Technical skills imperative
Solid, up-to-date technical skills are also necessary. Sean Tierney warns, "You cannot BS your way into the field. In an interview, your technical skills will be tested immediately; and if you don't actually know, you will be found out." Academic achievement, especially if it is not recent, is not counted for much. Bob Stewart at BuzzCompany.com comments, "You need the academic background, but if you have no experience, it is not enough to get in the door."
Many developers are introverts, since they are not required to interact with a range of new people. "But often, good software engineers are creative people, with other outlets such as music, art, [and] design." comments Haidee Brown, a Technical Recruiting Specialist at Silicon Alley Connections. "There is a very creative aspect to programming which attracts these people."
"Any company can have in-house developers," Will Clarke points out. "As more and more companies rely on computers, in-house developers are necessary to maintain, upgrade, and improve the software running the business." More companies are also increasing their Internet presence, meaning that older software (such as inventory databases) will need to be integrated with newer technologies (like a web-based querying system for clients). This integration falls generally to software engineers, since the work is intricate and standard web development tools are not sufficient.