Hacker News new | comments | ask | show | jobs | submit login
Ask HN: Why don't people program on their phone?
23 points by miguelrochefort 3 months ago | hide | past | web | favorite | 30 comments
Phones and tablets are becoming as powerful as laptops and desktops. They're cheap, portable, and always with us. Why do we treat them as consuming devices, and not as productive devices? What if we could be as productive on a phone as we are on a computer?

What's preventing this from happening? What's the bottleneck?

- Performance?

- Small display?

- Lack of tools?

- Design of programming languages?

- Design of IDEs?

- Slow input?

I can obviously tell that Xcode doesn't run on my iPad, and that Visual Studio wouldn't be very usable on my smartphone. I've played with some mobile IDEs, and they're not great, whether I'm writing Java or JavaScript. I'm also aware of the lack of tools for debugging and what not.

My question is whether or not we can expect professional software development to be performed on a mobile device in the future, or if we'll always rely on larger devices for some reasons.




To answer your question directly: because of the wretched, misanthropic keyboard, only a very few will develop directly on a phone. You really need a larger keyboard to be able to input letters without flow-interrupting corrections.

Special development workstations will fit in with the goals of larger corporations in that such special workstations will cost more, and therefore limit entry into the market. So I expect we will only rarely see anyone developing directly on a smart phone.


This for me, I can barely compose a text message on a phone. With the formatting and indentation required for programming it would be a nightmare. Might be solvable with a text editor app but then I’m missing key dev tools I may need.


I am a bit obsessed with this topic and have already implementd various stabs at a "fix" (in different stages of completion):

1. "Tidej" -- a mobile JS IDE: https://tidejnet.appspot.com/v3/ -- Too complex, too little guidance, code editor used not really mobile friendly, browser seems even less usable than native for this purpose.

2. "Flowgrid" -- a dataflow IDE for Android: http://flowgrid.org -- turns out drawing is even harder than typing on mobile

3. "CodeChat" -- a strange not quite smalltalk dialect with a chat-like interface: https://github.com/stefanhaustein/codechat -- I can't fully remember the syntax myself -- perhaps a bit too ambitioned.

4. "ASDE" -- The "current" approach: https://m.youtube.com/watch?v=0pQ5PU91Ils -- the main idea is that line numbers will help the to avoid the biggest pain on mobile: fiddely cursor positionong. Hope this one will pan out better than the others...


The demos look great, good job!


The first bottleneck is the keyboard. Until we have AI to understand high level mathematical intends expressed in spoken natural language and translate that correctly to code, it will be easier and more efficient to use a keyboard and formalize your programs yourself. There’s a youtube video showing how a guy programmed emacs macros, to be able to write code by speech...

Then of course, the small screen size. But here, the resolution is good, we’d only need a way to, project it on your retinal. You can do without the phone screen, with somthing like the googleglasses...

So, what is usable today, is the tablet with a bluetooth physical keyboard. Well, if you find a place to put them down, like a desktop. On laps, laptops are much more practical, since the keyboard is attached to the screen, which allows you to retain it with your hands!

Otherwise, there are full IDEs on Android allowing you to code and generate applications directly on the phone or tablet, if you can solve the ergonomy problems.


The emacs macros for voice coding talk:-

https://youtu.be/8SkdfdXWYaI


Any time you are doing something for a long period of time, comfort becomes an issue. Programming on a phone would be cumbersome and uncomfortable. Look at all the fancy keyboards programmers have, and multiple large screens. Programming on a phone is the exact opposite of what I want!

But, I would definitely consider a scenario where I would program on my powerful phone plugged into a dock with a good keyboard and multiple large monitors!


I used to have a Palm Pilot around 15 years ago. On that was an app that supported a C dialect. So I wrote a Snake clone in it. Was actually fun. But yeah, there was a pen and a custom input language, I think that's more efficient than fitting a keyboard on to a tiny space.

There's a trend that all kinds of computers become like Stereos. They become very practical to use for recreational tasks and a limited amount of professional tasks. That's not including programming though. I mean a Chromebook is for instance a laptop perfectly suitable for programming but you need to go through some discomfort to configure it for that, although I guess it became easier with time.


No. Just like we will not see professional graphic design, 3d modeling, circuit layout, or physics simulation on a mobile phone.

Why? Because a phone is fundamentally a consumer's device, not a producer's device.

Just because you can tweet or upload videos to YouTube from your phone doesn't change that fundamental nature.

It is designed for the masses, not for specialized power users.


My biggest problem with the idea of developing on a phone, or even on a small tablet (8 inches or less) is the size of the screen, and the difficulty of context switching. I have a 27" and a 20" monitor set up side by side, and I wish I had more screen space.

One idea I've toyed with is the idea of using a virtual reality headset. Paired with a bluetooth combination keyboard/touchpad and and a tiling window manager, one could have a (virtual) large display, in a fairly small physical package. I have no idea whether a combination like this would be suitable for working for long periods of time, but it would be compact.


One of the few people I know does this is Andre Staltz. He is active in Scuttlebut community, and is behind i.e. cycle-js fronted library/framework. I remember he uses a small portable keyboard to hack away on a library on a plane.

I tried to do this as well, and it is one of the reasons I bought Blackberry Key One with a physical keyboard. I do like to use the combination of termux running emacs to do some learning of programming languages, i.e. I did play around with Rust around this way.

More productive way to do actual programming that I tried, was to run jupyter-notebooks, as the notebook interface in the browser turned up to be a nicer interface to work in with a small touch-screen.

I wouldn't attempt any more serious work though, I would need to have the lager screen space and better key-board to write anything longer, or to read larger poritons of code. Most of my programming work consists of untangling and fixing interlinked pieces of code and I have to say, having more screen-space helps :P

On the other hand, maybe if you write APL, language famous for being succint, you might be able to productively work even on the small screen :-)


I can barely write messages on my phone, let alone code.

I literally made 3 typing errors in the above sentence that were from fat fingering the IPhone touch keyboard. I loathe it, and look forward to switching back to a hardware keyboard on my next upgrade.


I've programmed on a single hand held device for extensive periods of time, my TI-83. Sure it was a pain to always been putting it into Alpha-lock to use the letters, and it's keyboard wasn't in any kind of layout like QUERTY, but having access to all the buttons on the TI made actual programming possible. Maybe the TI-91/92 would be even better.

Right now my phone is auto correcting code to coffee.


If you use a dense language like J/APL then sure. I actually run J on my phone and ipad and I find that I'm as productive on those devices as desktop since it's not the speeding of typing that get's in the way. With a high level language like python/go, no way in hell will I peck or swipe the code.


I do occasionally, but usually it's ViM over an SSH connection, and it's out of desperation.

As others have said, the keyboard, small screen, and other phone-specific issues prevent me from doing anything intense on my phone. I've tried several apps, and none have convinced me that programming on a phone isn't the worst idea ever.

However, I do quite a bit of development on my phone. For example:

- brain dump ideas - resolve/update bugs in a bug tracker - code reviews - read documentation - answer email - IM

My phone is quite good at those things, it's just really bad at code. I'm still looking for a decent markdown editor for my blog, but other than that, I think I'm pretty happy where things are at in terms of mobile development. In fact, I've spent entire days working strictly from my phone.


Because phones and tablets are consumption devices, no matter how many productivity hack articles you read. These articles are also written by people who don't produce anything of value but waste your time. Much like your phone.


I have a Bluetooth keyboard, but it seems like a lot of apps are sandboxed in and limited. Or maybe I just wasn't able to find the right IDE.

Like you could do some math or make a web page, but lots of access was limited.

Also, a large external screen would help


I've used the JavaScript Anywhere app (https://www.javascriptanywhere.net/) on my IPhone to experiment with algorithms and write useful snippets of code during my commute.

It works fairly well with the two obvious limiting factors are screen size and clunky keyboard input. However, the #1 stumbling block is lack of cursor navigation. It desperately needs cursor keys and shortcuts to move to the beginning/end of the line. The #2 greatest frustration is having no good way to select text except fat finger selection.

What's needed most is an extended keyboard (w/ cursor keys, for example) and/or a smarter popup "magnifying glass" mode so you have a bigger target for fat finger selections.


As for me coding on the phone was exactly the thing why I wanted to buy a smartphone in the first place (and why I've bought one equipped with a qwerty keyboard initially). But I've soon found out no reasonable mobile IDE exists. I would have be glad to code on my smartphone (now I have Galaxy Note which is reasonably big and I can attach an external keyboard) if only there was a good (like PyCharm) IDE. Autocompletion is especially important on a mobile and the only 2 [non-mobile] IDEs I know to have good autocompletion are IntelliJ Idea (and its derivatives like PyCharm) and Visual Studio.


I have made small edits on mobile.

I don't think you will ever see development on mobile as it is much more efficient with multiple large displays and a full size keyboard and input device.

I can see programming in VR in the future. But I still think we would need a physical keyboard. Until the point where we can type/cut and paste by thinking.


I use termux and emacs on my phone for development. My phone is more powerful(8 armv8cores with 8GB RAM) than the 200$ netbook(atom processor with 2GB RAM) that i carry so i use it for all my development work.I use mosh to ssh into my phone but i still use netbook for keyboard and screen.


Never mind all the technical issues, lets assume they are sorted.

For iOS, it will then cost you $100/year so that you can install your 'own' App onto your 'own' phone and not have Apple delete it after 7 days. That is of course, assuming that Apple will approve your App.

edit to clarify is an Apple issue


I've actually been thinking about this problem a lot recently.

I think it'd definitely mean a dramatic shift in workflow which would have to be learned, although I spent years learning how to work on a computer, why not spend some more time learning to do so on a mobile device? I think that in general, developers would resist the idea but for those that were open to it, there may be hope.

I think the first thing that'd need addressing is the ability to type. An on-screen keyboard just won't cut it, we're working with limited screen real-estate here so we need some other way.

I came up with an idea for how to replace an on-screen keyboard, without reverting back to the old-school blackberry keyboards or the number pad we all used on those old nokia 3310s.

What I propose is a reduced size keyboard affixed to the back of the device somehow.

Eight of these keys would be your 'home' keys, where you rest your fingers. Other keys would behave as function keys. You'd need some level of visual feedback on the screen so you can see where you are on the keyboard. Maybe some extra keys could be thrown in there for very commonly used keys, brackets, return, tab, space, backspace, etc.

Ultimately, you'd end up with more keystrokes than normal, simply due to the fact that you're having to shift around the keyboard using other keys, but I'd imagine with enough time, people would be able to adapt and become proficient at typing quickly with these devices.

I haven't thought too much into screen real estate, but I think a huge benefit could be the ability to switch between applications/panels quickly (using the physical keyboard mentioned above).

Tooling would be super important, having tools that allowed you to mimic your desktop workflow would be super important. I think this would probably even need to be done at the OS level. I think you'd need some way to install a mobile, stripped down distribution of linux with a desktop environment specifically built for the mobile environment.

Further thoughts:

To increase adoption rates - you could make it possible to dock the mobile at a workstation and use it as you would a regular computer.

I definitely think it's possible, I'm just not sure anyone's that interested in making it happen. Personally, I think it'd be awesome to see this kind of thing come to life and I would definitely invest the time in learning to use it given how much time I spend on trains/travelling. I don't always have a laptop with me to get work done so having this all in my pocket would be very convenient.


You could build a slide out keyboard for yourself and attach it via the usb port on your phone or via bluetooth. I've seen a wireless keyboard attachment for iPhones already. Maybe to get a larger keyboard you could have a well designed fold up or rollout keyboard that is compact?

You might also be able to use your phone as a thin client if you can put up with the limited screen space. There are some good systems like Apache Guacamole. It's too hard for me to use but maybe it's possible with a phablet or diy smart glasses and a bunch of determination. :)


Keyboard and screen size are both showstoppers. Also why a developer would want to lock themselves in android/iOS is a mystery to me.

But having an external monitor/tv and a real keyboard then you could do some real work in either a terminal like termux or ssh to a real machine. But you loose a lot of the portability in most scenarios and that is also the only thing a phone is better at.


As someone who's mostly agnostic about programming environments, the lack of control over my device is ultimately the drawback.

I could program on a tablet but it would have to be a (non-RT) Windows tablet like the surface or some Linux equivalent. (but GNU/ Linux or something similar, not locked down like Android). But I already sort of have this with my two in one laptop.


A better thing to consider would be to set up a programming environment where you would project high resolution on a white wall.


There are mant factors, and you listed several good ones, but I think the most important one you missed is ergonomics.

Rarely is coding something you do for just 20 minutes or even for just 2 hours. The smallest projects are measured in days of work, the largest in person-years.

As a programmer, your body needs to engage with your workstation for most of that time. If you try to do that entirly on a small, portable device with on-screen input, you’ll quickly discover how poorly your body can sustain the necessary postures.

That’s not to say that mobile coding tools aren’t useful. Punching in some extra lines on the couch or on the train or in the bathroom at a boring Holiday party is a great opportunity to exploit, but it will always be a secondary mode. And because it’s secondary, tooling will be slow to keep up with what’s available on primary workstations.

Will we reach a point where you can punch together a whole useful program on a mobile device? Sure, but they’ll usually be smaller and simpler programs and will probably beneifit from visual programming languages that operate on large-grain components. More like automation scripting than systems-level programminng. Apple’s new Siri Shortcuts are an example for personal/consumer scripting. You could see similar tools succeeding for Enterprise Reporting, DevOps, etc.

TLDR; it is and will be a specific niche for a number of reasons, not the least of which are the ergonomic concerns.


No keyboard.


Can't even imagine how it's possible with actual keyboards




Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: