Logic Colony Logo

Things I wish I knew as a Younger Developer

by Krishna Kotecha, Software Designer.

Share |

An Abundance of Riches

With easy access to the Internet, vast libraries of open source software, and great developer communities, it’s a truly fantastic time to be getting started as a developer. I’ll unashamedly admit that I look back to my own early experiences and feel downright jealous. Back in my time all I had was a (long saved up for) Pascal compiler and access to a meagre selection of programming books at the local library.

Today, the young developer armed with a positive attitude and a search engine can find more programming resources than he or she probably knows what to do with. Fortunately there are links to great books to read and lots of hacker friendly communities to help them progress.

These resources are amazing, but I want to draw attention to excellent advice from some truly accomplished developers. The kind of advice that I honestly wish someone had given me a decade or so ago.

The Real World

Unless your first programming job out of college is at a tech company or a start-up (and for the vast majority of programmers it wont be), there is a high likelihood things are going to suck in terms of interesting work. And even worse, if you find yourself working in a Big Company, your ability to be effective is going to be hampered by all sorts of things completely unrelated to how good a programmer you are.

Zed Shaw explained it best during his talk at CUSEC. I think the following video should be required viewing for every student thinking about getting a job as a software developer. If you have never worked for a big and dysfunctional organisation before, you may find some of his points hard to believe. Unfortunately they are very, very true.

Zed Shaw - The ACL is Dead from CUSEC on Vimeo

Still maybe you’ll avoid the suck that is (the majority of) enterprise development and find or build somewhere much cooler to work. It’s worth the effort, even if the pay at the Big Investment Bank or Consultancy firm is a lot higher.

You can be as Great as You Want to be

John Carmack said it years ago in a .plan file update:

"The situation is so much better for programmers today - a cheap used PC, a Linux CD, and an internet account, and you have all the tools and resources necessary to work your way up to any level of programming skill you want to shoot for."

Whilst that’s true, it’s also a daunting message for most people. Most people suffer from some level of self-doubt, and that self-doubt can be crippling. So here’s a talk by Yehuda Katz giving a more guided and encouraging explanation on how to become an awesome developer:

It’s the same message that applies to any field. If you want to be awesome at something you’ve got to work at it. Work at it a lot. There are no shortcuts, and don’t be a sucker and fall for that talent myth that is doing the rounds.

Learn the Value of Your Craft

"Just so you know, the people who talk that way think that monkeys can do this. They take all this monkey crap and just stick it in a briefcase completely unaware that their success depends on something more than their shoeshine. YOU are the product. You - FEELING something. That's what sells. Not them. Not sex. They can't do what we do, and they hate us for it."

The above quote is from the TV series Mad Men (specifically Season 2, episode 1).

The sad fact about the above quote is that as a programmer you will almost certainly experience a similar degree of contempt when dealing with project managers or business people. Some of them honestly think your work is just the “monkey crap” they somehow have to foist onto their customers. You might hear the following phrases (or similar) bandied about:

  • “It’s just code,”
  • “You will be working on the client/server side. That’s the easy bit, so…”
  • “That’s just something for the programming resource,”
  • ”I’ll do the talking. Programmers don’t get to talk at these meetings,”

Don’t believe any of this crap for a minute. Often it’s just a negotiation ploy to try to get you to reign in an estimate into unrealistic territory and/or devalue your own professional worth. The last phrase in that list, is a particular favourite of mine. If you are ever in a meeting like that, you can be sure that 90% of people in attendance (usually those who are “authorized to talk”), have absolutely no meaningful contribution to make to the project - but they sure have a lot of corporate politics to play.

You’ll also get jokers who want you to:

  • work for sweat equity on their “great business idea”
  • take on and swallow the cost of schedule risk so they can protect the profit margins of their agency/consulting business
  • want you to sign over IP rights to valuable, repurposeable code for comical amounts of money

So learn the value of your craft and the value of what you produce. Most people can’t do what you can do. Even if a task seems incredibly simple to you, for a non-technical person it might as well be magic.

Learn about intellectual property and its history. Don’t just follow the various bleating crowds and blindly accept their agendas - read up about the issues, see how creators in our industry and other industries have been treated. Most importantly of all: respect the rights of your fellow creators. Don’t devalue your own craft and profession by playing it fast and loose with regards to intellectual property and license agreements. You wouldn’t want someone doing the same with your work.

Play well with Others

Software development is a team sport; Business is about relationships.

That may seem hard to believe if you’ve mostly spent your time working on solo projects, but it’s true. Even the super programmers rely on the help of other people be they programmers, testers, technical writers and yes, even those business people and project managers who can sometimes be such a pain.

Don’t be a prima donna. Even if you are the best programmer in the building (and you won’t be). Your actions and attitude might be tolerated for a while, but those days will come to an end. And then you’ll find that no one wants you on their project or their team. I’ve seen people effectively blacklisted for their toxic, self-important attitudes. Karma is a bitch.

Learn how to make estimates on your work, and make them as accurate as you can. Project managers and business people often give developers a hard time because they simply have had such bad experiences with them in the past. Build a relationship with them, earn their trust and you’ll be surprised at how much leeway and respect you will be afforded - by the good ones anyway.

Get to know about the work (and pain) of the non-programmers in your team. See what you can do to make their lives easier. They’ll respond in kind. Your team will function better, and you’ll ship a better product with less frustration and pain.

Don’t lose the Passion

This is absolutely critical. If you love software development, make sure you find a community or local developer group that understands and shares that passion. This is a lot easier these days thanks to the Internet and organised meet ups. If you are on a course, and no one else in your classes seems as enthusiastic or interested about software development as you are, it’s vital that you get involved with a group who are just as - if not more - enthusiastic.

Online communities are great, but there is nothing like meeting up with likeminded developers and hackers. You’ll get inspired, find help and make friends. You can let lose with all that geek talk you have to bottle up with your normal friends because they wouldn’t understand it or be interested. So, turn up to that next developer meet up, and if you can afford it, make sure you go to the best conferences that you can.

Recommended Reading

The “Grading Standards” chapter in Phillip Greenspun’s “Software Engineering for Internet Applications” book, is a must. Go and read it now.

If there are two books I wish I had read long before I actually did, they would be "Peopleware" and "The Pragmatic Programmer".

Both books are more important than any book dedicated to a single language or platform. I’d put them at the top of my reading list.

What did I miss?

Any experienced developers will no doubt have some hard-earned wisdom that they wish they knew a lot earlier. If that includes you, please consider leaving a comment to share your own advice and wisdom.

Share |

blog comments powered by Disqus

RSS icon Subscribe to RSS feed

Logic Colony Products

Choice by Choice

Achieve Your Goals - Choice by Choice


Follow us on Twitter

Bookmarks on delicious

Don't miss a thing. Free updates by email

Enter your email address:

Delivered by FeedBurner



Simple, useful software.

Email us: general@logiccolony.com

Logic Colony Limited is registered in England and Wales.
Registration number: 5845233.

Copyright © 2009 Logic Colony Ltd. All rights reserved.