• OK, it's on.
  • Please note that many, many Email Addresses used for spam, are not accepted at registration. Select a respectable Free email.
  • Done now. Domine miserere nobis.

Programming: INTP ingenuity

Matt1210

Redshirt
Local time
Today 6:13 AM
Joined
Feb 24, 2015
Messages
16
---
Location
UK
Hi all, I've seen that programming is often recommended here as a great career for INTPs.
The "hook" seems to be that you are refining/adapting systems (Ti) and often inventing new ones from scratch (Ne).

Could the programmers here give examples of how they have used their "INTP ingenuity" on everyday work projects? So specifically what you did in your code (albeit in layman's terms) that revealed incisive and "tidy" thinking, and gave you a sense of accomplishment as a result.

The ideal example/ case study would not only be pretty specific but also quite mundane, i.e. a small victory, of which you might have at least one a day, (so leading to more sustained job satisfaction).

Me, I'm a lawyer thinking about a change of career. It would really help to know what programmers do at a detailed level, albeit paraphrased for those without the technical knowledge.

Thanks in advance for any thoughts.
 

Architect

Professional INTP
Local time
Yesterday 11:13 PM
Joined
Dec 25, 2010
Messages
6,691
---
It's finding the perfect system as a solution to a problem. It's analyzing all the data; user needs, technical limitations, business requirements, and yes my personal interests; at the intersection of that data and more exists a solution. I love finding that.

When actually developing the solution there are many opportunities for specific solutions and ideas from experience; much of the time about system efficiency and clarity, and data handling is usually a major concern.

For example, a big customer offered us some millions to give them access to our goods. The ISTJ came up with a boring, standard API solution. I invented a new language and IDE that could also be sold to others, and let us keep secure and total control over the system. It's so revolutionary in our market that we haven't yet found a second customer as marketing can't really handle it; my boss said its 10 years ahead of its time. I had a lot of fun. In the design the key pattern turned out to be reflection, with that insight I was able to trivially create the API in my domain specific language.
 

Architect

Professional INTP
Local time
Yesterday 11:13 PM
Joined
Dec 25, 2010
Messages
6,691
---
There's also this

Coder's High

Programming is just like drugs, except the dealer pays you.

These days I write more than I code, but one of the things I miss about programming is the coder’s high: those times when, for hours on end, I would lock my vision straight at the computer screen, trance out, and become a human-machine hybrid zipping through the virtual architecture that my co-workers and I were building. Hunger, thirst, sleepiness, and even pain all faded away while I was staring at the screen, thinking and typing, until I’d reach the point of exhaustion and it would come crashing down on me.

It was good for me, too. Coding had a smoothing, calming effect on my psyche, what I imagine meditation does to you if you master it.

You could look at the work as being in two parts; first the highly cerebral and creative architecture and design. This is canonically the most enjoyable for the INTP psyche, it really is like legal drugs. Second is the implementation, which is much like the former part, but obviously more in the trees rather than the forest.

So once all the decisions have been made and you have a design, you need to create it. And I strongly recommend that no INTP shirks this work. I had a job once as a lead architect who who could create the architecture for minions to implement (it was officially my job). Bad idea! It ended in personal disaster, the only time I ever got demoted (unofficially in that I didn't lose rank or whatever, I 'stepped aside for personal reasons' kind of thing).

We need to eat our own dog food and stay grounded, and we need to do boots on the ground kind of work. Fortunately what this article describes is what makes it almost (but not quite) as good as the design part. There are still a thousand important design decisions to be made. And I find that when I've been on myself (don't let myself slide), get a full day of work in, I sleep better, am happier/more content and experience greater fulfillment.

I've found - and my son has too - that the biggest daemon is our Ne which wants distraction. After many years I've found the best cure is to simply listen to music. Anything without words (in English) - being a musician I listen to classical music. German lieder (for example) is no problem because despite speaking some Germany my brain doesn't attach to it. Anyhow it drowns out other noise and helps keep me focused, with the added bonus that I'm spending thousands of hours listening to the classical music Canon. If it has words then it distracts me from the work.
 

manishboy

Member
Local time
Today 6:13 AM
Joined
Feb 7, 2014
Messages
88
---
Location
Northern California
The architect hit it on the head. Domain-specific languages are the most satisfying aspect of coding because they require a leap from the nuts and bolts of some domain to suddenly seeing widgets that weren't there before. Actually, all coding aspires to the same sort of leap. DSLs are so much fun that I do them for fun. Years ago I created a DSL to express feedback relationships, such as you might get when describing the relationship between predators and prey. This year I did one to express simulation models of queues, such as you might get when waiting in line at the grocery. But it also finds a place in more mundane jobs.

For example, with predators and prey, you could do it like this:

deer = 50
wolves = 10

while deer > 0
do some population adjustments...

As you can see, you're working at a low level, using a simple variable for population. But you can work at a level closer to that of natural phenomenon, like this:

initialize 'population' of 'deer' with 50
initialize 'population' of 'wolves' with 10

interact 'wolves' and 'deer' so long as 'deer' is viable

and so on...

Now the populations are represented with a richer structure, whatever that may be it's probably more complex than a simple variable, and we're starting to express the problem in a more natural way.

Mundane example: I was tasked once with building a javascript application that takes user inputs from an intricate form and does some number crunching and spits out results. Rather than take the nuts-and-bolts approach, whereby I would create many blocks of logic to directly carry out the calculations, I took the widgets approach, and created something like a new tiny language that would allow me (and any future programmer) to "speak" the language of this particular domain. Similar to the previous example.

The project was very simple, potentially very boring, taking no more than a day or so, and I don't think anyone cared what the design was like so long as it was solid. Taking the time to conjure up a new syntax that fit this domain and this task made the whole thing worth the effort. It's like the difference between carpentry joining with nails and with custom hardware-free join work. Both make the join solid, but the latter is more elegant and longer lasting because it literally and figuratively fits.

Programming is about taking the fundamental constructs provided by languages, libraries and platforms and building new constructs. I imagine you have similar experiences in law. If a client wanted a contract written up, you could go nuts-and-bolts and use standard templates revised in standard ways, or you could think carefully of what the client really needs and then come up with a (modestly) new instrument. Maybe not, I have no clue.

But there's only one way you're going to know what programmers do at a detailed level--do it yourself! Sounds like you've been a lawyer for quite a while. You don't have to jump ship. Take a class or learn the basics online. None of this will really make sense until you start messing with abstractions.
 

Matt1210

Redshirt
Local time
Today 6:13 AM
Joined
Feb 24, 2015
Messages
16
---
Location
UK
The architect hit it on the head. Domain-specific languages are the most satisfying aspect of coding because they require a leap from the nuts and bolts of some domain to suddenly seeing widgets that weren't there before. Actually, all coding aspires to the same sort of leap. DSLs are so much fun that I do them for fun. Years ago I created a DSL to express feedback relationships, such as you might get when describing the relationship between predators and prey. This year I did one to express simulation models of queues, such as you might get when waiting in line at the grocery. But it also finds a place in more mundane jobs.

For example, with predators and prey, you could do it like this:



As you can see, you're working at a low level, using a simple variable for population. But you can work at a level closer to that of natural phenomenon, like this:



Now the populations are represented with a richer structure, whatever that may be it's probably more complex than a simple variable, and we're starting to express the problem in a more natural way.

Mundane example: I was tasked once with building a javascript application that takes user inputs from an intricate form and does some number crunching and spits out results. Rather than take the nuts-and-bolts approach, whereby I would create many blocks of logic to directly carry out the calculations, I took the widgets approach, and created something like a new tiny language that would allow me (and any future programmer) to "speak" the language of this particular domain. Similar to the previous example.

The project was very simple, potentially very boring, taking no more than a day or so, and I don't think anyone cared what the design was like so long as it was solid. Taking the time to conjure up a new syntax that fit this domain and this task made the whole thing worth the effort. It's like the difference between carpentry joining with nails and with custom hardware-free join work. Both make the join solid, but the latter is more elegant and longer lasting because it literally and figuratively fits.

Programming is about taking the fundamental constructs provided by languages, libraries and platforms and building new constructs. I imagine you have similar experiences in law. If a client wanted a contract written up, you could go nuts-and-bolts and use standard templates revised in standard ways, or you could think carefully of what the client really needs and then come up with a (modestly) new instrument. Maybe not, I have no clue.

But there's only one way you're going to know what programmers do at a detailed level--do it yourself! Sounds like you've been a lawyer for quite a while. You don't have to jump ship. Take a class or learn the basics online. None of this will really make sense until you start messing with abstractions.
Thanks so much Architect and Manishboy for the really helpful insights.
I started an online course recently, and am really keen to witness the problem solving aspect at work in the real world.

The "inventing a new language" processes you both describe sound really intriguing.

Could you possibly expand slightly by picking out one single elegant feature of the language you created and how exactly it trumped the more standard approach in practice?

Manishboy, you're right about more or less"tailored"approaches to legal work.

I work in family law where a big part is tailoring delivery of advice to suit a client's emotional state. Not really the intp forte. Plus there's the heavy project management aspect across many simultaneous projects/ clients ... and you can probably see why I'm looking at other careers!

Thank you so much again.
 

Architect

Professional INTP
Local time
Yesterday 11:13 PM
Joined
Dec 25, 2010
Messages
6,691
---
It's called making DSL's - Domain Specific Languages. Just one of thousands of sub areas which you can explore and develop some expertise in. DSL's is simply tailoring a custom language to the specific domain it is used in, thus facilitating doing some kind of work. A feature of mine was parsimonious, being a compiled script language I didn't want the programs needed to do work to get large for various reasons. So with this all that was needed was a few lines of code to have a real GUI application in this custom environment.

It's interesting, you're approaching this like a lawyer. Reminds of when I was interviewed by the head of MajorCorp about some stuff I worked on - the same kind of careful question asking. Which I'm not sure is going to tell you what you need.

Certainly the field is fascinating. Primarily about data, form (architecture) and above all problem solving. Whether you like it or not is less that, than the specific working conditions you find yourself in. Who you work with, what you're working with, is the group making lots of money (happy engineers) or not (sad engineers) And like everything in life you have high and lows, sometimes I struggle with my work, sometimes fly, usually am interested, sometimes am bored. But I think it's probably the optimal work for an INTP, all else being equal.

The biggest challenge I think would be the changeover, starting over from one profession to another in your 30's or 40's (presumably) will be the difficulty.
 

manishboy

Member
Local time
Today 6:13 AM
Joined
Feb 7, 2014
Messages
88
---
Location
Northern California
I agree with the architect that your line of inquiry may be a bit too detached. Programming is a contact sport, and one in which I'm not usually trying to trump a standard approach but only to strike a balance between rigor and economy. I'm not exactly sure how to better explain the notion of playing with abstractions that programming allows (and demands). If you've already started a course, feel free to post specific exercises and your responses to them. Might be easier to point out the basic issues that way. It's a contact sport!

Your legal training has given you a sense of caution which might be the major hinderance in learning to code. Coding is popularly associated with the ethos of "the hacker" for good reason. It's about making things work by making things that don't work and working on them until they do work. The legal ethos seems to be the exact opposite--get it right the first time or there'll be hell to pay! So jump in and then you'll know for yourself about creating new languages (or whatever else you'd like to do).

Aside from code, have you considered doing something at the intersection of software and law? I work for a large-ish company and the legal department has a contingent of business analysts, project managers, and developers all dedicated to setting up and tweaking their legal information systems. When it's about things like protecting patents, such systems may be part of its competitive advantage. Having a legal background coupled with computer systems training might be a good fit for these sorts of organizations. Learning to program would be a good foundation from which to build the technical skills to leverage your legal training in such an environment. Just a thought.
 

Matt1210

Redshirt
Local time
Today 6:13 AM
Joined
Feb 24, 2015
Messages
16
---
Location
UK
I agree with the architect that your line of inquiry may be a bit too detached. Programming is a contact sport, and one in which I'm not usually trying to trump a standard approach but only to strike a balance between rigor and economy. I'm not exactly sure how to better explain the notion of playing with abstractions that programming allows (and demands). If you've already started a course, feel free to post specific exercises and your responses to them. Might be easier to point out the basic issues that way. It's a contact sport!

Your legal training has given you a sense of caution which might be the major hinderance in learning to code. Coding is popularly associated with the ethos of "the hacker" for good reason. It's about making things work by making things that don't work and working on them until they do work. The legal ethos seems to be the exact opposite--get it right the first time or there'll be hell to pay! So jump in and then you'll know for yourself about creating new languages (or whatever else you'd like to do).

Aside from code, have you considered doing something at the intersection of software and law? I work for a large-ish company and the legal department has a contingent of business analysts, project managers, and developers all dedicated to setting up and tweaking their legal information systems. When it's about things like protecting patents, such systems may be part of its competitive advantage. Having a legal background coupled with computer systems training might be a good fit for these sorts of organizations. Learning to program would be a good foundation from which to build the technical skills to leverage your legal training in such an environment. Just a thought.
Many thanks again Architect and Manishboy for the very helpful answers.

In that case I think the way forward for a real taste will be to try and get into some sort of case studies / projects, albeit beginner level.

Thank you also Manishboy for the very generous offer of help re corrections.

One thing I might do, if it's of interest to any other beginners, is turn this thread into a sort of mini blog of the journey - hopefully picking out the sorts of conundrums that will get other newbies' juices flowing.
 

Matt1210

Redshirt
Local time
Today 6:13 AM
Joined
Feb 24, 2015
Messages
16
---
Location
UK
By the way Manishboy - I will definitely investigate the intersection between law and programming - sounds like it could be very interesting. Thank you for suggestion.
 

Matt1210

Redshirt
Local time
Today 6:13 AM
Joined
Feb 24, 2015
Messages
16
---
Location
UK
Computer generated contracts etc certainly seem to be where things are headed, albeit DIY wills have been around for a while.

As I understand it this sort of machine intelligence is "brute force" in nature. Ie the programmer anticipates and provides for every possible outcome. Accordingly I believe smart contracts etc aren't used for very complex arrangements, where there's more likely a real-life element upsetting play.

I'd suspect that in future, smart contracts will become smarter in line with computers' ability to be 'smart' rather than programmers' ability to add more outcomes to their templates. Any thoughts?
 

Architect

Professional INTP
Local time
Yesterday 11:13 PM
Joined
Dec 25, 2010
Messages
6,691
---
As I understand it this sort of machine intelligence is "brute force" in nature. Ie the programmer anticipates and provides for every possible outcome.

Nope, that was 1970's tech, 'expert systems'. Didn't work too tell, because people got bored programming the systems, or were bad at knowing all the rules.

I'd suspect that in future, smart contracts will become smarter in line with computers' ability to be 'smart' rather than programmers' ability to add more outcomes to their templates. Any thoughts?

Yup. The technology is here today, but probably nobody has the time/interest to work legal applications of it - yet.
 

Analyzer

Hide thy life
Local time
Yesterday 10:13 PM
Joined
Aug 23, 2012
Messages
1,241
---
Location
West
Yup. The technology is here today, but probably nobody has the time/interest to work legal applications of it - yet.

Yeah. Well there's ethereum, their trying to be a platform for people to build off of.

Not sure what to think of it yet and don't fully understand how it can work. You would have to bypass certain systems already in place. Seems like something that needs broader appeal for it to be effective.
 

Architect

Professional INTP
Local time
Yesterday 11:13 PM
Joined
Dec 25, 2010
Messages
6,691
---
Yeah. Well there's ethereum, their trying to be a platform for people to build off of.

Brilliant, thanks for the link.

I knew there must be some reason I come to this forum.
 

Matt1210

Redshirt
Local time
Today 6:13 AM
Joined
Feb 24, 2015
Messages
16
---
Location
UK
The biggest challenge I think would be the changeover, starting over from one profession to another in your 30's or 40's (presumably) will be the difficulty.

Just to pick up on this point, do you think it's realistically achievable for a late thirties person to gain enough coding skills to get employment after say 3-4 years of home study?

I'm also wondering if there is likely to be enough work out there and if the competition will end up being be too strong to get a job anyway.
 

FlorisV

Member
Local time
Today 6:13 AM
Joined
Jun 27, 2015
Messages
91
---
Location
Utrecht, Netherlands
Hi all, I've seen that programming is often recommended here as a great career for INTPs.
The "hook" seems to be that you are refining/adapting systems (Ti) and often inventing new ones from scratch (Ne).

Could the programmers here give examples of how they have used their "INTP ingenuity" on everyday work projects? So specifically what you did in your code (albeit in layman's terms) that revealed incisive and "tidy" thinking, and gave you a sense of accomplishment as a result.

The ideal example/ case study would not only be pretty specific but also quite mundane, i.e. a small victory, of which you might have at least one a day, (so leading to more sustained job satisfaction).

Me, I'm a lawyer thinking about a change of career. It would really help to know what programmers do at a detailed level, albeit paraphrased for those without the technical knowledge.

Thanks in advance for any thoughts.

Former tax lawyer here and I became much happier in information technology.

My answer will however not meet with your expectation.

The odd thing is that I can be quite sloppy! And do a lot of things "on the fly" with little technical design desicions beforehand. So I do spend plenty of time solving self-created problems. I am not the most experienced programmer by far. I am not the most technical person in the world nor do I want to be, more of a generalist.

My main design principle: "whatever works" (performance included!) ;-).

My best examples of INTP ingenuity probably lie outside programming. But I am surprised at how often I can add new stuff or solve new problems on my own. People on the outside always think in the traditional sense, that you always need help, but with programming, it's very DIY and I love this. Most recently I took multiple code examples for an animation and I pretty much never want to copy past the whole thing because it bores me, so I took only the bits I thought I would really need and then tested if it worked. Took quite some trial and error, thinking and adjusting code, but eventually I nailed it while still deviating from the example. I think this is typical INTP it just feels to slave-like and boring to copy paste stuff, you want things to work the way you have in your mind rather than stick to other people's principles ;-).
 
Top Bottom