Company
| Headquarters | Manchester, United Kingdom |
| Website | https://codethink.co.uk |
We are specialists in Linux, Android and embedded RTOS. The nature of Codethink’s work requires us to tackle deep developer-level integration with other platforms too – currently that includes QNX, Integrity, Windows, Mac OS. We work on firmware, drivers, board support, operating systems, libraries, middleware, and all of the build tooling required to create complete systems. Projects range from tiny real-time devices to fleets of data-center scale Linux appliances. Philosophy and Approach We specialise in system-level software infrastructure to support advanced technical applications, working across a range of industries including finance, automotive, medical, telecoms. Typically we get involved in software architecture, design, development, integration, debugging and improvement on the deep scary plumbing code that makes most folks run away screaming. We aim to be great at software design and development, and to improve the practice of software engineering as a real engineering discipline. We have learned that we can only achieve this by sharing what we know, and absorbing what others can teach us The Software Commandments We aim to be great at software design and development, and to help improve the practice of software engineering as a real engineering discipline. We have learned that this can only be achieved by sharing what we know, and absorbing what others can teach us. The Software Commandments help to guide the work we do. General 1. Commit to deliver, to help, to learn, and to improve 2. Be honest, be reliable, work hard. But work smart too – minimise loop time on repeating tasks 3. When you mess up, own up! And LEARN from your mistakes 4. Don’t stay stuck, get help! If you’re in a hole, stop digging. If in doubt, ask. Keep asking til you’re answered 5. Communicate! Keep colleagues and customers informed – avoid surprises 6. Write effectively, speak effectively – keep it short and make it matter to the recipients 7. Finish your project. Know your deadlines, hit them if you can, shout if you realize you can’t 8. Solve problems, and help others to solve problems too – everyone learns faster that way 9. Never leave a mess behind you: this applies to your project, the kitchen AND the bathroom! 10. K I S S – simplicity is ALWAYS an objective – for ui, code, design, test, process, delivery, documentation 11. Think for yourself: challenge bad decisions, escalate if necessary – stay calm and polite 12. Make sure you really understand the project objectives/targets, from the customer and user p.o.v. 13. Keep a log (paper or digital) and use it every day 14. Always keep your own backups, and make sure you can restore Coding 15. Code LESS: every line creates a work-chain. Code is a liability, not an asset 16. Read the documentation, use existing code if possible. Don’t re-create what already exists 17. If there isn’t a spec/definition, write a short one (with constraints, goals, non-goals) and agree it 18. If it isn’t specified as a requirement, don’t code it. If the agreed spec is wrong, challenge it 19. Understand why code style is important, and comply with existing style 20. Get someone to review your code. Learn from the reviews, don’t take it personally 21. Use version control, ideally Git. Commit early and often, with clear comments. Remember to push your commits! 22. Quality code WORKS! All the time 23. The bug stops here! You are responsible for testing and fixing every line of code you write 24. Remove uncertainty as fast as possible. Prototype, learn and iterate 25. Set yourself doable targets every day and every week. If you’re not making daily progress, shout Testing 26. Test behaviour, not structure. Don’t be gentle, break it! 27. Write down what you need to test before or at the same time as you write the code 28. Look for difficult, unexpected cases too 29. If it can’t be tested, it shouldn’t be there 30. If there’s a test framework, use it. Aggressively replace/remove tests when things change 31. If someone else finds a bug after you’ve said it works, kick yourself and improve your practice Design 32. Establish constraints and write them down 33. Plan to remove uncertainty fast – prototype and test against realistic scenarios ASAP 34. Design for testability, and design defensively: garbage in DOES NOT equal garbage out! 35. Design should be communicated clearly in writing, pictures or both 36. The first idea isn’t necessarily best: consider alternatives, discuss 37. Great design (and leadership) is methodology-independent Estimating 38. Discuss the requirement with others – get perspective 39. If you’re unsure, say so. If you need more information, ask for it 40. Break the problem down into component tasks – get someone to challenge the breakdown 41. Compare like-for-like: try to check against previous productivity on similar work 42. Estimate the whole job, not just the coding. State what’s included, what’s excluded. State that it’s a GUESS 43. Don’t be over-optimistic. It’s ALWAYS worse than you think Managing 44. Get the best people you can find/afford, and clear the way so they can be effective 45. Provide strong leadership – make sure your people know what they need to do, and when 46. Allow and foster open and honest communication. Listen and learn. React effectively and fairly 47. Encourage debate where necessary, but if things get bogged down, be a benevolent dictator 48. Set short timescales for targets and reviews – weekly is probably best. 49. If you’re squeezed on time and cost, reduce scope – or it’ll be late/broken/over budget 50. Nail the risks, before they nail you!
| Country | City | Job Ads |
|---|---|---|
| United Kingdom | Manchester | 25 |
Loading map...
Company Size: 51 - 250
Job Ads found: 25
Job Ads per Month: 1.3
Hiring Locations: 1
| Date of first job ad | 12.02.2021, 16:49 |
| Date of last job ad | 06.01.2026, 11:04 |
| Date merged | 07.01.2026, 14:43 |
| Date created | 12.02.2021, 16:49 |