Skip to main content

Posts

Simple made Easy: Rich Hickey

 Design system as simple as possible to solve the business problem Simple system are much easier to scale and extend than complex systems

GitLab and Dropbox: Engineering Career Frameworks, plus collection of tools!

GitLab These are the expected behaviours of Engineers at GitLab. Most engineers at GitLab are Intermediate or Senior, so the priority is to address these levels first. Moving between levels, you should see that as engineers advance in their careers, their duties should encompass a higher degree of complexity, the scope of their influence should expand, and their contributions should become more impactful. These behaviors should not be considered as a checklist for promotion. Excellent Engineers may struggle with one or two aspects of their job and their strengths in certain areas should make up for deficits in others. However, it is important to show a significant number of strengths to be considered for promotion. Each of these behaviors should be achievable inside of normal working hours. If you feel that you need to work additional hours to be successful in your role you should talk to your manager. Junior engineers are still included on this framework even though we are not activel...

Writing High-Performance Swift Code

Enabling Optimizations Whole Module Optimizations (WMO) Reducing Dynamic Dispatch Dynamic Dispatch Advice: Use 'final' when you know the declaration does not need to be overridden Advice: Use 'private' and 'fileprivate' when declaration does not need to be accessed outside of file Advice: If WMO is enabled, use 'internal' when a declaration does not need to be accessed outside of module Using Container Types Efficiently Advice: Use value types in Array Advice: Use ContiguousArray with reference types when NSArray bridging is unnecessary Advice: Use inplace mutation instead of object-reassignment Wrapping operations Advice: Use wrapping integer arithmetic when you can prove that overflow cannot occur Generics Advice: Put generic declarations in the same module where they are used The cost of large Swift values Advice: Use copy-on-write semantics for large values Unsafe code Advice: Use unmanaged references to avoid reference counting overhead Protocols Ad...

20 things learned in 20 years of software development

Some good points: 4. Best code is no code - less code to maintain 6. Sometimes you just have to get started 9. Nobody asks enough about “Why” 11. One of the biggest differences between junior and senior devs is the latter have a well founded, dedicated opionen about tools, with the skill to come to an agreement with others what to use in which context 17. Keep processes as lean as possible 20 Things I’ve Learned in my 20 Years as a Software Engineer  (Simple Thread) 20 Dinge, die ich in 20 Jahren als Entwickler gelernt habe  (Golem) PS. I would add: Having a vision helps to at least roughly steer all activities in the right direction. It needs to be accepted that the vision might change and steering will be adopted!

Software Engineering Salaries at Google: A Guide

Google Engineer Levels Software Engineer II (L3 | 0-1 year of experience) Software Engineer III (L4 | 2+ years of experience) Senior Software Engineer (L5 | Manager I equivalent) Staff Software Engineer (L6 | Manager II equivalent) Senior Staff Software Engineer (L7 | Senior Manager) Principal Engineer (L8 | Director) Distinguished Engineer (L9 | Senior Director) Google Fellow (L10 | Vice President) Senior Google Fellow (L11 | Senior Vice President) Google Software Engineer Salary Base compensation Bonuses Stock Google Software Engineer Stock Options Benefits of Working at Google Insurance & Wellness Transportation Home, Financial, other Google vs Other Technology Companies vs Microsoft and Amazon avg https://careerkarma.com/blog/software-engineering-salary-google/

Different takes on A/B testing with native apps in Google Play and App Store

 A short summary of options: Synthetic Control Method Find a good prediction model on current data - and compare the real data after the change with the predicted data Phased Release/Staged Rollouts Phased release of new version and compare versus old version via tracking analytics You can then compare the same content with different app versions on same OS Implement feature for one OS only - and compare Release for one OS only and compare versus other OS via tracking analytics Feature Toggles Feature toggle via remote config and switch feature on/off defining one or more explicit success criteria via Firebase A/B Testing Feature toggle and config options Feature toggle PLUS config via firebase remote config to not only switch on/off but do more experiments with different settings (color, number of items, sizes) via Firebase A/B Testing Server-driven UI and dynamic endpoints Using server driven UI, you can provide different endpoints and serve different endpoint URLs to the clients...

Staff Engineer: Leadership beyond the management track

  Nice blog post about staff (or engineering manager) archetypes: Staff Engineer: Leadership beyond the management track The Tech Lead guides the approach and execution of a particular team. They partner closely with a single manager, but sometimes they partner with two or three managers within a focused area. Some companies also have a Tech Lead Manager role, which is similar to the Tech Lead archetype but exists on the engineering manager ladder and includes people management responsibilities. The Architect is responsible for the direction, quality, and approach within a critical area. They combine in-depth knowledge of technical constraints, user needs, and organization level leadership. The Solver digs deep into arbitrarily complex problems and finds an appropriate path forward. Some focus on a given area for long periods. Others bounce from hotspot to hotspot as guided by organizational leadership. The Right Hand extends an executive's attention, borrowing their scope and ...