“Startup founder” is not a career promotion for programmers

It’s a completely different career ladder.

In his book, “The E-Myth”, Michael Gerber identified 3 personas: the Technician, the Manager, and the Entrepreneur. Face it, you’re a Technician. And Michael identified a singularly fatal assumption:

If you understand the technical work of a business, you understand a business that does that technical work.

And that assumption is wrong. The technical side of a business is separate from the business itself.

And with many a technological startup that’s been popping up all over the place, and succeeding, it can be alluring to a programmer (I’m talking to you) to think that he can do the same.

And you can. But you must go into this knowing you’re running a business. Writing your killer web application may be fun, but it’s not your whole business.

Michael Gerber identified the Technician with bakers, chefs, hair stylists and other crafts people. People who do stuff. A subset of them are programmers. Our work, existing as software, can change within minutes (even seconds) of us changing source code and pushing the results out into the world.

A business can change almost as fast. But it’s a system that surrounds the software system. You need to know about the other parts that keep the business going.

Of the successful startups reported in big media blogs, there are also many more that failed into obscurity. Some of them created by single programmers. Maybe you.

Going the whole 9 yards with a startup can be your dream. Raising venture capital. Talking with VCs. Getting angels to invest in you. Raising funds in rounds 1 and 2 (or A and B or whatever they’re known as). Getting media blogs to notice you. Hiring code ninjas (just a thought: bad idea. Don’t hire if you can. And you don’t really need ninjas). Millions of users. Millions of dollars as an exit strategy. A life of cranking out code with [insert favourite brand of soda] and late nights.

Success or failure. From what I understand, a startup can go either way. There’s some control, but there’s still a fair amount of volatility. For all I know, a butterfly flapping its wings here in Singapore devastated a startup in Silicon Valley.

What you need is to understand at least the fundamentals of a business. The fastest way to learn is to start a business yourself. But you don’t have to start it with your precious web application. Your first business attempt is probably going to suck in an epic nuclear explosion. Don’t make it your precious web application.

I’m writing a guide to teach programmers how to start a small online business. It shouldn’t take you more than a month to start, and it shouldn’t take you more than a couple of hours a week to maintain it. This is what Tim Ferriss calls a “muse”. If you’re not too picky, my calculations put your total investment to be no more than US$ 200. And that pays for at least a year (mostly web hosting costs).

The fun part is that the knowledge you gain from running your own small online business, is that most of it can be scaled to larger businesses. Maybe that startup you’re thinking of.

The business guide will be ready in a couple more weeks. Maybe sooner. This is a heads up in case you’re interested. If you have questions, just contact me.

First odd prime birthday

Children at a birthday party

Actually I forgot the actual date. I thought it was today, but it turned out to be yesterday. Oops. Sorry, blog.

So yesterday, 12 June 2010, Polymath Programmer turned 3 years old. *trumpets flare, streamers float and white doves fly into the air* Originally, I wanted to keep it quiet. No fuss, no muss. Just continue writing stuff you’d find interesting. Then I remembered that June 2010 was special to me personally.

Hence, in a whirlwind of idea creation, I want to thank you for reading Polymath Programmer. If you are one of the first 3 people to email me (or if you prefer the contact form) with the subject header “Polymer Birthday” (within this month, you know, because it doesn’t make sense next month…), you will get:

  • A postcard sent to you from Singapore, with a personal message from me.
  • The next 3 issues of Singularity for free. I’ll even give you the current June 2010 issue as a bonus.
  • The Secret History of Polymath Programmer.

[UPDATE: 2 people have “won”. Only 1 left. Start emailing…]
[UPDATE: All prizes taken. I thank the 3 people who emailed me.]

I will obviously require that you provide your physical address for the postcard to work. I promise it will be kept confidential, and will only be used to send the postcard to you. But if you’re not comfortable, I can scan the postcard with the message and send you the image. Either way, you’re getting a postcard.

As for the secret history thing, I will tell you things that few people ever know about Polymath Programmer and me. I’ll tell you why June 2010 is special. You’d probably laugh. You might sympathise with me. Hey, if nothing else, you’ll feel good. Everyone loves secrets.

And if you’re looking to advertise in Singularity, you’re in luck. If you contact me within this month, you get a heavily discounted rate. (click here for more details)

That’s it. Enjoy the rest of June. It might even be summer for you. I can completely relate to you, being in ever-summer-Singapore.

[image by Rich Legg]

Are corporate programmers also polymath programmers?

I’ve been writing for more than 2 years now, and I realised that I never told you much about my professional job. Let’s start with a brief summary of how I started…

Beginning of professional career

I started working a few months after I graduated in 2002. I had a science degree in applied mathematics and computational science, but that didn’t stop me from applying for the software engineer, software developer, application programmer, systems analyst and other confusing variants of the job title. I like programming.

Once, I worked in a startup company, writing software to deal with patents. One of the requirements was “must know regular expressions”, used for searching through the patent text, so I put my mind to learning it. I got the job. The funny thing was, the CEO handed that part of the coding to an intern. Oh wait, a PhD intern. Maybe I wasn’t qualified to touch regex…

Somewhere in that career history of mine was a software development house. The team I was in, was assigned to develop an enterprise product for a Japanese company. It’s an internal website, and handled work flow processes, task assignment and other enterprisey functions.

Half the time, I was helping to complete some sections of a business class. A third of the time, I was doing the testing, because I seem to be the only (expendable) one with more than coding skills. Because I had experience talking with users, coming up with specifications, database design, setting test environments and oh yeah, coding.

They even offered me a role in translation, after they heard I knew Japanese. Correction I told them, I knew a little teensy bit of Japanese. They had an overflow of programmers I guess… (it was a team of 10 programmers. Or was it 12?).

In the present

Currently I’m working in a telecommunications company in Singapore. Actually, I started my first job in the same company too. After the first few years, I joined the startup. Then left and joined the software house. Then left, and rejoined my current company, but in a different team (still in the billing support department though).

The interesting thing is that I’m dealing mostly with satellite data, not mobile phone data (one of the core business of telecommunications companies). And my users are like a complete company, albeit on a small scale.

They have their own departments on customer service, marketing, sales, and to a certain extent, their own IT team. And that IT team is composed of 3 people. And I’m one of them. I have a supervisor and a colleague who handles the backend programs (mostly C and C++ on Unix).

Me? I’m the frontend guy, and the everything-else guy.

Because of the unique service (compared with the rest of the company) dealing with satellite data, my team is involved with everything from the call records of the customers, to the configuration of their price plans, to billing the customers, to settling profit with the satellite providers. The satellite business is quite interesting, and I’ll tell you more in a future article.

The other team mates focus on collection of the raw file containing the call records, processing them, calculations of the bills and other backend stuff. I handle all the stuff that users will see and interact with, like Windows applications and web applications. And I manage the Windows servers the web applications are running on. And there’s the updating of the SSL certificates for the web applications. Once I was at the data centre during a power maintenance, because someone needed to be there to flip the on-off switch of the servers and check on the equipment.

My work is seen by a lot of people, which includes the customers, the sales staff, the marketing staff, the product managers, the administrative staff and the customer service officers. This means I get a lot of queries.

If a number doesn’t tally with the total, someone sends me an email.
If the font size is too small, someone sends me an email.
If the Excel download fails, someone calls me.
If the data cannot be found, someone calls me.
If they can’t open an FDF file, they call me.
If the offshore Chinese colleague have questions on business logic or web design or code design, he/she calls/emails me.

If [something happens], someone [calls/emails] me.

In short, I get interrupted a lot. Nice private offices? Not a chance.

And I still have to write code so the projects actually ship before deadlines.

There was once where I had 1 month to come up with a new website for the customers to view their call records (brand new .NET web application, new user interface, completely new database schema). That was a December (the sales people had to move fast to get that contract before the start of the next year, which meant I had to work fast). And another colleague from another team was reassigned, and his work was handed to me (basically I was covering for 2 teams). And I received calls and queries from the users of both teams.

And the new website was out in the world on time. *whew*

Do programmers who work in a corporate environment go through similar experiences? Do they handle many non-programming related work? Are corporate programmers also polymath programmers?

I’m stumped, since I probably have this naive notion of programmers just programming (to a large extent). My friend once asked me what I do at work. I didn’t know how to answer, so I rattled off a few tasks mentioned above, and he’s surprised I do so many different tasks. Particularly when I sometimes have email correspondence directly with customers, which I try to avoid for business reasons. The sales and customer service teams are supposed to be the frontline, not me.

Helping corporate programmers on time management

This brings me to a personal project. I’m creating a product about time management for corporate programmers, working title “Time management for corporate programmers – Handling interruptions, removing distractions and getting the Flow”. Or some such.

All the writings and articles on this site will continue to be free. I’m writing an ebook to help fellow corporate programmers (maybe even programmers in general) with what I know. And this endeavor might just be able to support this site. The articles are fun to write, and I love the brilliant comments by you (even the ones that tell me I’m wrong. Those are awesome).

Actually “time management” is too specific. I’ll be writing on discipline, control and health. There will be some quick tips on data migrations and doing your miscellaneous tasks with free tools (because you know, companies are always cutting the budget). My notes actually look like a jumbled mess, but maybe that’s the nature of polymaths… or just me.

So do you have any questions about time management in a corporate setting? Or even time management in general? What are the typical tasks you do? How can I help you do your job, the tasks you really want to do (it’s coding and shipping software, right?), better?

*whispers* Psst, it’s ok if you’re a student/coder. I was a student/coder once. Just ask.

Let me know in a comment, or if you’re shy, use my contact form to email me privately. You can also talk with me on Twitter (@orcasquall).

I’m really excited about this project.

You are now a Polymer

Ever since I started writing, I’ve been just a little concerned over the name of the blog: Polymath Programmer.

I want to write on topics that I’m familiar with, that I’m fairly good at, that is interesting. Programming formed the main focus, and slowly mathematics as well. I want to bring in other disciplines as well, even if I’m not very good at them, because they’re interesting or somewhat related to programming. Thus was born my main quivers of articles.

Polymathy perfectly encapsulates what I’m trying to get people to understand, to bring together seemingly disparate topics and synthesise them into a solution. Since I’m passionate about coding and its related subjects, I came up with “Polymath Programmer”.

Even though it’s just two words, the first one is big (who knows what “polymath” means anyway?), and both are 3 syllables each. Add them together and I get a long URL. Not very conducive to spreading the word.

Yet it feels right. So I left it as it is. You’ll have to imagine the kinds of typing acrobatics I perform whenever I comment on another blog, or key in my URL. I remember I was registering for a local bloggers’ event, and I made 3 mistakes (3!) while typing in my own URL. I don’t like laptop keyboards…

I want to shorten it. I hope to get people following this way of thinking, of coding, of solving problems. It’s hard to say “I’m a Polymath Programmer”. Doesn’t roll off the tongue easily.

So I put forth all my linguistic skills into play, cutting words up, switching them around and joining them.

  • Polyrammer
  • Polygrammer
  • Programath
  • Polyprog

Finally, I came up with one. It’s even an actual word. This word actually has similar meanings to what my grand idea is.

Thou art now a Polymer.

What do you think? Hopefully, the chemists don’t hammer me…

Texture maps and the soul of programmers

Texture mapping is a technique which adds detail to 3 dimensional models. You’ll see it in graphically rendered movies like Toy Story or Shrek, and in games such as Doom and Final Fantasy XII.

Suppose we have two 3D models, a sphere and a fractal-generated terrain.
3D models of sphere and terrain
When we map a texture (which is just an image) such as
Sunset onto the 3D models, we get
3D models with sunset texture

If we change the texture to
Quiet campus and map that onto the 3D models, we get
3D models with quiet campus texture

Fundamentally, the 3D model is the same. The output changes because the texture is changed. It’s the same with programming. Two programmers will produce two different sets of program code, yet produce the same required logic.

The unique coding fingerprint of the programmer becomes the texture that maps onto the required logic (a 3D model). It’s the way the programmer thinks up a solution. It’s the way the programmer writes and organises code. It’s the personal touch that programmer has imparted onto the resulting program. And a skilled programmer can even alter the logic, such as adding checks not specified in requirements, to create a more useful resulting program.

When you’ve done enough programming of your own, reading other programmers’ code gives you insight into their minds. Understand why a piece of code is written the way it is written. There are many web sites providing programming help with sample code, most of them with further explanation of the code. So read through the entire solution, explanation, code and all.

Yes, you really really just need the code to solve your problem. When you’ve solved your problem, read through the code and try viewing the problem as the original programmer would have. You’ll learn even more because you’ll have gained some fraction of wisdom, and be better at creating solutions. You’ll have developed your unique texture, and the distinctive soul of a programmer.

5 reasons why you need polymath programmers on your team

A polymath is someone who is knowledgeable in a wide variety of subjects or fields. And polymath programmers are people whose interests and knowledge cover programming and related subjects. In this age of information overload, let me tell you the 5 reasons why you absolutely must have at least one polymath programmer on your software development team.

1. They are fast learners
Their natural curiosity compels them to find out more about anything that interests them. Fueled by unwavering discipline, they quickly master the basics of a topic, and attain above average to advanced proficiency. Technology moves fast, and your team will benefit if at least one of you can keep up.

2. They are embracers of the unknown
You can only innovate if you are willing to step out of your comfort zone. To stand out means trying something no one’s done before. To create simple software solutions means seeing what cannot be seen. New ideas are born out of the darkness of the unknown. And polymaths are skilled at bringing them to light.

3. They are idea connectors
Their breadth of knowledge enables them to link seemingly disparate ideas and create new ideas. Sir Isaac Newton discovered the law of gravity from a falling apple. Archimedes found a way to calculate the volume of an irregular object when he was bathing in a bathtub. Fresh perspectives are a premium. The answer to your problem can be sitting just a few cubicles away.

4. They are role contortionists
They’re flexible. Polymath programmers know how to program in C. And C#. Probably Javascript too. Some Unix commands. ASP.NET. Connect to a database. Network stuff. Why a float or double is a very bad choice for storing monetary values. Write technical documents. Liaise with users. Answer technical questions from customers.

And when your star database administrator goes on leave, your polymath programmer can smoothly take on the duties. Your genius web developer has a cold and takes the day off? Let your polymath programmer handle that small but business critical graphic change.

This may sound degrading, but it’s true. Polymath programmers act like plug and play components. They can become whatever role you need them to be, whenever you need them to be.

5. They are autonomous agents
Set them an interesting and challenging task, and watch them work at it with little intervention from you. Amassing knowledge from different sources require self discipline and organisational skills. Let them know what you need, and stop bugging them. Your job as a manager is to stop other people from bugging them.

There you have it, the 5 reasons why having polymath programmers on your team can help with your bottom line. So how do you find them? That, my friend, is another story…