Skip to main content

Posts

Showing posts from 2022

The Trimodal Nature of Software Engineering Salaries

The software engineering compensation market becoming trimodal - split into three distinct groups that "spike" and that have little overlaps.  Most engineers are not aware of this third, Big Tech pillar and the compensation ranges it introduces, assuming compensation can not go beyond what is offered at the second pillar:  Read more about salary tier strategies and competable compensations: The Pragmatic Engineer

The Pragmatic Engineer: Netflix’s historic introduction of levels for software engineering

"Netflix is considering the following leveling system" - Engineer 1 - Engineer 2 - Senior - Staff - Principal The details of the system are still being worked out, and a proposal has been circulated within engineering. The proposal, understandably, has resulted in lots of questions, especially around whether existing engineers will be getting Staff or Principal titles. The original proposal made it seem that everyone would stay Senior, and with promotions, they could get to the next levels. Read more about the history and background: The Pragmatic Engineer

Optimize App Retention with the Hooked Model

Nir Eyal explores how applying the Hooked Model drives customer retention and engagement by fostering good habits Trigger. An event that encourages someone to act, which is either an: External trigger: something in the environment — a ping, a ding, or a ring — that alerts a person to do something. Internal trigger: the desire to escape from an uncomfortable emotional state. Action. A behavior that anticipates a reward — opening an app, scrolling a feed, checking a dashboard, or playing a video. The simpler the behavior is to accomplish, the more likely the user is to do it. Reward. The user gets what they came for. Investment. The user puts something back into the product that makes it better the next time they use it. https://www.amazon.de/Hooked-How-Build-Habit-Forming-Products/dp/0241184835

iOS In-App Browser JavaScript injections to spy on user behaviour on 3rd party websites

 iOS Privacy: Instagram and Facebook can track anything you do on any website in their in-app browser The iOS Instagram and Facebook app render all third party links and ads within their app using a custom in-app browser. This causes various risks for the user, with the host app being able to track every single interaction with external websites, from all form inputs like passwords and addresses, to every single tap. KrauseFX

Judo App - Server Driven UI out of the box

Judo App Judo brings server-driven UI to your iOS and Android apps. Build user interfaces visually in a fraction of time and publish them instantly without submitting to the app store. Build Experiences - With No Code The Judo app for macOS, available through the App Store, is built for design professionals with common keyboard shortcuts and familiar concepts like canvas, layers and inspector panel. Workflow is streamlined with the ability to drag and drop media files directly into your experiences and manage your own Judo files in Finder. Manage Creative Execution A Judo experience is interactive and can include text, images, video and buttons. An experience may be part of a screen, a single screen, or more typically multiple linked screens. Judo supports screen transitions, carousels, horizontal scrolling and modals. Clients can add custom fonts and define global colors and these are updates applied universally. Effortlessly Deploy Judo Cloud syncs your experiences with your iOS and

Bundeskartellamt prüft Apples Tracking-Regelungen für Dritt-Apps (ATT, App Tracking Transparency Framework)

Das Bundeskartellamt hat gegen das Technologieunternehmen Apple ein Verfahren zur kartellrechtlichen Prüfung seiner Tracking-Regelungen sowie des App Tracking Transparency Framework eingeleitet. Das Bundeskartellamt geht dabei insbesondere dem Anfangsverdacht nach, dass diese Regelungen Apples eigene Angebote bevorzugt behandeln und/oder andere Unternehmen behindern könnten. 14.06.2022 Pressemeldung Bundeskartellamt

Now in Android - a new, open source, real-world sample app

For this first alpha release, the Now in Android app includes: UI built using Jetpack Compose Theme components with Material3 Adaptive layouts for different screen sizes Architecture that follows our official guidance A reactive programming model with unidirectional data flow, implemented using Kotlin Flows Room and Proto DataStore for local data storage, offline first Remote/local data synchronization scheduled using WorkManager with exponential backoff Android Developers  

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