Learning To Code
Christina Cacioppo, who spent a few years with USV in our analyst program, spent the next two years after leaving USV teaching herself to code and making a bunch of products herself and with a few colleagues.
She recently wrote a post outlining her learnings from that experience. It’s good. For anyone who is teaching themselves to code or thinking about doing so, I highly recommend reading this.
I think it’s great. I’m also trying to teach myself how to code (Ruby on Rails to quickly be able to prototype) and it can be very rewarding sometimes, but also frustrating. Having people share their experience is helpful and knowing that they did it and succeeded is motivating.
Are you starting with Ruby on Rails? No other coding experience?
I know HTML, CSS. Then started with Ruby and now want to try RoR to learn how to build web apps.
Keep up the good work, Robert. I’ve been programming most of my life but constantly learn new languages. Ruby is a great early language because it allows you to focus on a thing or two and then move onto a thing or two more. Take the easy way out as often as you can, but write it down and come back to figuring it out better later.
Thanks for the encouraging advice, Elia! I’m still very much a beginner, but I enjoy it.
Interesting. Curious what Kevin Marshall’s take is on her lessons.Christine didn’t take any programming courses while she was at Stanford? Seems like that would be a great place to learn.
3. Language of friends…I can see the argument here, but I also think it can lead you to being a little lazy (asking for too much help) and/or into picking up bad habits or mis-conceptions about stuff (I know my stuff is full of “you shouldn’t do it this way” things that would be *horrible* for someone trying to learn to see/use)Agree 100% with the “lazy” and I think that’s a major issue. Also agree with the bad habits and all of that. You don’t even know enough to know that which is the problem. Because you are a newly hatched and anything dropped into your brain takes on a larger than life importance.Part of learning (to me) is putting in the time to “figure it out”. You have a particular problem, something that doesn’t work and you can sit for hours obsessed with finding the solution. (I’ve done 6 or 7 hours probably on small issues a total zone). But after you find the solution you know it cold and you have really helped yourself. I understand that many people don’t have that luxury. They can’t spend that time and still have their other entertainment pursuits going on. But they won’t learn as much that’s for sure.Of course I’m biased. As I mentioned previously and will repeat I’m not a programmer but I bought a Unix system in the mid 80’s, unpacked it, hooked up terminals, and with the 10 bound manuals it came with (you got printed manuals back then) and nobody to ask question of (at all, and I mean nobody) got it to do the things I needed it to do. And it was fun!I’m reminded of a very smart girl (radiologist) that I dated once that didn’t know that you could cook Salmon in the oven. (Imagine that how stupid is that?). Why? Because all she knew was someone told her (talk about bad habits) to microwave it!By trial and error I learned that “Salmon is done when it ooses the oils”. And learned that Chilean Sea Bass has wider lattitude than Salmon so it’s really hard to overcook it. (Salmon will dry out if overcooked..) That to me is something that can’t be duplicated by asking questions much better to experience it.
I actually agree with all of this. it makes understanding what is going on much easier.
I did, just not enough of them.
By the way, what’s the typical path for a USV analyst alumnus/alumna? Charlie started his own VC firm, Gary started a coding school/incubator, Christine taught herself to code and build products, and there was a fellow who joined another VC firm, right? Did someone else end up getting hired by a USV portfolio company?
Yeah. Eric joined Foursquare
How many agents are out there?
read it. useful feedback.bought my first bitcoin this last week. now stored at coinbase, naturally. chat support is snappy. app works well.
Being a pet is a great analogy. Have your 13 y.o blog on “how to train your pet Computer”.Christina: Overall love the post, it’s great to see the learnings as a list and even after 18 years I can relate to “brilliant one second and idiotic the next…”
Well he did tell me tonight that he wants to start a website so I shared your idea with him. :)A whole new world is opening up to him.
Sunday 7th December…
today it would be called “12/7” i’m assuming
Link to James Clear post on Ira Glass is so smack on and my jolt to start my Sunday well. Thnx.
Lots of good stuff there. Well worth a read.I love the acknowledgement “There’s no easy or quick way to learn most valuable things” and “don’t worry about models or abstractions….”Only a minor quibble on my part w/r to language not mattering but within the context of Christina’s experience it makes perfect sense.
Hi MikeShe sort of contradicted herself because she went on to suggest a “forward looking language”
But I get the point and there are lots of good choices and even most of the bad ones are ok. I also appreciate the sentiment that it’s about learning not what you’ll be using down the road – hey, I start kids with scheme.My only quibble is that I’ve seen people give up due to a bad language choice and I’ve seen people really limit themselves when they go to far within a too highly opinionated language.
Every language is highly opinionated (except maybe Perl with the motto “There’s more than one way to do it”)…but highly opinionated is probably better in the learning stages.I think it’s more about the initial tasks/goals…if you pick something too ambitious at the start (a full blown game as a common example), it’s not the language that causes you to give up…it’s the lack of progress towards the goal.Some languages might help you get to specific goals a little quicker, but it doesn’t mean they’ll really help ‘hook’ you on programming…I really believe only the *right goal* can get you hooked…
You’re right – all languages are opinionated to a point. Python less than Java, more than Perl. Haskell more than Clojure, etc. and your right that the language can guide you to a way of thinking.What I meant is that I’ve seen self taught people go to far down one rabbit hole and end up with a “when all you have is a hammer” mentality.
Fair point. +100
.it’s the lack of progress towards the goal.That’s really the key point. Can you begin to produce something that gives you positive feedback toward something you want to achieve which then spurs you on and keeps you in the game? Are you getting reinforcement or at least intermittent reinforcement?I mean you are the sports coach guy but isn’t that what it’s about in sports? If you take a bunch of kids and put them up against NBA players and they never make a basket even the most determined will drop out, right?Perl, like shell programming, is one of those things that someone can start right from scratch and get reinforcement immediately on and produce useful things.Programmers perhaps by their asperger nature (if you “hang” around them) from my observation at least tend to be very “useless use of cat” esq.  where they take great pleasure in being ritually correct even to a fault. Obsessing over small details that don’t matter in a particular situation like a friend of mind who does photography and has poorly composed pictures but memorizes all the facts in the camera magazine reviews. Completely missing the point that his photos suck but his knowledge of the minutia is top notch.For example a guy that does some work for me has gotten upset when I do this:someprocess > /tmp/sometempfile.txtgzip /tmp/sometempfile.txtscp /tmp/sometempfile.txt someserversomewhere:/somedirectoryInstead saying that it should all be done with a pipe. I know that. But it works for me and diskspace and processing power is there (this isn’t the 1960’s) so who cares? Just get the job done.Like I don’t want to know 7 ways to do something I just want to put in my head one way and then move on to the next situation that I need to solve.My point being everyone with this is different. I’m not creating programs that shave milliseconds off a process for Google just something that works for me along with the 1000 other things I am responsible for. http://www.smallo.ruhr.de/a…
And when she said “If someone tells you that using language X would be a better choice than language Y, ask him/her…” Speaking of, curious choice of Obj-C as forward looking. Does she dismiss Swift? (I’d ask her directly, but she has no commenting on her site.)
No, but the documentation and stackoverflow isn’t there for a beginner yet. Give it a year.
Such an important point. When I first started learning, there was no Stackoverflow. Imagine trying to self-teach w/o Stackoverflow.
yikes. that would make it so much harder to learn!
i remember complaining about googling things to Albert (Wenger), and he said “imagine what it was like before the internet!”i got quiet really quickly.
I remember logging into irc.freenode.net and preying that whatever problem I had would be resolvable without too much hazing.
Gotcha.One other thing I was disappointed with, and that’s saying to avoid PHP as not being forward looking. I know a lot of startups using PHP (and Facebook) and they don’t think it’s backward looking. That comment feels like it comes from a Ruby-on-Rails bias. PHP is far easier to get started with than Ruby because it will run practically anywhere, no Heroku configuration required.If I wanted someone to gain success experiences I’d recommend PHP first and have them tackle Ruby on Rails once they got comfortable with basic programming. JMTCW.
PHP is far easier to get started with than Ruby because it will run practically anywhereAs in you can run it on your own local machine, right from the browser.Similar to how you can write simple HTML in a text editor and run it in your own browser. To me those types of building blocks are important. Putting on top of that (what I’ll call an “abstraction” and I don’t even know if that’s the correct term) is limiting since you don’t have the base knowledge.I just decided to learn java (because some of our software is written in java). The only thing I care about when starting is “hello world” and from that point I will build on my knowledge.
As in you can run it on your own local machine, right from the browser.Not exactly. For a web app you need a web server like Apache running locally, and MAMP or WAMP are easy to set up for this. But once you have a local web server all you need to do is drop PHP files into the web root and then load them via URL in the browser.(You can also run PHP files on the command line, but I assume we are mostly talking about programming for the web.)Or if you have a $5/mon shared host you can use an editor that saves files via FTP and skip having a local Apache, but a person should only do this for learning and not for editing a real site! 🙂
Not exactly.As in “learning” it or just starting out and getting a feel for it.you need a web server like Apache running locally, and MAMP or WAMP are easy to set up for thisExactly can all be done locally on a Mac under OSX. And using a service with dynamic dns you can even access it remotely if you want (although you aren’t going to be able to offer a service that way for sure.).Or if you have a $5/mon shared host you can use an editor that saves files via FTP and skip having a local Apache, but a person should only do this for learning and not for editing a real site! :)Right but we are talking about learning I think part of the problem is the things that are needed for a live site are way different than for learning. And for that matter who and how large the customers are for the “live” site matters as well.
“I mean writing code and writing secure code that actually works when deployed is an art that takes a long long time to get good at.”My opinion = the above will always be true for scaling.That said, by their very nature, modern frameworks offer consistency and reduce the complexities of maintenance/testing/security. I often use the metaphor of skiing (or golf). Remember when you needed to be able to hit a 3 iron (or avoid it and lay-up)? Technology has changed that. Remember when skiis were 200+ cms long? Enter parabolics. You get my drift.We are seeing this natural evolution with modern frameworks. They make it so that “athletes” can get up the curve pretty quickly.Just my 2 cents.I think you’ll find the theory / logic behind node.js to be very compelling. FWIW, Wallmart is exclusively built on node.js…
EVERYONE USES IT != IS ACTUALLY GOOD IDEA.
“Skate to where the puck is going if you don’t have friends who already have pucks whizzing around the ring.”
Agree with you on language doesn’t matter. I’ve learned the hard painful way that it very much can. But not in the context of learning, as you say.
Can you learn to code by doing mobile first? Or do you have to learn a web based code and then learn mobile?
The main good reason to learn to program for the desktop first is that it’s easier and faster to get started and iterate.
You can, but a lot of mobile apps right now are built as extensions or at least on top of web apps (i.e. talk to a web service in the background)…so it’s probably still easier to start at the web level for now.
MOBILE ADD COMPLICATION.START WITH NOT MOBILE.
But, the future is mobile. If you program thinking web, it might not work very well on mobile.
NO.PROGRAM IS PROGRAM. THAT PART SAME.MOBILE ADD DEVICE LIMITATIONS, TINY SCREENS, TOUCH INTERACTIONS, WEIRD VENDOR ISSUES.LEARN CORE BEFORE DISTRACTED BY OTHER STUFF.
Cool with that-but someday someone will figure out how to teach mobile only.
THAT LIKE SAY TEACH MOTORCYCLE ENGINE ENGINEERING ONLY.
the grimlocks responses weren’t very unhelpful… that is something I really don’t like ie ‘smug’ programmers… anyways, this evening I was looking at the ionic framework, which is less than a year old. It’s basically a UI toolset that is built on top of Apache Cordova (known as phone gap to many, which converts web files into native apps).ionic/cordova isn’t a miracle product yet (there are some performance issues when files get larger), but it seems like we are seeing performance gains pretty consistently. That said, google has developed a JS front-end framework (known as AngularJS) that does some pretty special things to speed up performance via data binding. So tonight I was looking at how, AngularJS + Cordova + Ionic play together and it’s pretty neat. All of this is evolving web technology that can deliver apps in app stores.link here if you are interested in checking out ionic: http://ionicframework.com/
Sage wisdom that applies to coding, problem solving and nearly the rest of life.
MOST TRUE THINGS TRUE FOR EVERYTHING.
Please see my comment above with the YouTube video of Nordstrom-eBay smart mirror and see also this Corning Glass video:* https://www.youtube.com/wat…The future of user interaction could be ANYWHERE WITH A GLASS SURFACE THAT CAN DELIVER AN INFORMATION MODULE. This takes it beyond the mobile vs Web argument.It’s true that, in previous years, programming with a Web-centric approach didn’t translate well into a native mobile experience. One of the key parts of the mobile vs Web difference is that gesture recognition (touch, pinch, slide etc.) exists in Objective-C for iOS, Java for Android and C++ for MS Kinect.The Web languages of PHP, Python and Ruby — although faster and more intuitive to script — are at a disadvantage for mobile in this respect. Yes, the developer could use something like RubyMotion to proxy what Objective-C can do but there’s a loss of transition smoothness that occurs. That’s why, as much as possible, companies prefer mobile apps to be in native language.Given the omni-channel nature of how companies now want their content to be delivered, the developer(s) who know the language(s) that can map and span mobile <=> web <=> smart TV <=> smart mirror <=> any surface by doing the leanest code…….Are rare.Developers can get OCD about only drilling down in one language, one platform (iOS vs Android), one framework and one library. Sometimes, that makes them terrific specialists and sometimes that limits their ability to solve problems laterally because they don’t have reference frames for how to pivot from one language, platform, framework, library to another.In finance terms, it’s the same as someone specializing in CDOs not being able to map over to Corporate Finance. The terms of contract are different.++++++++++++++In my own case, I initially prototyped my system in Objective-C for iOS because the touch gestures gave an interesting data set I thought I could do some neat Machine Learning with.However, quite quickly it occurred to me it would be much more innovative to make the system a Web+mobile hybrid whereby the user can be on any browser (Safari, Chrome, Firefox) and not just click with their mouse but ALSO GESTURE-TOUCH.The experience still feels “native” mobile but they’re actually on a Web browser.This means that there’s no need to code a separate app for:(1.) the Web browser (making sure it’s responsive and will adjust to all the quirks of Safari, Chrome and Firefox as well as different screen sizes): and then(2.) separate mobile apps for each one of Apple devices (iPhone, iPad), Google’s devices (Samsung Galaxy, Nexus, Asus Transformer etc), MS Surface and their different screen sizes.That would have been 10 different versions with 10 different stacks needing 10+ different developers (plus 5+ dedicated to either SQL, AWS, AppEngine databases etc) plus 10+ different designers and 5 Product Managers.In other words, a budget north of $3 million for people skills alone.Let me say that it’s entirely possible for a single developer-designer-PM to code a Web+mobile hybrid system that can also do Machine Learning (AI). And to file a patent for it.
It’s interesting that Christina represents a new emerging segment of people who learn to code later, post-grad, and post-work.Really insightful post. Her thoughts are really clear and from the heart.
never too late to become a creator.
Good on her! It would be cool to know where she, herself, hung out with engineers. I’ll just prop Girl Develop It, right here 🙂
Hunch in nyc — but I’ll absolutely start suggesting GirlDevelopIt to others.
Four years ago my friend and I sat with Matt Gattis and Harold Cooper to understand Hunch’s API at NYU’s hackathon. My “mad” idea was to do a Data Science mash-up that pulled data from Hunch, Chartbeat, Facebook, Yahoo BOSS and IMDB to make movie recommendations based on people’s tastes and social preferences.I thought the 20-Q&A process involved in Hunch training its AI engine was too laborious and wondered if it’d be possible to make a prediction algorithm from the API data.Unfortunately, the APIs then were wieldy, data sets were missing and the JSON files didn’t quite surface the entities we were hoping for.Several months later, Chris Dixon released a very interesting hack called “Forage”. By then Hunch’s API worked more smoothly.What did Forage do?It was a mashup pulling data from Hunch, FB and IMDB to do music and movies recommendations.——-My hackathon partner went on to join Yahoo! Meanwhile, I went on to code my own system which has a 2-step process to train the AI engine rather than Hunch’s 20-Q&A approach.
I’ve got a techcrush on Christina. She rocks.
yes, she does
Agree.For what it’s worth, I wouldn’t recommend Obj-C or Java to anyone just starting out…both are worth learning, but *I* think too complex as a 1st language (you’ll have a lot of confusion, frustration, and drop off of students with either of these)
and drop off of studentsYeah the “drop off” factor is huge in learning things. You need something that sucks you in that gives you positive reinforcement. And different people deal with adversity differently.
JQuery is the key in my opinion. It’s programming, but almost no learning curve if you know HTML & CSS. JQuery can be a ton of fun.
Agreed. For my money I’d start with JS. Don’t need any special tools (word processor and a browser). You can learn functional programming first and eventually move up to objects. The “stack” is quite simple, especially if you consider the basic setup with jQuery. And it is extremely practical in the modern era as it runs on every device, whether bundled into an app or runs in the device’s browser. Finally, tons of online resources.
will be popular in 20 yearsOnce again whether it’s “popular” or not depends on what someone is trying to achieve. I remember when snowboarding first came out and you could tell someone’s age just from the fact that they were snowboarding instead of skiing. But you know people are still skiing now and (figuring I’d check my anecdotal thoughts) apparently snowboarding is “in serious decline”. I never tried it I was happy with skiing. Skiing had “secondary meaning for me” snowboarding did not.http://www.bostonglobe.com/…Christina also left off bash or shell programming and a host of Unix utilities and skills.My personal feeling from experience (of a long long time) is I think it’s very helpful to have an understanding of sysadmin things. It’s not that big of a deal to get a VPS running, patched and you have much more flexibility and control than with the layer of something like Heroku on top. And you will learn from doing that. I think it’s important to have that type of base understanding of how things work. (For that matter you don’t even need a VPS you can just use your own Mac running OSX even with a ephemeral IP if you are just starting out and then move on from there).
sysadmin is completely different than programming. This is the problem with programming the modern computer system. Too many parts. As a beginner, can’t overwhelm them with too many things. We are talking learning variable’s and assignment and loops! syadmin is a world beyond that.
By sysadmin I don’t mean learn enough to be a sysadmin. Just know enough to know what goes on under the hood. Know the basic unix utilities and some shell programming.For example you have a bunch of log files that you need to be able to look at to see some errors. So you know enough to “grep” the files or use “more” or head, tail, tee redirection and so on. Further you know enough to whack together a shell script where you can choose from a menu the particular log file that you want to take a look at. (All to save the time of having to type in “cat /var/log/messages”.) Or you know enough to edit config files and know that you can use sed to change things in a file or find in a directory of files a particular thing that you are looking.Learning to be a sysadmin is a forever process I know that from experience.
this is true – and when you start learning you often feel very overwhelmed. I don’t know the way out
Yes, shell programming is really important.It’s troubleshooting hundreds of command lines that tell you there’s no Fortran compiler in a particular distribution of Yosemite, for example, and then having to install it from scratch.Plus knowing how to hook up to Amazon EC2 via shell with imported-openssh key.
like you said, making the page dance. this video tutorial is 8 mins long: https://www.youtube.com/wat…you can do a lot with 8 minutes.
Now look what you’ve started 😉
This is quite civilized.
By timing I assume you mean the whole asynchronous communication piece? Yes, I can see how that would be very confusing. I was similarly confused by event driven programming when I first started. I wasn’t talking about backend technologies though. I was talking specifically as JS (jQuery) on the front end. Forget node. Make the browser dance and sing!
when did you write your first line of code?
actual first? high school, prob 2000 or so.
This is a good one – I did Fortran @ PACI with Mr Fouchoux (spelling totally wrong). 1979?
before I was born. impressive. i took cs classes in college. visual basic. nothing much before that.
In my region, the teaching of programming is nil. I had an idea that could (at lower cost) build an intro class, one for the younger set and one for older, that would start with utilizing commands that have been coded and move into starting to code. It is starting to snowball and we’re in the process of gaining grant money to purchase the robot to use.The umbrella to the course will be more focused on design because of its importance. Python will be the language they start and I’ll show what that would look like in C++ since that is the language 99% use with the FIRST leagues.End run (intro course) is to plan/build 3 projects and be ready to handle forward movement toward ML and NL. At the same time, a basic intro to the other languages and what their purpose/strength/weakness is will be part of course.I’ll probably be asking for advice.
“Cycling through projects can come off as dilettante-ish to others. Ignore them.”#hardtruth
On Thursday, I posted this graphic onto Google+ as a comment about how I map languages (natural and programming).One of the major — if not THE major — issues in AI is about how and whether we can achieve Natural Language understanding. If we examine the syntax (whether it’s Python or Scala or Haskell) most of it follows mathematical logic and functional forms.It could be that a new high-level object-oriented language needs to be invented if the machines are to understand the meanings of what we type, communicate and share online.Also, it will need men & women, people of all major natural languages etc to figure out.And this is why everyone should learn how code works and learn how to code as much as possible.
I will be communicating with you. My end run to the Intro course I’m putting together will be the use of strings, doing so with talking robot allows theory being taught without it being hard core. Insofar as the rest of the languages it comes down to what the person wants to do and what would work best for that scenario. The hard part communicating with the younger set is if they learn something via Raspberry they think they know everything and you can’t get a ‘beginning-path-conclusion’ regarding what they’re talking about that’s understandable. [email protected]
Thanks. Working with a walking/talking robot will give the bang. It also is good where Python moving to C++ works best with the robot. Utilizing the fun will enable me to show how to storyboard something in a fashion that can be understood which will give a half shot of streaming code to do something that is entering an extended autonomous state over to pushing the time span.Then, later when (still speaking of kids entering High School) they want to do whatever mobile thing, I’m hoping they can see the picture more clear.As far as the 11-12 grader plus adult, I will be moving them into ML/NL more matching their math level and so on.
That sounds like a great plan. My own code migration was from C++ to Python.I know the temptation is to “on-board” kids with the most accessible code that they can learn fast.However, I’d make the argument that, longer-term, it’s better to enable the more mathematically-able ones to do the harder code first because it gives them more of a solid foundation and springboard to learn the “easier” languages.
True. I’m starting with younger (grades 7-10) that would have a smattering of C++ that would be moved in to. Main thing will be a scripted skit followed by expansion of autonomy that will please the parents enough. The adult (grades 11-12 and college) would do an accelerated of the above (learn the platform) and push the Autonomy so I can do more than one area. There are interested people on the college level who are doing some pretty cool things that I know want to dive into NL while another bright 12th grader would probably want to dive ML and NL. He may be going to Stanford.But right now, I have to focus on the grant to get the bot and market the classes.
This is the graphic on Stanford’s dschool which Christina attended. That provides a lot of context about why she felt it was important to take some time out to “walk in the shoes of the developers.”The dschool’s multi-displinary Liberal Arts-esque approach will likely stand her in good stead.Remember what Steve Jobs said in his ‘Lost Interview’ about how Comp Sci should be taught as a Liberal Art……….
That’s really neat and as someone who has an inter-disciplinary degree from my undergrad I approve.
:*), did you spot that Stanford school’s graphic is a representation of the benzene ring structure in chemistry? It’s the basis of all organic, dynamic and catalytic interactions in Nature.The intelligence in Nature isn’t linear, binary and discrete.That’s why the AI community needs to cross-pollinate with other disciplines (and get out of its narrow silo thinking in Maths, Computing and Quantum Information) if technologies are to be intelligent and serve global society.
For anyone who is teaching themselves to code or thinking about doing so, I highly recommend reading this.Specifically “anyone”.I think when someone is learning to code, it’s important to keep in mind one of the things that Gotham Gal said yesterday relative to the topic being discussed “dream big”.Specifically something like “where do you want to be in X (time period)”. What do you hope to achieve and what is important to you specifically? You know I’m not looking to run a big corporation so my goal are not the same as Gotham Gal’s were. My dreams are different so my path must be different.I think Christina’s thoughts are applicable to someone in Christina’s position with her specific goals. I don’t think they can be generalized to be a good blueprint, direction or guidance for “anyone who is teaching themselves to code”. Not even close.This is actually a big problem with generalized posts about a particular subject being discussed on the internet. They tend to be focused and biased toward a particular person’s thoughts or so long that someone couldn’t possibly understand enough to pluck out what they need to make a decision. Either to little or to much. To much is better but that makes many assumptions as far as understanding and comprehension.If I had to do a mind dump about everything I know and have learned over the years about things that I know about, it would take an entire book or actually much longer than a book. And there is no way anyone would have the time to read that book. Otoh if I spoke to someone in person I could probably, in a few minutes, drill down to specific advice that is applicable only to them saving them the time of reading volumes of data.
Programmers are very sociable, if you are discussing programming with them. I know this because I am one. 🙂
Also, I would add one more point – The “Law of the Instrument” – when you have a hammer, everything looks like a nail. Which is why programmers tend to favour the languages they know best. But it is possible to build a house out of wood, stone, or hay bales if you know what you’re doing.http://en.wikipedia.org/wik…–www.linkedin.com/in/[email protected]_nyc
Having met Cristina, I can personally vouch for top 1% attitude.Her bullet points on creating things is, to me, the far more insightful portion of her post. I cannot remember how many times I have told my kids ‘the first time you do anything is the hardest, because, by definition, you will suck at it – even if you have some natural talent at whatever you try.”I also like to mention that the 2nd -7th or 8th try will suck too. But then it won’t and you will have learned one of life’s most valuable lessons.
I have told my kids ‘the first time you do anything is the hardest, because, by definition, you will suck at itIn the beginning when you are learning anything new your brain doesn’t see things as chunks therefore even the simplest things are confusing. You have to process them a letter at a time and think to get anywhere. I think they call the turning point “the aha moment”.Part of this is always attitude.
The question for me is always what to build. I never know where to start
Start where your heart is.It’s the best way not to over-think the build. If what you doodle onto a single sheet of paper makes you go, “Ooh, that’s funny / crazy / different etc” then start there.
We run into computationally complex problems if I go where my heart is. I mean, in that sense it is good that I make friends with math and comp sci phds, but it really doesn’t get me personally coding.I don’t actually need that much stuff on a day to day level. The closest I can think of is altering some other guy’s web scraper for a better seo tool. But even then, meh.
What area in particular are SEO scrapers, KPIs and a whole bunch of Quantified Self apps really really poor at — if they do it at all?Measuring and understanding emotional engagement and what’s in the heart of users.Emotions can’t be inferred from number of clicks, duration on site, downloads and yet that inference happens all the time because there’s this amiss assumption that quantity = quality and the two are mutable.SEO scrapers reflect the frequency of keyword counts and link backs. They’re about popularity and statistics rather than personality and sense.So…right there is an example of going where our heart is which still opens up to computationally complex problems that stimulate our intellects.The machines can’t understand emotions accurately; that’s why sentiment analytics is poor.That area needs talented female developers like you much much more than in SEO scrapers, :*).
I don’t self describe as a developer. As for SEO scrapers, I can have a discussion with you, but I would never develop this alone (need encouraging friends even for a side project)And yes, quantity does not quality, but you can figure out ways of getting at quality, or quality esque things – but this again is complicated complicated stuff. Math speaking.
The interface between the UX, data and bridging the gap between what the business people consider to be “intelligence” and what mathematicians-devs consider to be “intelligence” is one of the most interesting spaces and it’s where I focus.Yes, something simple and intuitive for the user can be complicated complicated stuff under-the-hood, code-wise and in terms of first principles maths.You asked how I got to be like this on another thread…..My degree’s in Maths and I went to Mgmt School so that enables me to map between the two different mindsets.
Build something that will solve a problem that you have.
usually a) my problems require a coding toolset greater than I can do (high math -> coding involved. Eg: Transferring an older data science paper about when bloggers write articles into a content calendaring tool for SEO/PR purposes still requires figuring out how to make that alogorithm codably efficient, which is a level of skill above my basic CRUD apps) or b) I have pretty good tools already
and my problem is that I start too many things, hoping to finish few soon…
A bit late in the day but this post (from an Assistant Professor ofComputer Science at University of Rochester) just popped up on HN and is very relevant:http://pgbovine.net/program… Programmer: Hey, I hear you’re learning programming. Cool, what’reyou learning?Beginner: I’m starting with some basic PHP and HTML using TextMate onmy Mac.Programmer: Haha, psssh, PHP is so dumb. You should learn Ruby onRails, deploy on Heroku, and code in Vim. TextMate is for n00bs. Oh,then move onto some Node.js, that’s sweeeeet. non-blocking I/O w000000t.Beginner: uhhhhh, ok
This was really cool to read, and really good timing too. Earlier this week i decided to use some of my free time (starting with small time intervals) to learn how to code, I eventually want to work my way up to spending large amounts of time blocs every day learning, but my first priority is sustaining my interest on the subject. Right now I’m a Sophomore in college so I appreciate that I have an environment where I don’t have to make sacrifices to learn this skill (other than using that time to “hang out” with friends aka waste time).I’m also doing something similar to Christina’s changelog, it really helps, except mine is sort of like a public blog tracking my progress. I want to use it to (1) keep me accountable and (2) provide a footprints for a new person to follow if they would want to begin coding and (3) keep the useful online resources in 1 place.I’m new to commenting so i don’t know if I should be posting link here, but anyone interested can message me for a link.Thanks for this Fred.
it for sure isn’t rude to drop links. welcome to the comment section. it’s a great place to learn from smart people.
Great advice, I have now added to her twitter follower count.
This learning code thing is very interesting. In the 70, 80, 90 and even 2000, we were building products so that computers learn how to speak our language. When I was 10 and started using MS-DOS, I can’t recall a movement saying “Learn the command line!” Instead, we were using Windows, MacOS, OS/2. That’s how computers were evolving, and that’s how everybody started using them.Why is it that today, we now tell people: “You remember this command line on MSDOS that you didn’t want to use? Well, you should actually learn something much more complicated. That’s the only way to understand technology, and to get a job!”. That sounds extremely backward to me. Someone needs to come up with a tool that is visual, and that replaces that command line/code.I don’t want to do too much auto-promotion but that what we do with Bubble (https://bubble.is). It’s a visual programming tool, whose goal is precisely to make that people don’t code any more.