background preloader

Some lesser-known truths about programming

Some lesser-known truths about programming
My experience as a programmer has taught me a few things about writing software. Here are some things that people might find surprising about writing code: Averaging over the lifetime of the project, a programmer spends about 10-20% of his time writing code, and most programmers write about 10-12 lines of code per day that goes into the final product, regardless of their skill level. Good programmers spend much of the other 90% thinking, researching, and experimenting to find the best design. Bad programmers spend much of that 90% debugging code by randomly making changes and seeing if they work.A good programmer is ten times more productive than an average programmer. A great programmer is 20-100 times more productive than the average. Related:  Project Management

What agile means to me [Update: in response to some of the comments here and on HN, I thought it might be worth updating with a note on my personal experience with Agile, which appears at the bottom of the post.] Agile (with a big 'A') has become so mainstream now that it has started to become the problem. An alarming number of people who espouse the virtues of Agile, and who quote the Agile Manifesto believe that Agile is a project management methodology, and that Agile really means SCRUM, XP, Kanban, and that it is embodied in the daily stand-up, whiteboards or writing requirements on post-it notes. As a result of all this, Agile (big 'A' again) has become a bit of an albatross - it doesn't really work, it doesn't deliver the benefits it promised, and it inevitably involves a lot of arguing amongst the team about who should be doing what, and when. So, a few lessons I've learned along the (hard) way: A few things that help this happen on a practical level: Postscript: my personal experience with Agile.

C Craft - Chapter 1. Introduction C is the desert island language. This is my favourite statement from a talk Rob Pike gave in 2001. Despite its age, despite many flaws, C is still the de facto standard, the lingua franca. Why? As with other older languages, inertia is partly to blame, but this cannot be the only reason. C must possess a near-perfect balance of vital language features. Or as Linus Torvalds puts it, “C is the only sane choice”. One of C’s designers, Dennis Ritchie, gives a modest account of the evolution of C. The canonical reference, Kernighan and Ritchie’s "The C Programming Language" is slim, yet contains much more than the language specification. Not only is C easy for humans to understand, but machines too can pick up the language quickly. I can roughly envision the assembly generated by a C statement, so I can make educated guesses about time and space efficiency. Brevity is the soul of wit. In my Eiffel days, I was encouraged to write "integer", not "int", "character", not "char", and so on.

7 Myths of Entrepreneurship and Programming (Photo: Stuck in Customs) For the last two years, one name has come up again and again when talking with A-class start-up investors: Pivotal Labs. See, Pivotal Labs quietly helps dozens of the fastest-growing tech companies in the world, including freight trains like Groupon and Twitter. If your start-up needs to get good coding done quickly, as in lightning fast — or if new hires need to get good at coding quickly — top venture capitalists are likely to look over their shoulder and confide: “Call Pivotal Labs.” I first met the Founder of Pivotal Labs, Rob Mee, when one of the start-ups I advise, TaskRabbit, began working with them. One thing is immediately clear: Rob is obsessed with how to get obscenely high output. My kinda guy. I then posed a few questions: How do you create a scalable, bullet-proof business? What are the myths of tech product creation (software specifically, and entrepreneurship more broadly) that he’d like to expose? Think software doesn’t apply to you? Enter Rob Mee

Six ways to write more comprehensible code I learned to write, clear, maintainable code the hard way. For the last twelve years, I've made my living writing computer games and selling them over the Net using the marketing technique that was once charmingly known as shareware. What this means is that I start with a blank screen, start coding, and, a few tens of thousands of lines of code later, I have something to sell. This means that, if I make a stinky mess, I'm doing it in my own nest. So I have been well rewarded by learning about good, sane programming techniques. But there are many who, like me, stumbled into programming in an unexpected or unusual way and never had anyone drill this stuff into them. The example case For illustration purposes, our example program throughout this article is a hypothetical computer game called Kill Bad Aliens. Figure 1. The game will take place in periods of time called Waves. Killing an alien gives you some points. When a bomb hits you, your ship blows up and another appears. Back to top Oh?

Why a Great Individual Is Better Than a Good Team - Jeff Stibel by Jeff Stibel | 2:28 PM June 27, 2011 Anytime a CEO, quarterback, engineer or author is paid ridiculous amounts of money, dozens of investors, armchair quarterbacks, and scholars jump in to debate the value of individual contributors versus teams. Bill Taylor wrote the most recent of many interesting pieces, where he argued provocatively that “great people are overrated,” in response to Facebook CEO Mark Zuckerberg’s comment that a great engineer is worth 100 average engineers. I have heard plenty of people argue that no one individual is worth the price of many. As a CEO, I have run public companies, private companies, startups, turnarounds, and divestitures — in each and every case, I have never seen a situation where quantity is better than quality when it comes to people. And as a brain scientist, I know that great individuals are not only more valuable than legions of mediocrity, they are often more valuable than groups that include great individuals.

Advanced Programming Languages Introduction Research Syntax Semantics Static Semantics ( Type Theory ) Dynamic Semantics Semantic Related Developments Abstract Interpretation Program Transformation Decompilation Partial Evaluation Pragmatics ( Software Patterns , Generic Programming , Visual Programming , Persistence , Reflectiveness , Hyperprogramming) Semiotics Implementation Techniques: Garbage collection , Abstract Machines Some Conferences (not updated) People and Groups Teaching Introduction to Programming Languages Selecting First Programming Language Courses about Programming Languages Courses about Foundations of Programming Languages Courses about Language Processors Paradigms Comparing Programming Languages Functional Programming ( Haskell, ML) Logic Programming (Prolog) Object Oriented Programming (Java, C++, Smalltalk, ...) Cross Paradigms : Logic-Functional , Object Oriented-Functional , Object Oriented-Logic My List of Programming Languages Selected Bibliography Selected Papers Selected Books Acknowledgments Backus Naur Form (BNF) C.

Why Groupon Is Poised For Collapse Editor’s note:This guest post is part of an in-depth series looking at the daily deal industry written by Rocky Agrawal, an entrepreneur who has worked on local products since 1995. Read Part I, Part II, and Part III also. He blogs at reDesign and Tweets @rakeshlobster. Imagine you’re a small business owner. You can pay $62,500 for marketing. I’ve been working on local for a long time and I know it’s hard to get small businesses to spend money on advertising. There’s no way a business will sign up for #1. Except they are. Although they sound completely different, #1 and #2 are really the same—it’s the Groupon business model. Businesses are being sold incredibly expensive advertising campaigns that are disguised as “no risk” ways to acquire new customers. Groupon is not an Internet marketing business so much as it is the equivalent of a loan sharking business. In many cases, running a Groupon can be a terrible financial decision for merchants. Traffic is not necessarily profitable traffic

Beginning Game Development: Part I – Introduction | Coding4Fun Articles Part I – Introduction Welcome to the first article of an introductory series on game programming using the Microsoft .NET Framework and managed DirectX 9.0. This series as aimed at beginning programmers who are interested in developing a game for their own use with the .NET Framework and DirectX. In this series, we are going to build a simple game to illustrate the various components of a commercial game. Tools: Before we start writing our first game we need to talk about the tools we will use. The most important tool for any developer is the Integrated Development Environment (IDE). Visual Studio 2005 (also known by the codename “Whidbey") is the third version of the standard Microsoft IDE for .NET Framework-based applications. The second important tool we need to create a great looking game is a graphics Application Programming Interface (API). At some point in your game development experience you are going to have to create or modify graphics. What makes a successful game? Our Game idea:

Change Is Good, But It’s Also Really Hard: Tech News and Analysis « Last month, I took a little break from all the hustle and bustle of the Internets and decided to focus on trying to get a better handle on my daily life. It included eating right, working out and, in short, decompressing. I was trying to use a month-long break to change life-long behaviors such as staying up late, working long hours and more often than not, eating erratically. That growing bit of self-awareness and some well-minded friends and colleagues who convinced me — it was time to Get. Large companies are somewhat like me — once they get used to a certain behavior, they develop a certain culture and a set of procedures, processes and a work environment that defines them and their future. The Corporate DNA DNA contains the genetic instructions used to build out the cells that make up an organism. Google Me Let’s take Google as an example. Social Needs Socialablity There is nothing wrong with Google’s DNA — it is just different. Burn the Platform Change & Culture Uh oh!

code school What is a Hacker? Copyright © 2001 Eric S. Raymond As editor of the Jargon File and author of a few other well-known documents of similar nature, I often get email requests from enthusiastic network newbies asking (in effect) "how can I learn to be a wizardly hacker?". Back in 1996 I noticed that there didn't seem to be any other FAQs or web documents that addressed this vital question, so I started this one. A lot of hackers now consider it definitive, and I suppose that means it is. Still, I don't claim to be the exclusive authority on this topic; if you don't like what you read here, write your own. If you are reading a snapshot of this document offline, the current version lives at Note: there is a list of Frequently Asked Questions at the end of this document. The five-dots-in-nine-squares diagram that decorates this document is called a glider. If you find this document valuable, please leave me a tip on Gittip. If you want to be a hacker, keep reading.

If you code HTML, Zen Coding will change your life If you write HTML for a living, and you don't know Zen Coding yet, you are missing out big time. This is basically the coolest thing I've seen all week. I have been using it for a few days now; at first it seemed kind of gimmicky and I wasn't sure I could grasp the syntax, but today I really got to explore it, and woah is it awesome. Okay, I'll stop tripping over myself with excitement over here and try to tell you what this thing does, in a nutshell: It expands abbreviations into complete HTML structures (divs, tables, cells, links, lists), and does it in the most freaking intelligent way I have seen in a long time. I'm serious! For instance, that arcane-looking string of text in the screenshot expands with a single keystroke into this: This thing leaves any other tag-completion method I have ever seen for HTML in the dust. There are existing implementations for multiple editors, such as Komodo Edit (which is the one I'm using). There are easy ways to wrap existing lines with tags.

5 ways to keep your rockstar employees happy — Online Collaboration The Googleplex, Google’s corporate headquarters in Mountain View California, is legendary for its perks. Employees have access to unlimited free meals, haircuts, dry cleaning, massages, and even onsite medical care. Yet earlier this year, when Google interviewed its employees about what they valued most at work, none of these extravagant benefits made the top of the list. Tangibles like salary and benefits aren’t enough to guarantee that your best and brightest creatives will remain engaged. Take Jill, an outstanding, experienced copy editor whom Agency X recently recruited at considerable expense from one of its chief rivals. The loss of star performers like Jill doesn’t just leave a talent vacuum to fill; it also leaves a gaping hole in the bottom line. So how can your company keep its stars engaged? 1. The average Starbucks barista gets more training in a year than the average employee in a communications company, according to the Arnold Worldwide study. 2. 3. 4. 5.