
Ask HN: Why don't people program on their phone? - miguelrochefort
Phones and tablets are becoming as powerful as laptops and desktops. They&#x27;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?<p>What&#x27;s preventing this from happening? What&#x27;s the bottleneck?<p>- Performance?<p>- Small display?<p>- Lack of tools?<p>- Design of programming languages?<p>- Design of IDEs?<p>- Slow input?<p>I can obviously tell that Xcode doesn&#x27;t run on my iPad, and that Visual Studio wouldn&#x27;t be very usable on my smartphone. I&#x27;ve played with some mobile IDEs, and they&#x27;re not great, whether I&#x27;m writing Java or JavaScript. I&#x27;m also aware of the lack of tools for debugging and what not.<p>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&#x27;ll always rely on larger devices for some reasons.
======
bediger4000
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.

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

------
dukoid
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/](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](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](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](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...

~~~
hiaux0
The demos look great, good job!

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

~~~
textread
The emacs macros for voice coding talk:-

[https://youtu.be/8SkdfdXWYaI](https://youtu.be/8SkdfdXWYaI)

------
rman666
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!

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

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

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

------
a-saleh
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 :-)

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

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

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

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

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

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

------
jones1618
I've used the JavaScript Anywhere app
([https://www.javascriptanywhere.net/](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.

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

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

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

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

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

~~~
greenyouse
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. :)

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

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

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

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

------
mindcrime
No keyboard.

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

