Careers in IT
From OCAU Wiki
DRAFT Please edit. Would love to see some details of the more interesting IT jobs out there.
With most jobs, you are the master of your own careers. Dont expect to get snapped up by some great company with a 120k a year if you are not constantly improving your skills, getting experience, gunning for new promotions and networking with people. Sitting on your ass grumbling to yourself/peers about how your job sucks will not get you a better one. Sometimes it takes lots of work on your part, or moving state, or shifting horizontally, but its always up to you (and possibly your other half ;).
Also there is variety in industries, job types, benifits, companies and work. You really need to think about what you value most and pick something that suit your lifestyle choice (long hours vs more family time, money vs other benifits, peers, interesting work vs paperwork, job security (maybe you have a mortage and 3 kids?)). Sometimes you are a grad and need to just get whatever you can, before they really decide on career direction. I beleive people can change direction fairly quickly though if they desire it.
IT Support / Helpdesk
Entry level position provide 1st level support to 'clients'. Basic troubleshooting, eg. 'My printer is stuffed.'
Senior position looking after major components of the network. Usually requires an MCSE (Microsoft Certified Systems Engineer) which is very common these days.
Developer / Programmer
There are many different types of software developers.
Advice for IT grads looking for work Make sure that you start apply for jobs at the beginning of your final year of uni.. big mega companies put out graduate intake applications on their websites in like Jan, Feb, Mar in 2006 for jobs starting 2007.. dont wait to graduate before you start applying! That means you need a resume done at end of second yr (yes stop procrastinating).
Resume should have the following (you need to get this stuff while you are at uni)
- interesting uni projects related to the area you want to work in, with great outcomes (highlight team work, new technologies/methodologies)
- good marks (yes this is important, dont be fooled. When I have to look at 38 resumes, i need to weed people out quick.. i just look at marks to start with to get my top 5!)
- work experience in IT (you work for someone? you make webpages for fun? you write opensource software in between classes?)
- referee's that aren't your mum..
Career choices in IT (software development)
There are many flavours of software development work, in many industries. You might soon realise that your job is unfullfilling because, as a hardcore computer geek, you aren't getting enough stimulation because all you do is testing, paperwork or something. Many graduates will spend a year or so in the workplace figuring out exactly what sort of work makes them get out of bed in the morning, and will go and chase that if they are not getting it at there current job. Once you have some experience dont be afraid to tell people that you aren't happy and try to get into something that you enjoy.
Some people will realise they dont like programming and want some big bucks in management, others spend spend 16 months on a project but only 2 months coding/solving software problems.
There are a range of flavours of software developers (some might have a title of programmer, but they are really a tester or engineer), some people get a healthy balance of each of these, and it depends on the company you work for, how big they are, etc.
Software Configuration Guy (SCM) - scripters, unix nerds, paperwork, process. They control the build of the software, release new builds, make sure people dont break the build, document build progress, create tools/scripts/processes to help the build and look after the software repository.
Coder / Programmer / Developer - Solves software problems, designs modules, writes code, gives estimates, tests their own code, liases with team lead, provides technical advice. They do java, C/C++, scripts, databases, connect up bits of hardware, embedded software, etc. Whatever is needed to keep the project moving towards the finish line that involves technical/software tasks. If they finish the fun technical stuff, they are transformed into software engineers and get tasked to do any docs they need to compete project, or maybe they are good enough to be moved onto more technical work in another team or "teflon" work and surf the net if they are bored and not challenged. Good upgrades to this are Senior Software Engineer.
Team Leader - Similar to middle managers (might be on their way to middle management) Team leaders are closer to the developers/real workers and often do coding or project work, drive the team to the final goal, handle any boring EVMS/metrcs/reporting/project management for the team (to keep the developers solving the real problems).
Middle Managers - person decided that writting code / solving problems in software is boring and moved into middle management. They collect reports, hold meetings, walk around office with coffee mug, fight fires that appear, haggle over resources (read: developers). These guys can be masters of office politics, teflon and empire building.
IT Guy - might be called software engineer, but actually just admins 85 severs and occasionally looks at the source code or does a build of the product(see SCM guy). If this person did a software degree, he wonders how he ended up doing IT.. if he stays in IT too long, he cannot be moved into software without lots of work (or bullshitting) on his part.
Software Engineer - This is a title that can be given to coders, team leaders, SCM, IT guys. The real software engineer will focus not on solving software problems but be more concerned with the overall engineering rigour of the project. They will be doing requirements tracability, testing plans, testing procedures, talking to systems engineers, talking to manufactors of parts your projects uses that break, requirements, bloated software design documentation, maintenance and operational procedures documents, and at least 13 other engineering type documents that need to be done to prove to the customer that you company does engineering properly. Sometimes its overkill, sometimes the customer demands it, and sometimes its actually useful (maybe not immediately). These people can also do programming, and know techinical things, but they have too much time doing other engineering, they are not the guns of software development they used to be at uni. They often become dead inside and turn into systems engineers :)
Senior Software Engineer - Valuable technical person, also does software engineering stuff along with whatever technical work they can get. They will often pass up offers to become team leaders or middle managers, just so they can continue to work on technical problems. They get much respect from the software developers, and have a eye for detail and know how the office politics works, but they dont get involved.
Applications Developer / Database guy / Web developer - This person does lots of VB, C#/.NET, SQL, ASP, PHP, tools, GUI's, Database stuff, document management systems, configuration management systems, bug tracking systems, project reporting systems, etc. Not for a project for a customer though, but just to support systems that developers / managers use in a company. Can be valued in Finance sector where these people write reports and forms for finance weinies based on database queries. Can be boring and directionless if you are the only person doing this, you really need to be in a company big enough to have a team of these people. Otherwise you take the blame for any problems developers have with the tools they use that you maintain. In house tools are usually sucky/dodgy, unless they are brought from a 3rd party, because managers dont want to pay internal developers to create amazing tools just for the software weinies less they plan on selling it as well (or they are a big company that knows the value of good in-house tools, if developers are happy with their tools, they will stick around). Web development can be creative and rewarding sometimes because projects dont last that long, and you have results immediately that can impress middle managers (who start wondering why they can't get all the developers to produce amazing functionality in the same amount of time with C on an embedded card). These guys can have less documentation to produce (if any) because no one cares that much about the quality of in-house tools.
Systems Engineers - These people are the document masters, and can think at the system level. They evolve from hardware or software engineers and become quite valued in engineering organisations (eg defence, medical, embedded systems) but arent that useful in hardcore software houses.
Systems Consultant - These guys are typically ex-developers with a lot of experience, and who no longer do much/any hands-on coding any more. They typically work with a customer to develop user requirements, and design major components of a system.
Systems Architect - The logical step up from a Systems Consultant, a Systems Architect is a "big-picture" person, typically not familiar with the details of various components of a system, but is involved in the overall high-level design of a solution for a customer.
Tester Monkey - Tester monkeys, like IT Guy, might have a software degree, but somehow got lumped into testing other peoples code/systems. Some people enjoy this, some dont.
- Teflon - the fine art of redirecting work from you onto other teams or people (a.k.a Handballing)
- Empire building - hording developers, resources time and office space in a mad dash to become the middle manager with the most power. Software developers can practise this with IT equipment, computers, software licenses and desks. "what? you have a license for MSVC++, you have 3 computers and two 21inch LCD screen? how did you get that?? mwuahaha)
- Office Politics - result of empire building. People backstabbing each other for little gain. Brown nosing bosses. etc
Industry Types (wrt software development)
Government: If you want a cruizey job with lots of training, 38hr weeks (incl afternoon sleep), no responsibiliy, and tonnes of boring paper work where you can slip through the cracks and never be fired ever, then join the government departments... (yawn). NOTE: the rosy picture of Government work described above is fast disappearing as "corporatisation" takes place across all levels of government and this inevitably means over time public sector workers will get treated pretty much the same as private sector employees eg: little training, long working hours, lots of responsibility, no job security etc
Commercial World / Software Houses: If you want to work 60hrs a week, get minimal training but interesting work with talented people, then join the commerical world. you may be retrenched though, or should move to eastern states where the action is. If you love to build software - join a pure software house. Be careful not to be stuck as IT Guy, SCM guy or Tester Monkey. If you love databases and application developement (VB forms) - join the finance sector (for fun and profit.. ok maybe not fun)
Engineering / Systems House: Defence industry is mostly systems work, but there are some that have a good focus on software development. Otherwise its all system engineering work. If you love engineering (and paperwork) - join defence industry
Research / Postgrad: Dont stay on at uni for research unless you are some kind of IT prodigy and you have the world leading expert professor as your mentor that actually works in the field you want to research! Otherwise google will be your mentor and you can do that at home. You may need to get out and experience the real world first, dont be scared.. If you want to go back at least you have seen what the real world is like and actually know what you are talking about, unlike some lecturers/uni tutors..
There are however viable research jobs in cross-disciplinary IT areas, particularly in bioinformatics. Many universities around Australia are expanding into such areas due to government or private funding. Actual industry-based jobs in this area are few and far between in Australia (and do not look like booming), and chances are that the pure bioinformatics jobs will require a PhD (like a lot of the scientific jobs). If you're willing not to do pure bioinformatics, but are more interested in software development at a biotech company, entry into this market will be substantially easier (possibly even as a contractor). There's a bit of a cultural divide between the IT world and the scientific world, and you'll need the people skills to work with the scientists. The academic areas of bioinformatics (i.e. based in universities, or at places like the CSIRO) are relatively healthy within Australia (yet still small compared to the US, Europe and Japan), but like all scientific work, your job will be dependent on funding from the government or other large research institutions.
Similarly, if you have an IT or Software Engineering degree you could combine this with almost any other field e.g. the sciences, arts, politics/law, languages and go for a unique cross-disciplanary job that suits your educational background and interests, giving you an opportunity to have some hands-on involvement in your secondary (or primary!) area in addition to sitting in front of a computer. Admittedly many of these jobs will be based on university campuses or at other educational / research places, but if that doesn't bother you then these jobs can be extremely rewarding, not to mention being able to work in a relaxed and flexible environment.