Ask HN: What is your software specialization and what's interesting about it?
I'm at somewhat of a crossroads as I've started as a Jr. Engineer recently. I figure I should choose a specialization at some point and start to focus on it.
What are some cool things about your specialization? What makes you excited to work in your field?
10 comments
[ 3.1 ms ] story [ 34.6 ms ] threadWhat's really opened my eyes is that the state of BIM (building information modelling) is way out of touch with what is actually required to create re-usable data.
XML, love it or hate it, is a simple text format and used with an XSD (XML schema definition) is a very powerful way to enforce data standards, sort of like type checking for a text file.
Having said all that I think if you can develop apps that use something like XML, JSON, whatever as a data source and it's used along with a good schema there is plenty of opportunities for work. Not everything needs to be stored in a database :)
If back in the '90s I'd decided I was a multimedia specialist when multimedia was the Next Big Thing... I wouldn't have gotten anywhere because it was killed by the web soon after.
By all means become an expert in technologies that interest you, or that seem lucrative, or have a lot of impact that you care about. But specialization is in the end a marketing approach, it shouldn't define who you are.
More here: https://codewithoutrules.com/2017/01/19/specialist-vs-genera...
Being a generalist means I understand coding, infrastructure, business decisions, statistics, data analysis, data engineering, backend, web technologies, marketing, and a little sales. It also means I cannot find a job that uses all those skills quite as easily.
However, now I'm knee deep in the fast.ai deep learning course[0]. Nearly every one of my previous skills acts as a solid foundation for my new specialization. In a field where with an extreme Pareto distribution (10x effort for a 5% model efficiency increase), I can be in the 50th percentile in deep learning skills, but still produce solutions that solve problems.
Currently, I'm positioning myself as a consultant who can solve business problems. I'll use all my skills in doing so, with the focus on deep learning (it's great for structured data analysis!).
Being a generalist means I won't get paid for what I can do, but I've gotten lots of feedback that it will let me do things as a specialist that will get me paid. (Because I can work faster and cheaper than 3 people, once you account for hiring and communication frictions.)
[0] will be released publicly for free in January
The market is very big and there's lots of contracts, without having to compete as hard as say, PHP developers.
Americans are much more likely to specialize in iOS and the bulk of poorer countries are likely to specialize in Android because a lot of people can't afford to self-learn iOS and educational institutes can't get the budget to teach it. So a lot of people start Android, switch to iOS for the money. That makes Android specialists with 4+ years of experience much rarer. It's a very young technology and so specialists are even harder to find.
Hybrid only goes so far. Hybrid builds MVPs well, but they usually get converted to native down the line for efficiency.
With Android, one of the biggest difficulties is automated tests and asynchronous http requests. Http requests also makes up for the bulk of operations and development in many kinds of apps. This is where the specialists shine - they can make architectures more suited to testing or build/maintain HTTP web operations in a log (n) speed compared to a junior.
Android is also really tedious to build something basic with once you hit moderate proficiency because there's a lot of "best practices" you have to violate. An MVP specialist like myself can build an entire app very quickly, knowing which best practices to stick to and which ones are best handled as technical debt.
And once you're tired of programming, there is lots of demand for training, both bootcamps and corporate. Learning Android development has as much demand as web and there's a lot of people from corporate environments who know Java, have money, and want to become app developers.
I enjoy the precision needed to get actionable data, talking through all the use cases, and the constant experimentation.
I do on average tend to find the 'build it, and maybe throw it away in a few weeks' style of development isn't for everyone however.
For example, my company works in the marine industry. Our SW team needs to also understand the limitations of working on a ship.