Professionalism
We've had some discussion at work lately about professionalism and a manager posted an interesting list of 'attributes of professionalism' which I thought was worth looking at (the list is taken from a book called True Professionalism by David Maister). Some attributes on the list are pretty straightforward - taking pride in your work, showing initiative and being a team player for example - but others tend to be talked about a little less and I'd like to pull out some of those here.
Do whatever it takes to get the job done: don't watch the clock
Many people are accustomed to being paid by the hour throughout university so the switch to a salaried role can be challenging. There's a shift in thinking required from "I am being paid for X hours work" to "I am being paid to get this job done". One of the realities of software development is that there will be crunch times where 40 hours a week may not be enough (although hopefully projects will be managed sufficiently carefully that this happens only occasionally). There will often be business objectives and deadlines that cannot shift to meet technical realities and, at the end of the day, it just needs to be done.
Be eager to learn the business and roles played by those you serve
This is an interesting one I hadn't thought of specifically but which I can relate to - especially in a software development environment. A developer who is willing to really get to know and understand the business and users of the application is going to do a far better job than one who works from the assumption that the world is populated entirely by developer-type-folk. In addition, clients will pick up on and respond to a genuine desire to understand where they're coming from and will appreciate working with you. This ties in very closely with the next one:
Understand and think like those you serve so you can represent them when they are not there
This is, again, especially true in a software development context. If you understand the business context well enough to be able to represent the clients needs at internal meetings (including the meetings you hold inside your own head trying to make decisions) the resulting software is going to line up much more closely to what is going to make a difference for your end users.
Accept criticism constructively: be eager to learn and develop
This is not often thought of as an attribute of professionalism but, if you think about it, it's actually rather crucial. Willingness to learn comes with a desire to be the best you can be and to do your job as well as you can - which pretty much sums up the entire list! Accepting criticism is always hard - I certainly struggle with it! - but it's usually the best way to improve what you do. Look on it as an opportunity :)
Get involved and don't just stick to your assigned role
Not just valuable to the client/project but also a great way for you to expand your knowledge. The broader your knowledge base the more helpful you will be able to be and the quicker things will be able to get done (since there's no need to wait for the one person who knows about whatever it is). You do need to be careful though as some people will see your 'getting involved' as 'stepping on their toes' or 'trying to take over'. Try to hit a balance and ensure every member of the team is still clearly valued.
Be observant, honest and loyal
Lots of things to talk about in there... but mostly pretty obvious. Being observant relates closely to taking initiative - see what needs to be done and go do it. Honesty is critical to earning respect and trust - especially from clients. Remember that sometimes honesty means being willing to tell them the bad news and not trying to hide or gloss over it. Loyalty could be interpreted many ways... not having read the book I'll interpret it as not going behind anyone's back, protecting and supporting the members of your team and backing up your management in public even if you disagree in private.
Finally, the last point in the list really sums up the entire thing:
CARE