Attempting to “share code” between Swift/Kotlin is folly at this point. I’m not going to close the door on Kotlin Native some day. But for now just say, “No”.
79 karma · joined January 25, 2013
Attempting to “share code” between Swift/Kotlin is folly at this point. I’m not going to close the door on Kotlin Native some day. But for now just say, “No”.
Pardon me if I take this all with a grain of salt.
Try to do the stuff you've been doing but without the resources that have been at your disposal. Build a simple Twitter clone API using only C APIs. Roll your own HTML layout renderer in Open GL. What if NGINX and Apache didn't exist? What would you do then?
Watch "Halt and Catch Fire" as an engineer. Listen to the problems they're solving and try to solve them yourself.
At the end of the day, hacking is about creative problem solving.
Let's start with Objective-C which is being listed as "Enlightenment" on the cusp of "Productivity". Objective-C has been around for 30 years. Check out the Swarm Library. An Objective-C library developed first in the 90's for research into CA. I won't go into the whole history, but it's been a productive language since the mid 90's.
In Text Editors, Xcode is listed as "Challenged" by what? There's no mention of AppCode at all. The Cocoa IDE marketplace is so small I cannot name another editor without going to google. Listing it as "Challenged" may appeal to people who aren't experienced with it, but it's still the accepted tool for Cocoa development.
For iOS Development... I know React Native is popular among newcomers, almost exclusively because they'd rather not learn a new language, but I can name exactly 0 mobile professionals who use it. Yes, I know Facebook uses it. Facebook apps are objectively terrible. They get away with it because React Native is moderately better than mobile web.
/rant
I absolutely adored Objective-C. But there were a few things I never felt comfortable with and just drank the Kool-Aid on.
1. Message passing to `nil`. Sure it's nice that you can safely pass a message to nil, but the idiom is a little weird. `guard` and `defer` have completely changed the way I write code in functions to exit safely.
2. Protocol Oriented Programming. This has changed the way I architect my applications for the better. I end up with less code over all and fewer Unit Tests in particular.
3. Associated Value Enums. Another big win over Objective-C. Now I can have a type and value all wrapped in one little package for my switch statements. It sounds minor, but it minimizes cyclomatic complexity.
4. It's going to be very good to know this language in 2 years. Javascript has owned the browser for too long.
1) Remote Work & Flex Schedule - Quality of life is a major concern. Working in startups 100 hour weeks have happened. It's kind of a rush actually. But everyone needs to take some time off that. Allowing people the opportunity to work from wherever they want, whenever they want makes all the difference. A common miss of non-profit managers is adopting the idea that you need to be on the job from 9-5 and be seen being productive. Don't treat your devs like they're cashiers.
2) Community Engagement - Mid-sized companies and startups tend to be wildly jealous about their employees time, often requiring employees to work in a vacuum. Let your devs publish open source software that's derivative of your core business. Support their desire to establish development blogs. Encourage their extra curricular activities. I've often taken second jobs teaching software development just because I enjoy it. A lot of for profit companies don't like that.
3) Intrinsic Benefits - Be willing to hire off platform. Look for people interested in expanding their skill set. The mobile developer looking to learn web development. The web developer looking to learn API development. The boot camp graduate looking for their first job in the field. Find people who can figure out how to do the job. Have the practical experience make up for the lost direct income.
For me, coding is a passion. A labor of love. I haven't worked a day since starting. As an iOS developer, I'd say learn Swift. Apple pushed the great reset button and we're all starting from the same place.
The bottom line is there are low barriers to entry and a high rate of return.
I'm not saying it would be easy. I started teaching myself iOS at the end of my sophomore year (4 years ago). In six months I felt comfortable accepting contracts off of elance. By the time I graduated I was employed full time as a contractor. It's just gotten better from there.
Mobile is one place where your past doesn't really matter. You either can or you can't. And your past doesn't matter much.