6 ms·
I second this. I'm currently on a team that has a couple senior engineers, but neither of them are true experts of what our team does (iOS). One has decades of
by dandr01d 9y ago
I second this. I'm currently on a team that has a couple senior engineers, but neither of them are true experts of what our team does (iOS). One has decades of web dev experience while the other has decades of Java service experience. Our team badly needs an iOS expert to make the tough decisions and lead architecture.
- draw_down 9y agoThat would still be programming specialization, as opposed to domain specialization where programming can be applied. I used to know this guy who knew the ins and outs of the health club industry, and he could program a little. He made a lot of money. I think this is more in line with what tptacek is describing.
- rubicon33 9y agoI think it's still a domain specialization to a degree. The domain being, mobile. Being an expert in iOS is more than just knowing how to program in Swift/Objective-C. It encompasses a deeper understanding of mobile development and the apple ecosystem. True senior level iOS people will understand core user interface design principles as they relate to mobile, and will be intimately aware of Apple's Human Interface Guidelines. They'll understand mobile accessibility and be deeply familiar with the myriad of tools in iOS. They'll understand internationalization and how to design an application to support various calendar systems, and text layout paradigms. They know the ins-and-outs of Apple's provisioning and certificate system and can quickly sniff out configuration issues. They understand how important testing is and how well supported it is. They know how to setup automated builds using xcodebuild, and how to support automatic unit and ui tests. The list goes on and on. Certainly one could just be an app developer and stop there. But being a mobile domain expert in my opinion is a much more valuable albeit niche position.
- tptacek 9y agoNone of this stuff really sounds "defensible", in the marketing sense, to me. This is just programming. It's the goal of the platform to make programming as accessible as possible to everyone. It's better to be good at mobile than to be good at nothing at all, sure. But I'd be really careful about picking a specialty that amounts to "my domain of expertise is AppKit", or "my domain of expertise is Scala", or anything like that.
- rubicon33 9y agoThe OP mentions a couple domains that you could also dismiss as "just programming", but actually have a depth to them which allows for specialization: Security, and kernal development. You could claim that software security is "just programming" for instance... But you likely wouldn't, because it requires a level of understanding that is especially deep, and niche. It doesn't really matter that a security expert likely reads a ton of code, and writes some too, it's that they understand a subset of the industry to a high enough degree that they stand out among their peers. I propose that you can be a mobile expert, just as you could be a VR expert for example. At the end of the day it's more then just programming, it's a combination of hardware / software / tools that retains a degree of uniqueness.
- tptacek 9y agoI think I managed to communicate about half my point to you, but missed the mark with the other half. Yes: you can specialize in being a really good programmer for a particular platform. I have a lot of friends who specialize in being Serious Engineers, who understand how to get interesting and important things done with lenses and how to effectively get a whole project away from null pointers and into monadic error checking and how to use type systems to prove programs mostly correct as they're being written. That is a real specialty. It takes real skill and investment of time to get to the point of being expert with that stuff. I'm not diminishing the value of being an expert software developer. I'm just saying that basket of specialties is unlikely to command a very high wage premium, not because it's unspecialized, but because it's hard to fashion a value proposition for it relative to your competition in the market. There will be times during which particular platforms or languages will get hot, and it'll be good to be expert with them. But (a) those phenomenon will be more transient than other problem domains, and (b) the wage premium for being specialized in them will still probably be lower than the wage premiums for the other domains. At any rate: as long as you're thinking about the domains you're specializing in and not a career as a "programmer" or a "builder of software", we can probably agree to disagree about the rest of the details.
- pw 9y ago
- deleted 9y ago[deleted]
- ssijak 9y agoYou misses the point
- matwood 9y agoYou did miss the point of the parent. To be more clear, programming for the most part is easy. Knowing what to program is hard. I don't know what your iOS app does, but lets pretend it's something to do with healthcare. Someone who is an expert in the healthcare domain and can program (or learn whatever stack you are using) is going to be much more valuable than an expert iOS person who has no clue about healthcare. That same person will also remain valuable as technology changes (which it will) since the company will likely still be in healthcare.
- j45 9y agoNot just knowing what to program, but how - clever and mindful architecture will always beat clever programming. Developing transferrable strategic and architectural skills between verticals (client facing, or technologies) is a key aspect that I see being missed with programmers. No framework will make or keep your career, nor will a specific language or piece of tech. Knowing how to apply technology well, in a way that doesn't need to be entirely thrown away every 2-3 years is invaluable, and as a result increases a developers value.
- dwaltrip 9y ago> To be more clear, programming for the most part is easy. I vehemently disagree with this. Kludging together an unmaintainable codebase that barely meets the spec might be easy. Aiming for a notably higher level quality beyond that is NOT an easy thing at all. Obviously, the nature of this discussion depends on the complexity of the task at hand. There are many profitable ventures with low levels of complexity in the software implementation, and your comment may hold true for such scenarios. However, there also many ventures that require significantly complex software to meet their goals, and will require skilled developers to have any hope of not collapsing under the weight of shoddy implementations and impenetrable abstractions.
- matwood 9y agoI'm sure there are exceptions, but IME the biggest cause of 'kludging together an unmaintainable codebase' is lack of understanding of the problem domain. Software solutions do not exist in some technical vacuum outside of the problem they were built to solve. Better understanding of the problem domain naturally leads to better software.
- blub 9y agoWhat kind of tough decisions does an "iOS expert" need to take? Mobile app development is becoming quite clear cut, one only needs to read the docs and know the APIs.
- kelnos 9y agoAgreed to some extent. You still need some expertise as a general software developer in order to write performant, stable apps, but it's certainly a lot easier to go from zero iOS knowledge to a fully working app than it was 5 years ago.
- crucialfelix 9y agoIt only took me a few weeks to get caught up and be a proficient iOS developer, but it takes several months to know all the pods, architecture design patterns, tooling and gotchas to be able to lead a team and avoid months of mistakes and rewrites. The official APIs are a small part of it.