From Business Guy to Programmer
spencerfry.com
spencerfry.com
Understand that you may need to start slow, and you'll fight a lot of bugs. Every few weeks, you'll seem to have a epiphany where "stuff makes more sense." Take pride in those moments and seek them out. They're addicting as hell.
The moments will be small at first. Working through an error message, reliably using methods for the first time, figuring out how to prank your friends (personally, this is a major non-financial/career fulfillment reason for learning to code). Tell people about them, though it may be a little embarrassing to say you fixed a typo after a hour long headache.
Then the epiphanies will get more substantial. Building a login system. Debugging an email notifier. Figuring out you don't need rails scaffolding anymore. Figuring out how to push more logic into the model and out of the controller. Integrating some no-nonsense libraries and APIs. Tell your friends about these -- you're earned it. Those first few hair-tearing periods were you paying your dues.
Some point along the way, you'll start to see problems differently. You'll see solutions instead.
I've always felt these moments were the equivalent of the "language dreams" my old foreign language profs would talk about. When studying a new language, you'll eventually have a dream where you converse in your studied language and you know what's going on. When you start to see solutions in code, no matter how technically skilled you are, you know you've reached a similar tipping point.
[1] http://stackoverflow.com/questions/2397141/how-to-initialize...
Contrast this to other fields that have a steep utility curve (novice aerospace engineering?) or diminishing returns (accounting).
My thoughts: ship product fast and make a lot of mistakes
Language? If you are learning RoR: Zed Shaw's LCTHW and Hartl's Rails Tutorial are great. Learn to Program by Chris Pine is also a good starting point for syntax, but focus on pair programming (where the real learning happens)
I would be seriously psyched to pair with a motivated total "noob" because I remember how exhilarating the first few years are, and how great it is to have your mind blown weekly or monthly by some subtle concept.
is it confusing to anyone else which of those are public when looking at the edit form?
I'm in LA but would love to hear how you would approach pairing up to work with a 'noob' like me. I'm bobby.matson [a] gmail
Point is, it would be cool to have more chances. Even unpaid gigs or below decency pay could help. But nothing of this around. Especially because it should be remote. Hope somebody fixes this, if there is really a shortage of programmers I mean.
It has to be remote as I live in a small city in Germany. I can't move out as I need my job. I don't live my job as I have no idea if start ups would be for me (that's why a remote work would be nice too, to get to know what the job is...). But I noticed I get programming fast, so that's why I always look for a chance to prove myself in there, maybe finance is not for me after all, who knows.
My assumption, based on nothing, has been that a person in my shoes would be more likely to interfere than anything else.
I am curious to hear if those with experience feel differently. Beyond wanting to help someone out, etc. are there other motivations for someone with experience to want to do this?
Thanks for that simplification
When you are product/marketing/sales person, you typically work for a while, aren't sure if what you are doing is correct or optimal, maybe find out later it did or didn't work, and then you have to do it again and again and again.
So, to make the transition, you have to get comfortable with the uncertainty inherent in business activities. To put it another way: You'll "fail" far more frequently in business than in programming, and the causes of your failure will be far less obvious.
This absolutely extends into technical writing. Have you ever read horrible specs? :) They're time wasters, frustrating, and almost insulting. If you care about your audience, and I mean really care, you'll produce damn good specs.
The easiest way to move into business is to realise that you will need to understand the business. This is not some nebulous Zen crap I'm pulling here, but a fact. If all you've ever done is work for a blue chip software company then it's likely that your only "experience" with "users" are those you sell your software or services to: in most businesses your users are the ones you write internal software for.
Moving into it can be as simple as asking for training and a transfer to another department or business area (if you work in big corp) or simply involving yourself in the day-to-day workings of your users. If you show a genuine interest in learning how they do their work you can use your existing IT skills and your honed, technical mind to making their lives easier.
You'll be surprised by just how utterly inefficient most things are. Fixing these deficiencies range from yanking data from crufty Excel spreadsheets on network drives into a proper database or munging crap data or other sort of automation tasks.
The only real way to learn a business, aside from domain areas like finance where you're as likely to receive in-house training, is to sit next to them and help them do their jobs.
(Sneaky Ninja edit: Your line manager may hate that you're leaving as he's losing a developer, but the business may well end up loving you even more. You're no longer a cost centre but you're actually improving the business.)
Business guy means taking risk, being persistant, able to sell and to network. That's it.
Taking risk doesn't make you a good at business. In fact, quite the opposite. Great businessmen are experts at limiting their risk and identifying and acting on high risk-to-reward opportunities.
One of the reasons so many businesses fail is the misguided notion that you "must" take a lot of risk to start a business. So people take out a lot of debt / make risky decisions because they believe it's just part of the whole process. I think the best way to start a business and excel is to limit your risk and bootstrap as much as possible.
However, I do agree with you on the other three... ;-)
But I believe that 'risk' is a highly relative term. Spending three months on a new idea and investing lets say 3,000 USD on this idea is ...
1. for the average employed office drone a huge risk (at least that's how he feels about it=>different value system)
2. for a first time entrepreneur a risk (and objectively higher than for 1 because this guy doesn't have any incom)
3. for a experienced entrepreneur its daily business and no risk at all
The principle is just don't go all in but keep on doing and risking.
For business guys: a good place to start is to gain a deep understanding of how the app is built. At the core it is not much different than that financial model you had built. It’s just written in a different 'language'. Start today: have in depth conversations with your developers, understand how each element interacts (more detailed is better). Learn what the developers are struggling with, and try to solve those problems with them. Sometimes, you will pin point the source of the problem before they do. That’s a good feeling. If and when you decide to learn the language, this experience would be massively helpful.
For programmers wanting to learn the business aspects: The key lies in developing a good hypothesis, and in constantly refining it based on what you hear from the customers, competitors, market, investors, etc. Approach it like coding; each hypothesis element is an object - it takes in some inputs and throws some output. Check whether all elements are mutually exclusive and collectively exhaustive. The process is not too different from developing that app. Just make sure to not get caught in the details. Question everything constantly - is this the most important thing and how. And yes, you will get by wonderfully well if you ask others, nicely.
While I recognize that there are probably ways to improve the business-side utility of a 'business guy' (or gal) who feels 'useless' at times, that's not something I am as qualified to help them fix. Furthermore, I'm always heartened by someone who is interested in learning programming, as opposed to not caring that they don't know what an API is or what MVC means, or even pertains to.
I've been a designer all my professional life and belonged to the find-a-developer-for-idea-X category. I've been lucky to have had the help of really good tech friends but it never felt right. It's like sculpting with a proxy. A part of me yearns to feel the plaster and chisels with my own hands. So like you I just did it.
I launched http://mocku.ps/ a few months ago, by putting together everything I learned from books and tutorials, asking on Stack Overflow, trial and error and sleepless nights hunched over my code editor. I almost permanently pissed off my wife.
Craving more now I'm on to my next project http://paperi.st/. It feels great to be able to produce what's in your mind by yourself.
The best way to learn is by making things. Many of my friends that have been interested in learning to program and started using resources like codeacadmey or the w3schools tutorials have ended up discouraged. I think they assumed that those resources were designed such that you'd be a programmer as soon as you diligently completed each lesson. My friends that assumed that ended up bored and moved on to other things.
It's best to follow your curiosity. Work on projects even if other people are out there doing the same thing better. I view everything as a learning project. My first projects were http://roommater.us and http://essayr.com.
More often than not, at least in my experience, they also tend to learn design. Maybie not to the specialist level, but to be able to talk to them, coordinate with them, and to get the 'feel' and articulate the vision of a system.
What exactly are you afraid of?
I, personally, think coding is a very important skill to have that can help you achieve many new things, in pretty much any field. I'm interested to hear exactly why you'd be worried otherwise.
Bill Gates (I believe), talked about the hardest role to fill in a company is someone who is able to bridge the business side of things with the technical side of things. Coming from a business side first, you have a shot at being that guy.
There's a lot of noise now about how everyone should learn to program. I don't think that's the case. It helps to be technologically literate (have a general idea of what people are talking about and what's actually possible), but actually programming isn't a necessity. It really depends on what you want to do. I haven't met anyone yet who regrets learning to code. The problem solving abilities you build when learning to code can help in a lot of other areas. It's a time investment, but you'd be amazed what you can pick up from an hour a day of consistent and focused learning/practice.
Please post it here. I'd love to read that. And specially, share it with the business guys I know :)
I wrote two articles about the specific things I did at Carbonmade as the CEO:
http://spencerfry.com/whats-a-non-programmer-to-do (This was actually based on a 1,000 day old Hacker News comment of mine: http://news.ycombinator.com/item?id=779378)
I know "business guys" take a lot of shit on programming-oriented forums like this one, but as a technical guy myself, I found your post invaluable in understanding what "the other half" do. And having recently done some big launches (not quite a startup), I viscerally understand how important that stuff is, despite most engineers' derision.
Thanks for the posts, and best of luck with learning to program!