When I came to work at GoldenLine / ZnanyLekarz, there was a set of rules they followed as a company. They were mostly generic, like „keep things simple” or „be a team player”. Every employee had to align his goals with three or four of the companys values (there were seven in total).
It’s a nice idea. It lets you know that you’re on the same page with the people you work with. Or at least you know it’s not the case from the start. But after a few months it became clear to me that those rules don’t always apply to our local needs. There were too generic and not chosen by us. So we decided to create our own list of skills and perks we value the most in a software engineering culture.
Teamwork & communication
It’s all about how well do you play with others, and do others have any problems working with you.
- Be honest: it’s crucial to say what you think, no sugarcoating. This way other teammembers can get valuable feedback and you don’t keep your remarks to yourself.
- Use arguments to the point: you always use good arguments (instead of emotions or some kind of power play) in discussions. Computers do not have emotions ya’know?
- Give and take feedback: a good feedback consists of:
- stating the facts
- pointing out the effects of someone’s actions
- describing your emotions caused by those actions
- and suggesting a way of improvement (yeah, I know, I’m combo breaker)
- Adjust you language to the caller: it’s not simple for IT guys to explain something to non-technical folks, but we have to do it efficiently.
- Be assertive: don’t be a fence hanger. People count on your proffesional opinion so you shoudl hold on to it. Rather suggest solutions than execute orders.
- Be a mentor: be open to sharing your knowledge and experiences. Lead other developers to better code, tools, etc.
If a person does something for a living and takes money for it — it’s his profession, and they have to do it properly.
- Be responsible: take care of the projects you’ve done in the past. Make sure they don’t break and work flawlesly, even long after the’re shipped.
- Knowledge: we like to base our work on wisdom, not on some mumbo-jumbo. And often the people asking you for something don’t know jack squat about programming, so you have to be the responsible one.
- Find the best solitions regarding both time and quality: It’s easy to make something with no regard to quality, rules and best practices. And given unlimited amount of time everyone can make a project be close to perfect. The trick is to make decent quality (or better) projects and meet the deadline.
- Choose your tools wisely: know what’s your domain and what’s a waste of time. Don’t use generic tools for things your bussines has to make to stand out and don’t waste time on reinventing the weel where a out of the box tool already exists.
- Be effective: get it done. Noone wants to hear about your problems or difficulties.
- Independence: the more you can accomplish by yourself the better. This doesn’t mean not to go for help, feedback and comments on your work. Just don’t base your effectiveness on others. And don’t waste other’s time if you don’t have to.
- Trustworthiness: this is a core value of a professional. People you work with must feel that you know what you’re doing and you musn’t ever let them down when given a task. If your work have to be double checked after you finish, you’re no more than a code monkey. And also a bad one.
- Know your bussiness: it’s better to know your environment and the bussiness goals of the company / project. This way you can make better decisions and understand the overall logic.
Personality & DNA
All the spices you add to the team — every unique little detail that makes the team more interesting and lovable.
- Positive attitude: do what you love and love what you do. And be promiscious about it. Don’t bring down everyone around you.
- Have your own point of view: it’s a trait of inteligent people to challenge their points of view. It’s good to add a little diversity to the pool.
- Openness (for change): change is imminent so better accept it and initiate it — don’t let it surprise you. Whenever you’re not going forward, you’re moving back.
- Get commited: we don’t like to work with people who treat our project as a eight-to-sixteen thing. Give the best of you and don’t hold back. Mere involvement doesn’t give what it takes to change the world (and that’s our ultimate goal, isn’t it?)
This is a next step for a software engineer but nontheless a good skillset to have.
- Think outside of the box: suggest solutions noone ever thought of. Every great idea in the history of mankind was out of the box at the time. Following standards every step of the way can’t get you far and can’t produce any real progress or invention. Out of the box solutions usually save massive amounts of time and resources; or create a bussiness advantage.
- Have initiative: again — don’t hold back — go forward with your ideas. Your teammates are waiting to benefit from your mistakes ;)
- Leave your comfort zone: that’s where te magic happens.
- A solution mindset: everytime you criticize be sure to have a solution or a better path to take. Restrain from just compaining unproductively. It’s not hard to point out something uneffective; the clue is to propose a solution.
- Learn every day: the world is changing too fast to stay in one place. Todays technology will be deprecated in two, maybe three years. Learn new frameworks, tools, programming languages, libraries and design patterns today to use them efficiently tomorrow.
- Have a helicopter view: you can connect the dots better when having a wider point of view.
- Agility: don’t get too attached to your original path. Change it often and quick if the circumstance changes. It’s better to abandon your work and retreat than to wade futherer in the wrong direction.