The ability to change perspective often and efficiently is a valuable skill. I tend to shift my focus as required which allows me to understand the needs of the business, the client, the project and the team at any given time.
All perspectives should lead to the same goal, success!
Standards in a team are important as they lead to deterministic outcomes. Case-in-point, when style guides are defined you can determine that the resulting code will be consistent and of a high standard.
When working with a company, I often help develop standards across the engineering team. Some examples include:
- Coding Style Guides
- Continuous Integration
- Architecture Design
Quality is important at all levels. This may refer to code quality, testing quality (both developer tests and QA) or even process quality.
I enjoy working with clients that want to take things to the next level. Focusing on quality enables this as it becomes the over-arching decider for how and why you should do something.
Some areas I find need focus include:
- Simple, composable and testable code
- Error handling
- Unit testing
- Process efficiency
Often times, I hear engineers complaining that they never get time to refactor. Refactoring code is a continuous part of your development – not a development task.
When working with teams, I focus on the mentality and stigma around refactoring, demonstrating simpler approaches that make refactoring just another standard that the code and the team must live up to.
Communication is extremely important, whether working with a team that's sitting next to you or working remotely.
A skill I've developed over a number of years, I often find myself communicating with teams beyond engineering including the client and shareholders.
At all times it's important to communicate even the most complex ideas to anyone. If you're not on the same page, then there's an issue with your communication that needs to be rectified.
Want to develop an open source channel for your project/company?
I have extensive experience in this area and can help you and your team develop architecture, standards and distribution implementations you can be proud of.
I have typically used one of the following for distribution and highly recommend Cocoapods personally.
I can work with your team to determine the best solution for your requirements. I can also develop standards for things like Linting, Documentation, Testing and more.
Peer Review is extremely important as it fulfills three primary goals:
- Self Improvement
Peer review ensures that the code or process you're submitting follows company standards around style, testing, etc...
Getting someone else to review your work, also allows them to become familiar with the work. This is important to ensure any work done is not understood by just one person, but the wider team.
When someone reviews your work, this enables you to improve since any suggested changes may be something you hadn't previously considered.