In the commercial programming world, small is becoming beautiful. Ray Auchterlounie outlines what businesses look for in graduate recruits
The graduates of today - and tomorrow - who are seeking careers as software developers are more likely to work in the small and medium-sized (SME) business environment than with industry giants, where recruitment requirements differ significantly.
In the SME sector, development teams are usually smaller and the developers are multiskilled. Project time-frames are often shorter and developers often work across several projects simultaneously. Not only does this mean more likelihood of working with different technologies on different projects, but also of working with more recent technologies.
A dynamic environment, coupled with the general pace of change within the software industry, means it is unreasonable to expect degree courses that students began three or four years ago to produce graduates with technical skill sets that directly match current business requirements. Rather, there is a requirement for someone to gain a range of experience and grow into a multiskilled developer, useful across a range of projects.
Recruiters expect to see some of the changes and trends of the past five to ten years reflected in degree courses and in the knowledge attained by graduates.
In the past five years, Microsoft's .NET platform and the C# language have arrived and significantly matured, and the Java platform has also continued to develop. Today, one would expect graduates to have working knowledge of either C# or Java languages (if not both).
Principles of object-oriented design have arguably not changed recently, but design patterns have become mainstream and UML has become the standard notation. Service-oriented architecture has also arrived, to complement and contrast with object-oriented architecture.
The Rational Unified Process, "extreme programming" (particularly test-driven development) and various "agile" development methods have added to the available methodologies. Some knowledge of all these would be beneficial, but it is difficult to suggest which are most likely to be in use, as there is a great deal of variation from team to team.
Connected operation has been assumed in many business applications for years, but now it is assumed almost everywhere. Many applications now have web (browser-based) user interfaces, some use web services behind the scenes, and integration of disparate business applications is increasing.
Many games are now networked; accounts packages connect to online banking services; office applications connect to collaboration servers; imaging applications publish photographs to online sharing or printing services.
Web technologies underlie much of this change, and in the past five years XML in particular has gone from being an early niche technology to being ubiquitous. A good working knowledge of common web technologies - HTTP, HTML, CSS, XML, web services - is expected, and XML should be regarded as essential.
The n-tier architecture is not a particularly recent implementation model but is probably more prevalent now than ever, with the most common technology platforms being .NET and Java (J2EE). At the base of the n-tier architecture lies the database. While there has been some change in this area (for example, native-xml databases), it has mostly been evolutionary, and the relational database, using SQL, is still the most common platform.
Graduates should have some general database knowledge and a working knowledge of SQL in at least one common RDBMS.
A graduate should have practical experience of web-based user interfaces and Java Swing or Windows Forms or similar. Graphics programming is increasingly moving to 3-D rendering, a growing and fast-moving discipline that can occupy whole degree courses on its own - a general course will be expected to cover only the very basics.
Some of the key requirements in a new graduate recruit remain unchanged. Good general interpersonal, team and communication skills are always important, perhaps more so in an SME environment than in a larger company.
Here, software developers (even at new graduate level) are likely to have to work directly with people outside their development team - people from groups such as sales personnel, end users or even customers (strange and alien lands for the stereotypical software developer). Most important, particularly in a graduate, is ability and willingness to learn (and carry on learning), and a passion for technology, computers and software - within a short time, the exact skills required will have changed anyway.
Graduates should know something about most of the areas mentioned from general-interest reading on the subject, even if they were not covered on their course. Perhaps the most important aim for degree courses is, therefore, to be engaging and interesting and to maintain and nurture the passion and enthusiasm for computers and software that (it is to be hoped) led the student to choose a course in this area in the first place.
Any course will need to be up to date to achieve this, as students will soon become frustrated if they are offered out-of-date content.
Ray Auchterlounie is product development manager at Diagonal Solutions, a Leeds-based computerised management solutions company.