Ask HN: What is your software specialization and what's interesting about it?

17 points by skellera ↗ HN
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 ] thread
I've written an app that uses an XML schema to record local authority assets such as roads, sewer and water, parks and cadastre et al as a plug in to a CAD application. What is special about it is that it uses a vendor neutral file format to record important assets that can be imported into a GIS system for use in budgeting, maintenance, planning, asset depreciation etc. All data is validated by the schema so all stakeholders can be sure that the data passed around is usable and correct.

What'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 :)

I'm skeptical of specializing in technologies. Personally I've built multimedia CD-ROMs (in proprietary language), websites, high performance C++ servers for airline industry, distributed systems in Python and a bit of Go, and now I'm doing scientific computing.

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...

I've spent over a decade as a generalist. If I had to do it over, I would have been shortened that time by half, then specialized.

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

Is the fast.ai course being released in January the new/updated version of the current Deep Learning for Coders one? If so awesome!
Android is an interesting specialization.

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.

What do you mean by hybrid in this context? Tools like Cordova or PhoneGap? (Don't know much about this area.)
With me is the opposite, I am interested in the stock market and the technology (python, Linux, etc) is just the means to the end (making money constantly)
Cyber Security, when you understand how to build/maintain/manage software, you know how to defend, and break it too ;)
I tend to be specialized in A/B Testing, Analytics and Personalization.

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.

You might want to think about what business you want to work in. Then develop the best technical skills for that business.

For example, my company works in the marine industry. Our SW team needs to also understand the limitations of working on a ship.