Ask HN: Learning to code, without a computer?

205 points by givinguflac ↗ HN
I have a friend who is incarcerated, and is dedicated to learning how to code, no matter how slow or arduous the process may be. He has no access to a computer, just books and writing utensils. While it may be very difficult, what are suggestions you have on how to give him the best chance for success?

Even if he's not learning a specific language, what are some background concepts he can learn in depth that will help him understand coding? I recommended he study algorithms as a starting point but I am not a dev and am not sure how to proceed without a computer.

I realize this is an unusual question, but I greatly appreciate any responses. It's sad that someone so badly wants to improve themselves and can't easily do so because of our archaic prison system. I want to help give him a chance to have a real profession once released. Thank you!

193 comments

[ 3.7 ms ] story [ 226 ms ] thread
Bell Lab's cardboard computer ( https://en.wikipedia.org/wiki/CARDboard_Illustrative_Aid_to_... ) came to mind, but you are probably right that studying algorithms (and at least something about hardware) is probably the best starting point. As it is some time since I was in school, I am not sure what counts as a good introductory text these days.

This does not give any experience in debugging, which is not taught in books, AFAIK. I am not sure what to do about that...

Thanks! That CARDboard looks really cool, I'd never heard of it. I'll look into things like that; I really appreciate the response.
We used the CARDIAC as an intro to programming in my high school Computer Math class (Fall, 1980). Nobody that I knew in class enjoyed it, so I wouldn't recommend it.
Learning programming without a computer is going to be really tough, but if he's dedicated enough, he should be able to make some good progress. (Although he shouldn't expect to be employable as soon as he gets out.)

CS theory probably makes a good starting point, as a lot of it doesn't require actual coding, but still lays a solid foundation for future work. I would recommend SICP (Structure and Interpretation of Computer Programs, by Abelson and Sussman) as a good starting point. It uses Scheme, which isn't exactly a language he's likely to end up working in, but it will teach him a whole lot about thinking like a programmer.

This is exactly what I was thinking, thanks for the book title! This community is the best.
Also the little schemer series, which just expect you to work things out by hand.
Learning to code without a computer is what we all did, 40 years ago!

He may write programs on paper, and send them to you to type them in, compile them, and print out a listing with the errors. You then send back the listing, and he will correct his program and repeat.

He'll become a great programmer, since he will have to be extra careful to avoid losing one week on some typo.

Now, it's been a few years since gcc has been able to produce a real listing of the compiled source. You would have to write some script to combine the error output with the source file to produce a classic listing. Similarly for other common modern programming language implementations.

On the other hand, without direct access to a computer, he would not attempt to write any interactive or GUI application, only batch programs, unless the interaction is performed only by an external tester for him.

Another idea: some progress has been made on optical character recognition, so if he can write well enough, it may be possible that you may be able to scan his written programs, and convert them to source file easily, without having to transcribe them. So the process could be smooth enough.

If writing ustensils include typewriter, then even better for the OCR!

> He may write programs on paper, and send them to you to type them in, compile them, and print out a listing with the errors. You then send back the listing, and he will correct his program and repeat.

Reminds me of this Reply All podcast episode https://gimletmedia.com/episode/64-on-the-inside/

"For years, Paul Modrowski has been writing a blog from inside a maximum security prison. Only thing is, he was arrested when he was 18 and has never seen the internet."

"Now, it's been a few years since gcc has been able to produce a real listing..."

Can you share with readers the version number for the last gcc that can do this satisfactorily?

GCC 4.9 was a pretty big step forward.. well, atleast `g++` was.
I had considered the mailing method and I think we will probably get there once he has the basics down. Thanks for the response!
>> He may write programs on paper, and send them to you to type them in, compile them, and print out a listing with the errors. You then send back the listing, and he will correct his program and repeat.

The guy could 'run' his hand written programs on his own.

Indeed, that's what people would do back in the day when, between the wait to get an available computer and the time to compile, it could take days to find out the result of your code. Can never be sure it works until you run it for real though, can you?

Unless, by chance, you were suggesting he set up some kind of turing machine where running is a different matter than reading your program over in your head?

You're not limited to "a machine that executes code" (even as simple as a Turing machine) and "reading your program in your head." Most 8-bit processors were easily comprehensible by people, and could be represented in a simple state machine. That state machine can be emulated by anyone with pencil and paper, albeit at a billionth the actual execution speed. But walking through assembler that you hand-compile to machine code, and then step through rigorously with a constant eye towards what the processor is doing and how it does it is probably far more valuable than any certificates.
On almost all of my tests for classes where I was learning a new language, I'd have to write the programs with a pencil on paper and execute them, step-by-step, to ensure proper output. I'd say this way of learning is way better than skimming over some Javascript blog.
>> He may write programs on paper, and send them to you to type them in, compile them, and print out a listing with the errors. You then send back the listing, and he will correct his program and repeat.

I'd pay good money to know what the prison superintendent thinks of this cryptic communication.

As an interesting side note, it turns out books on programming that include chapters on encryption are not allowed in prisons.
Do you have a link to any reading about this? I'm curious.
I actually spoke with a person who works with a specific convict who wants to learn math and programming. They apparently ran into this problem. I don't have a reference, though.
Is this an argument of sneaking in a book on elliptic curves that tangentially talks about cryptography?

(I kid, of course.)

I'd imagine the job prospects for ex cons specializing in cryptography aren't that great anyway.
Probably depends on the conviction
Probably depends on the conviction
Too bad they can't have offline computers, teach an electronics class or something.
In junior high we had a couple Apple IIs and a lot of IBM Selectrics.

We learned to code by typing out programs on the selectrics...

> Learning to code without a computer is what we all did, 40 years ago!

Comments like this reminds me of how much of a difference is to live in a 3rd-world country compared to a 1st-world country. I am still on my twenties and I can still relate to what the parent comment says, I learned the basis of my programming skills reading books around ~8 years ago because during that time having a personal computer in my home country was a luxury. Very often I joke with my friends that most of the innovative things that we find in the market are already +3 years old. I still remember the popularity of the BlackBerry when it was already obsolete in the US because of the iPhone.

One thing I did during that time to learn some algorithms was to buy a deck of cards — which I suppose is allowed in jail — which allows you to understand sorting algorithms and some of the basic data structures like queues and stacks. Writing things on paper might also help to visualize and memorize some concepts (I know, memorizing is not the solution, but what else can you do when you cannot run your code in a computer).

I hope it helps, and good luck to @givinguflac 's friend.

> Another idea: some progress has been made on optical character recognition, so if he can write well enough, it may be possible that you may be able to scan his written programs, and convert them to source file easily, without having to transcribe them. So the process could be smooth enough.

I was going to ask if he has access to a smartphone to take and send photos of paper?

Set up a server for it. Hell turn it into a business.

If he has access to a smartphone, there are some coding environments that run on the phone. No need to run the code in such a roundabout manner.
Is access to a smartphone in any way a possibility while incarcerated?
If this is a typical american prison, smartphones (any phone for that matter) is considered contraband.
Would a programmable calculator be allowed?
(comment deleted)
(comment deleted)
While I agree that its what we did 40 years ago, it's not generally how we do it now.

I would concentrate on the things that don't require a computer- algorithms and mathematical type stuff (the stuff I am not particularly good at these days because I am usually setting up servers, using a database and high level frameworks).

I remember reading an articulation that it is odd that we are taught to program differently to how we are taught to play music.

With music, we are taught to read before we write.

With programming, we start out writing.

This seems like a great chance for your friend to try out the music learning approach. Send them books of excellently written programs, and allow them to read before they write.

[As a side note: What is their goal? To program to become a software engineer? To program to build web applications for fun? To program to learn how to build products to produce a profit for themselves? The goals will inform the process.]

I'd actually make your point even stronger. I think we're in a preliterate state with programming: it's hard for anyone to quickly look at a program listing and answer the basic sorts of comprehension questions we might test school kids on for prose.

What we find easy is to read programs we wrote. Recently.

(I'm trying to help change this: http://akkartik.name/about)

Currently he's wanting to learn everything he can and specialize later, but we have discussed him building a web based platform for an idea he has. But generally he sees everything moving toward software and he wants to be prepared, which isn't wrong. Thanks!
I don't understand why they don't give inmates access to a computer for a few hours per day.

When they're out the hard working ones will have programming skills which will help with the job hunt.

The goal of our penitentiaries isn't rehabilitation or to prepare inmates for a life outside of jail
And more to the point, taxpayers don't want their money to go towards enriching the lives of inmates, only their punishment.

"Why am I paying to have rapists, killers and thieves jerk around on the internet all day," they'll say, while voting out the party responsible and voting in the party promising to take the computers away and make the inmates break rocks in the sun until they drop.

I couldn't agree more, he's told me stories of people there for decades to whom he has attempted to explain what computers or the Internet are like. But, it's basically like telling a fairy tale as everything, down to the concept of a mouse or GUI is imaginary to someone who hasn't seen real world technology in a long time. It's really sad.
Sounds like a great opportunity to learn set theory, abstract algebra, number theory, linear algebra. You could get a working comprehension of cryptography or computer graphics. You could get a handle on category theory.

Those are topics that one could make progress on with only a pencil, paper, and the occasional phone call to a mentor.

I cannot imagine submitting punch cards and reading JavaScript stack traces by mail.

He wants to learn to code, not how to become a mathematician.

As an EE student, there are plenty of engineers who know nothing about those topics (except maybe linear algebra) that have successfully completed the image processing/computer vision course.

> Mano, M and Kime, C Logic and Computer Design Fundamentals, 2nd ed Prentice Hall, 2001

"Featuring a strong emphasis on the fundamentals underlying contemporary logic design using hardware description languages, synthesis, and verification,"

You mean to tell me that set theory is too abstract, but full-adders and VHDL are right up his alley.

Nothing is too abstract for a grown adult. It's expected that by that stage you will struggle through whatever is thrown at you. In fact the book list I've copied and pasted are the recommended texts from the "computer engineering 101" class.

The problem is that most mathematicians don't have more than a surface level working knowledge of set theory, because they don't think it's useful. It's even less useful for computer scientists (who use type theory any way).

With the exception of set theory, I've taken the classes you've mentioned, and while they've been very useful for electrical engineering, I don't believe they're useful for software engineering.

> Nothing is too abstract for a grown adult.

SICP, dearth of practical experience... MIT? Any case, you live in a daycare. Remember we're talking about someone incarcerated.

I'm not even a great programmer, but I found learning formal logic, abstract algebra and category theory to be incredibly useful. That, algorithms and data structures. That's what I would study if I were in prison. Not, trying to learn Python or something, which could be a dead language by the time you get out.
I learned programming without a computer in the 90s with Kernigan & Ritchie "C Programming Language", one of the best coding books ever written:

https://www.amazon.com/Programming-Language-Brian-W-Kernigha...

I'd also learn SICP: https://www.amazon.com/Structure-Interpretation-Computer-Pro...

and algorithms from either CLRS https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press... or Skiena Algorithm Design https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...

If your friend plays chess - or any 1 vs 1 board game - he can implement a chess program and execute the algorithm by hand to see how his program performs. I haven't done that myself, I am sure it's tedious, but at least he will be able to see his algorithm running.
This is a good question for old timers that learned to code by rote with a home computer back in the day when you could learn a language and all of it from a couple of manuals. But times have changed and nowadays I do not have any books directly relevant to my current programming skill set - Stack Overflow is my friend.

So what books do I have?

Books on usability and web accessibility are good reads, however no obvious title springs to mind ('Don't Make Me Think!' would last your friend all of a morning).

One thing though, chess. Chess is played in prisons and some prisoners get rather good at it. Maybe encourage your friend to form a chess league if there isn't one already. Perhaps get him a really good book on chess that can be used by this chess league to be.

As cheesy as this sounds...

the HEAD First book series, they have fill in the blanks programming exercises.

I'd recommend he read the "structure and interpretation of computer programs". It's written for audience who would, at the time, have found programming novel, but would be at home with math. Hence it's written in a language that allows you to expand out the program by pencil and paper, much the same way you would simplify an equation, to see if it works.

Also the following books, which I've copied and pasted from somewhere, to learn theory:

Mano, M. Digital Design, 3rd ed. Prentice Hall, 2002

Mano, M and Kime, C Logic and Computer Design Fundamentals, 2nd ed Prentice Hall, 2001

Gajski, D Principles of Digital Design Prentice Hall, 1997

Tanenbaum, A Structured Computer Organization, 5th ed Prentice Hall, 2006

Patt, Y and Patel, S Introduction to Computing Systems: From Bits and Gates to C and Beyond, 2nd ed. McGraw Hill, 2004

Null, L and Lobur, J The Essentials of Computer Organization and Architecture, 2nd ed Jones and Bartlett Publishers, 2006

Wow, this is an incredible list. I think this is probably the best first step, and some of the other excellent responses I've got here would be a step two or three. I really appreciate you taking the time to provide these suggestions.
SICP might be a good programming book, but I'm not sure it's a good book. If your friend doesn't have programming experience something like "Code: The Hidden Language of Computer Hardware and Software" might be an easier way to start. Here is the first paragraph from each for comparison:

SICP: "We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells."

Code: "You're 10 years old. Your best friend lives across the street. In fact, the windows of your bedrooms face each other. Every night, after your parents have declared bedtime at the usual indecently early hour, you still need to exchange thoughts, observations, secrets, gossip, jokes, and dreams. No one can blame you. After all, the impulse to communicate is one of the most human of traits."

I don't think the prison superintendent will enjoy that last paragraph.
I cannot say I agree that the list of books provided by llamaz is good. The suggestions given so far are college-level CS textbooks (like SICP) and may be too difficult to start with for somebody without the necessary background knowledge. Unless your friend was already a college student in a CS program, I would recommend looking for books and instructional materials targeted at the high-school level instead.

Also bear in mind that without access to a computer or external tutelage, it's going to be very difficult for your friend to know whether or not his code is working properly. Stratoscope's suggestion of hand execution (https://news.ycombinator.com/item?id=12668865) is a good suggestion to help combat this issue. However, this means most likely that your friend will need to start with a language that's simple in structure; this disqualifies most modern languages. BASIC, Pascal, C or other extremely simple languages will be most amenable to this type of hand execution.

SICP is an introductory text, and is usually taught to first-year undergraduates. We don't even know what sort of educational background this friend has, but if he can do algebra, then he'll be able to do the exercises in the first chapter and check his answers. Furthermore, because Scheme uses the substitution model, doing the exercises on paper is possible. It'll take care and attention to detail, but every Scheme expression can be expanded and reduced according to simple rules, just like in algebra. The same cannot be said for most other languages.
SICP is perfect for studying without a computer. I've done it that way and it was a great experience. However, while it is presented as an introductory textbook, it moves fast. It depends on the learner.
Hmm. The pages move only as fast as you turn them :)

It's probably safe say that it's more concise than others that I have read. A sentence in SICP could become a paragraph in a lesser book.

Right. In a classroom with lots of bright students and lectures and Q&A it works great. With access to supplemental online resources also great. With none of that I think it would depend on the student and their patience, aptitude, and background.
Given that the person is in prison, it seems rather improbable that s/he was on a course to be a first-year undergraduate or is particularly familiar with algebra. The average person doesn't know algebra all that well, you know.

Frankly, I do not understand the people who are attempting to push CS textbooks on this person. The original question does not contain the words "computer science" anywhere within it.

SICP is entirely focused on the practical aspects of programming. There's nothing in there about the halting problem, or the Church-Turing thesis. The discussion of run-time and space requirements divides everything into constant time/space and everything else. That's useful for figuring out when your recursive procedure evolves a process that needs only constant stack space. There's no study of algorithms or data structures (well, there's simple lists and tagged data, but no b-trees, red-black trees, etc).
The Little Schemer, found the style delightful.
I have worked through SICP, and strongly recommend not using a computer for any of the exercises, at least until the large scale projects in the later chapters. This would be the perfect recommendation for someone who only has pencil and paper. However it is a bit intimidating if not impossible for a true newcomer without access to external resources and help. But with enough time and effort...
I have no idea about prison security and how things work, but are there programmable gadgets that are allowed inside? Ie. something that is really a computer inside but doesn't qualify as a proper computer when it comes to the rules. Some pocket tetris or similar game that could be hacked to run some kind of programming environment? Some old computing gadget that runs a basic interpreter? Edit: TI calculator mentioned by someone is an excellent idea if it passes the rules.

Apart from that... reading books and solving programming puzzles might be a good way. Something that has a feedback loop, which you won't have in the normal way without a computer at hand.

I must take my hat off for this kind of determination! I hope it provides your friend with a way out and they have a better life ahead of them.

Unfortunately there is nothing close to that allowed; thanks for the thought though. I'd love to see someone implement a product that would allow people in this scenario to learn.
If your friend has free time, he may also enjoy _Code_ by Charles Petzold. It's a layman-oriented explanation of how computers work.

Is he in state or federal prison? Are there no classes available that could give him access to a computer?

Thanks for the book suggestion! He is in state prison, and there are some courses but nothing to do with programming. To make matters worse, due to having any form of external support structure, he is categorized as a "low risk" of recidivism, and high risk people are given preferential treatment toward enrolling in classes. I don't disagree with this in theory. But unfortunately due to overcrowding, this means that ONLY high risk people are getting to do classes, so he's on his own. Thanks for the response!
Agree with all the CS Basics book (would add the Code: The Hidden Language of Computer Hardware and Software, great book and if he has time, I'd go for it). I'd also consider giving him a couple of books, like: A) Clean Code by Bob Martin, B) Soft Skills by Jon Sonmez. Books that doesn't require a computer, yet teach the reader how a good developer should think while writing code and working in a team. It's also less likely he gets stuck while reading this kind of literature.

Would help if you shared the end goal. Get hired anywhere? Get hired by Top 4 Tech Company or Hot Startup of the Year? Start a business? Don't get bored? How long is he going to be incarcerated?

I would greatly appreciate if you shared your experience.

I came across CS unplugged a while ago. Looks like it might be useful http://csunplugged.org/
I have to heavily stress the appropriateness of Computer Science Unplugged. While technically oriented toward younger students, it's absolutely appropriate for an older adult learner without a computer. If he can learn the material in CS Unplugged front and back, and understand it perfectly, he'll be very well placed for starting a career in programming when he gets out. Many programmer interviews are based on the materials that this book covers.

And it's just a book, and all exercises in it can (and should) be done with no computer.

Once he works through this, send him a copy of SICP: https://mitpress.mit.edu/sicp/ Covers some of the same material at a much higher level, and more.

This is the most comprehensive way to get it done. It's even useful to adults and really serves to understand the fundamentals of computer science
I'm reminded of one of Neil Fraser's blog entries "CS by Mail" https://neil.fraser.name/news/2015/04/13/, in which he received mail from someone inquiring how he could learn programming in prison and Neil recommended CS Unplugged. I wonder if that worked out.
There are some good theoretical computer science (sciency) books out there. I would recommend two of my favourites:

Gary William Flake: Computational Beauty of Nature

Douglas Hofstadter: Godel Escher Bach

They won't make you a programmer ready for a job at Facebook; but they will entertain the part of your head that makes you a good programmer.

The two books are also very well written and quite entertaining which give you the motivation you miss if you cannot try things out on your own.

Other than that: Study math at any level.

What is the most capable programmable device, that would not be considered a computer by the rules? How about a graphical calculator like a TI-83?

While I was stuck in school and did not have access to a computer, I wanted to challenge myself during classes. The most interesting distraction by far was to play around with the programming functions of my TI-82 calculator that was required for math classes. Even with almost no idea about programming I could soon do interesting things with it, because it is programmed using a version of BASIC. In the end I even created a clone of snake. It worked, but moving one block ahead would take 2 seconds.

A graphical calculator is an excellent idea if it is allowed by the rules!

I also did programming with my TI calculators back in school.

I don't get why people continue to recommend TI-83s. I showed up to Algebra II with an 85, but 83s were weirdly prevalent until calculus "strongly recommended" TI-89s.

In this context, the 83 is an awful, awful choice, because TI-83 programs only allow for variable names to be one character long. I was lucky, when someone asked me to copy my TI-85 blackjack program into their TI-83, that I had used less than 28 variables.

True, though you could also create lists freely. I remember writing an artillery game (using the equations learned in our physics class!) and storing the player information in a list each.
I've never used a TI-85 or 86. From what I remember, we were told that an 83 or 89 had some particular feature that the 86 lacked (apparently some statistics functions, or something?) People are more likely to recommend based on what they know, and with school recommendations being what they've been, more people know the 83/84. I was envious of my friend's 89, but my parents wouldn't pay the higher cost.
> People are more likely to recommend based on what they know

True, but very sad. I am given to understand, from an HN thread months ago, that the state of the art in school graphing calculators now is the HP Prime. But that never even gets mentioned in recommendations, because no one's ever heard of it. (And there's very little incentive to learn what to recommend, because the only value of a graphing calculator is that it's permitted on standardized tests -- the HP Prime is $165; the HP Prime software for your Android phone is $10.)

> I was envious of my friend's 89, but my parents wouldn't pay the higher cost.

Also sad. I read the manual for my TI-85 cover to cover; it taught me about polar coordinates and euclidean vectors before my school covered them. For a child interested in math, these calculators can be wonderful.

The 85 was okay, but the 89 was much harder to program without the aid of the computer-based IDE.
Hint: if you use more than 28 variables, you can still put some in matrices. (Naming is still awful, though).
> In the end I even created a clone of snake. It worked, but moving one block ahead would take 2 seconds.

Nice! I ended up creating a Minesweeper clone. I remember the program being really long, and really annoying to write without having access to actual recursion.

The first programs I wrote were written in TI-82 basic language. It's possible to create simple interactive text prompt UI and even Gameboy-like GUI programs. Since the TI-82 memory didn't survive battery replacement, I'd "save" programs by transcribing them on to paper. Since memory was limited, it became a fun challenge to find concise ways to write programs.
Hey! This is a topic I'm interested in, too. If you'd like brainstorming on the idea, drop me a line. My email is in profile.

My first thoughts:

- iterate more quickly by experimenting with non-computer users who aren't in prison, as letters/email to a prisoner will have a slower feedback loop

- learn what people consider to be more fun, and and try to structure lessons within that

- see if there are some existing resources that are close to, but not exactly like, programming without a computer

- set up an open source curriculum on GitHub, so people besides yourself can contribute

Any possibility of a higher-end TI or an old HP calculator?
I remember that the book "Feynman's Lectures on Computation" has some excellent descriptions of basic computing models (FSMs, Turing machines, ...) as well as interesting exercises in constructing "programs" using those models. It may not be as practical as he/you are looking for, but I think it might be a great choice because it does an amazing job explaining the basic theory of computation and the "programs" called for in the exercises can be easily run by hand, on paper.

It might be a good place to start, at the very least. But it will only appeal to a certain sort of person.

Writing pseudo-code on paper by making use of data-structures would set his aptitude levels. Its like building right muscles and reflexes for a sport. Books like this will help (Cracking coding interview) - https://goo.gl/jSUylb

One of the key things to also understand here is - what is missed out in this type of training. Tools. Tools. Tools.

As developers we have come far away from limited IDEs. We rely on so many tools that knowing-they-exist or sometimes mastering them is difference between good-or-bad devs. I would recommend to read printed material about IDEs, screen shots of tools.

Couple of other things I have found really helpful: * I had underestimated Medium as a platform to rely for tech news till lately. There is so much of latest developer/platform news and articles. Print outs of these definitely help. * Stackshare posts (http://stackshare.io/featured-posts) on what stacks/tools companies use (and how) are eye opening to say the least. Print outs of this.

On a CS-theory level, there's a fair amount of stuff he can learn in terms of just "thinking", but it won't come very close to being able to putz around with code and watch it fail.

Suggestions for absolutely no computers:

* CLRS, the classic. (I just skimmed the intro, though, and if he has no background in uni-level maths, it might be a little tough to digest.)

* (maybe) the Head First series (as someone else suggested). I'm wary of suggesting it not just because I have no experience with the books (I only even mention it because I know they're ubiquitous), but also because bad habits are formed early, and this could do that.

* Patterson and Hennessy - Computer Organization and Design (5d.)

* Sebesta - Concepts of Programming Languages (11d.) (but only after finishing some of CLRS, and even then I don't know how appropriate this is)

=====

What kind of experience did he have with computers before he went in?

Depending, you may be able to make recommendations about stuff relevant to what he's used.

=====

Can you get him something like a TI-84? Because even that will at least allow him to go in and write TI-BASIC.

It also occurs to me that something like Bruce Tognazzini's Tog on Design may be very applicable to thinking about UI/UX if he only went in recently. (Not strictly programming, but very relevant.)