5 ms·
This is exactly the reason why I avoid any "Java/Android/iPhone" job out there. I code software in Python on Ubuntu machines. Simple bike rides. The build tools
by erikb 12y ago
This is exactly the reason why I avoid any "Java/Android/iPhone" job out there. I code software in Python on Ubuntu machines. Simple bike rides. The build tools are either non existent (Python) or are old friends (make/automake/cMake), the IDE is a bash and a vim, like a handle bar and pedals. Git, much like vim, is a mastery in itself but when the disciple reaches a certain level most of the annoying things make sense and work as desired because how they are. The Zen of Unix and the Tao of Testing are my companions. Nothing disturbs my chi.
What I am trying to say so eloquently (or not) is that maybe the problem is not the modern development world but the developer. The idea that you need just another tool to solve a problem, that is what is flawed. Skill and balance and a set of powerful, basic tools, that is what solves the problem.
- lnanek2 12y agoHonestly, I've never seen anyone use anything other than XCode for iOS. Android, it's true there is Eclipse and Android Studio, but Eclipse support for modern build system features like binary packaged Android libraries is lacking, so people are being forced off it. So there isn't much choice for either any more. Android does have a lot of devices and versions to test on, but iOS tends to have almost everyone on the latest version and just few screen sizes, so it isn't an issue. So I can see avoiding Android, but not iOS for this reason.
- jimmaswell 12y ago>Android does have a lot of devices and versions to test on Ironic how the choice of Java and sandboxing was meant to make this not necessary
- thezoid 12y agoYou are comparing apples and oranges. If you are running the same application on equivalent hardware at the same API level then you should be fine. Android has issues with hardware as well as the various API versions. The closest parallel in Java would be comparing a Pentium 4 running Java 1.3 vs some 12 core server running Java 1.7 or something.
- karmelapple 12y agoEquivalent hardware in the Android universe is the Nexus 5 (plain Android UI), Samsung S5 (using Samsung's UI customization, TouchWiz), HTC One M8 (Sense UI), and Moto X (almost plain Android UI, but not quite). So a closer parallel would be that 12 core server running Java 1.7 can have its UI skinned by different device manufacturers, and that the UI actually makes a great deal for acceptance of the app in the marketplace.
- erikb 12y agoAn extremely good argument. There are tasks for which all people involved developed a very specific development chain which has nothing to do with anything that existed before. I have not found a way to deal with that yet and decided to simply avoid it (e.g. having the choice between a $25 Python coding hour and a $50 iPhone coding hour I'd choose the Python task!) But it's not really a problem, actually. Often these people who work in these environments don't understand what freedom of mind is anyway (like try to tell an Apple guy what a FOSS OS would do good for them). The need to implement the whole Unix philosophy and all it's tools didn't stop the Java world from avoiding Linux and BSD which already has the Unix philosophy and tools available. They wanted to develop everything themselves again (and sometimes did a brilliant job!) because that's how they are. I don't like that. I am lazy and don't want to develop what is actually already there and I am not so smart. All my tools would suck compared what already exists. So I am actually quite happy not to work in the Java world even though that's what I studied in university. When git came out I learned how to use it (so much that I would be able to write my own git now), although in school we always used SVN. Now I can happily merge, rebase and cherry-pick and can focus on coding because everybody uses git. Learning git even made my coding better because I learned some great things about software development there. (This now became more of a novel than a response to your text. Sorry!)
- louischatriot 12y agoCouldn't agree more. Most of the tools I see and try are usually just ways to make coding harder and less joyful. Special mention to IDEs which make everything super slow, provide a huge lt of unnecessary plugins and can't even do editing as well as proven editors such as vim or emacs.
- duozerk 12y agoI occasionally have to work on (fairly complex) Android apps and I only use emacs and make for edition, compilation and deployment - the makefile calls the SDK CLI toolchain to compile and deploy (ant & ndk-build for the native side). There's really no reason to use Eclipse IMHO - it's just an horrible mess of an IDE that hinders more than it helps. For iOS, however, it seems you're indeed kinda screwed - you have to go through Xcode and the atrocious storyboards stuff.
- QuadDamaged 12y agoYou can write iOS apps without using storyboards or xib files. That's how Apple does it. The main benefit is that you end-up with no merge conflicts in semi-opaque files.
- SeoxyS 12y agoWhere did you hear that Apple writes iOS apps without xibs or storyboards? I'm in the same camp myself (I think xibs are a ticking timebomb), and having some supporting evidence showing Apple itself does the same would make my argument much stronger.
- QuadDamaged 12y agoEx Apple employees on the 'Edge Cases Podcast' - xib files were extremely brittle initially. Merging conflicts would be impossible to handle without dedicated tooling.
- duozerk 12y agoReally ? heard from a colleague that this will get you a likely refusal during the apple store validation process when deploying your app (said they were looking for storyboard files for each and every screen or something). Must have been wrong :-) Though I think you're still stuck with xcode ? can you use a CLI toolchain (directly calling clang and so on) to compile, build and sign an IPA ? from the little I've seen of Xcode, it sucks (a lot): random crashes, GUI & behaviour inconsistencies, bad file management, etc...
- asolove 12y agoI like this metaphor because, if you get any two bike enthusiasts together, they will likely be able to argue endlessly about the details of their respective machines. And if either of them was to try to ride the other's bike, they would have lots of small annoyances and pain points. Try watching someone who is an expert at Cocoa/XCode and you will see that they also have extremely tight, natural interaction with their toolset. They know where the rough corners are and avoid them. Their environment is already configured so that builds just work. etc. Those of us who work in the browser have similar tools and workflows so that, once we have them working well and meld with the tools, we work very productively. Yet any time I have to show someone new how I do my work, it involves many layers of learning over the course of months before they can get to that point. Similarly, though your workflow seems quite natural to you, I doubt it would make any sense to me. Yes, I know git and vim, and I can probably read the python code just fine. But knowing how to build the project, how to test incremental changes, how to debug and do performance profiling, and how to have a basic feeling for when I'm done? It would take me quite a while pairing with you before I felt comfortable. What's the lesson? While there certainly are better and worse development environments, if you judge the one you know well against the one you know poorly, you will always think that what you know is best. I appreciate the sentiment that says learn one thing and learn it well, rather than chasing every fad. But I also think that, if you're going to be well-rounded or wise, you need to have the perspective and take the time to go deep in other environments before judging them.
- erikb 12y agoWell, I tell you to write utf-8 text files, following a well known coding standard for your language (which is PEP-8 for Python) and show me the git repository with your code. I don't care which text editor _you_ use, which git client, or which Python interpreter. If you want to use XCode you can go ahead. You like web guis instead of bash, no problem. No need to learn my tool chain.
- S4M 12y ago> This is exactly the reason why I avoid any "Java/Android/iPhone" job out there. I code software in Python on Ubuntu machines. This is great, but if everybody was doing like you we wouldn't have mobile apps, or in fact anything that has to run on something non standard.
- stonemetal 12y agoI believe we would. Mobile platforms would evolve or die. What we ended up with is the simplest(for the platform) thing that developers would use. Sure, it is a horrible experience but as long as there isn't too much developer revolt then why bother improving it? That would add cost that doesn't contribute value to the bottom line. No one buys a phone because the dev tools are nice.
- erikb 12y agoWell, Android runs on Linux. Python runs on Linux. Git runs on Linux. Vim runs on Linux. See where I'm going here?
- ww520 12y agoThat's because you are using the tools that you have learned over time and are comfortable with. Someone who has never used make before would find build a makefile non-trivial, with all its implicit rules. Someone who has used Xcode extensively would have no trouble whipping out a simple iPhone app using the tool chain. Even with Python and the Unix tool chain, you still have to learn new libraries and look up API doc when they come out, unless you plan to keep doing the same old things. Software career is a process of learning new stuffs from time to time, expanding the comfort zone.
- erikb 12y agoMost people write code into text files (instead of into a DB for instance), therefore I expect you to edit text files. Most people use git, therefore I expect you to use git. These are skills you need to learn to call yourself a software developer in my eyes. If you can code but are not able to edit text files, that is bad (e.g., I had a friend who was so much into Eclipse he wasn't able to edit a very simple README.md without making an Eclipse project first). I completely agree that there is no common denominator when it comes to build scripts. There are so many variations out there. But I think if I know make, automake, CMake and Ant I'm fine with many projects and some more when I ask the authors nicely to provide me either of these.
- ludwigvan 12y agoI code in Python and JS, but I believe there is more money at mobile these days.
- erikb 12y agoYep, it's a pain in some regards. But my job is already like a long holiday. And I get paid for it. No iPhone developer can say this (I suppose). ;)
- zo1 12y ago"The idea that you need just another tool to solve a problem, that is what is flawed. Skill and balance and a set of powerful, basic tools, that is what solves the problem." If we were using your 'idea' on programming, we wouldn't have moved on from the power, basic tools such as C and Assembler. "The Zen of Unix and the Tao of Testing are my companions. Nothing disturbs my chi." Good, then keep doing your chee. The rest of us are going to use the right tool for the job, instead of some mythical pain-modifier that you think is the "One True Way".