I am a Web Developer At Heart

0 comments suggest edit

A while back a young developer emailed me asking for advice on what it takes to become a successful developer. I started to respond,

I don’t know. Why don’t you go ask a successful developer?

web - credits:
http://www.sxc.hu/photo/885310 But then I thought, that’s kind of snarky, isn’t it? And who am I kidding with all that false modesty? After all, the concept of a “clever hack” was named after me, but the person who came up with it didn’t have 1/10 of my awesomeness which is exceedingly apparent given the off-by-one error that dropped one of the “a”s from the phrase when it was coined. This, of course, was all before I invented TDD, the Internet, and breathing air.

(note to the humor impaired, I didn’t really invent TDD)

But as I’m apt to do, I digress…

I started thinking about the question a bit and said to myself, “If I were a successful developer, what would have I done to become that?” As I started brainstorming ideas, one thing that really stood out was joining an open source project.

If one thing in my career has paid dividends, it was getting involved with open source projects. It exposed me to such a diverse set of problems and technologies that I wouldn’t normally get a chance to work on at work.

Now before I go further, this post is not the post where I answer the young developer’s question. No, that’s a post for another time. I’ll probably give it some trite and pompous title like “Advice for a young developer.” I mean, c’mon! How pathetic and self absorbed is that title? “Get over yourself!” I’ll say to the mirror. But the guy in the mirror will probably do it anyways, but in reverse.

No, this is not that post. Rather, this post is a digression from that post, because if I’m good at one thing, it’s digressing.

As I thought about the open source thing, I got to thinking about the first open source project I ever worked on – RSS Bandit (w00t w00t!). RSS Bandit is a kick butt RSS aggregator developed by Dare Obasanjo and Torsten Rendelmann. I had just started to get into blogging at the time and was really impressed by Dare’s outspoken and yet very thoughtful blog as well as by his baby at the time, RSS Bandit (he has a real baby now, congrats man!).

I hadn’t done much Windows client development back then. I was mostly building web applications in classic ASP and then early versions of ASP.NET. I figured that it would be exciting to cut my teeth on RSS Bandit and learn Winforms development in the process. The idea of a stateful programming model had me positively giddy with excitement. This was going to be so cool.

Many new developers approaching an open source project have grand visions of implementing shiny amazing new features that will have the crowds roaring, the President naming a holiday after you, and all your enemies realizing the errors of their ways and naming their children after you.

But a good contributor swallows his or her pride and starts off slowly with something smaller in scope, and more grunt work like in nature. Most OSS projects have a real need for documentation, partly because all the glamour is in implementing features so nobody wants to write the documentation.

That’s where I started. I wrote an article for the docs, getting started with RSS Bandit. Dare took a notice and asked if I would contribute to the documentation, which I gladly agreed to do. He gave me commit access (I believe I was the third after Dare and Torsten to get commit rights) and started working very hard on the documentation. In fact, much of what I wrote is still there as you can see in my narcissistic application screenshots I used. ;)

Over time, I gained more and more trust and was allowed to work on some bug fixes and features. My first main feature was implementing configurable keyboard shortcuts, which was really neat to implement.

(A bit of trivia. I worked with these guys for years on RSS Bandit, but never met Dare in person until this past Mix conference in Las Vegas. Seriously! I’ve yet to meet Torsten who lives in Germany.)

I really loved working on RSS Bandit and it became quite a hobby that took up what little was left of my free time. I guess you could say it kept me out of gangs in the hard streets of Los Angeles, not that I tried to join nor would they accept me. Over time though, I learned something. Despite all that initial giddiness over finally getting to program in a stateful environment…

I realized I didn’t like it.

In fact, I found it quite foreign and challenging. I kept running into weird problems where controls still had the state they had before after a user clicked a button. I would think to myself, “why do I have to clear that state myself? Why doesn’t it just go away when the user takes an action?” I realized my problem was that I was thinking like a web programmer, not a client programmer who took these things for granted.

As challenging as a client programmer finds the web, where you have to recreate the state on each request because the web is stateless, a developer who primarily programs the web sometimes finds client development challenging because the state is like that ugly sidekick next to the hot one at a bar – it…just…won’t…go…away.

I realized then, that I’m just a web developer at heart and I’d rather make web, not war. It was around that time that I started the Subtext project where I felt more in my element working on a web application. Eventually, I stopped using RSS Bandit preferring a web based solution in Google Reader, ironically, because the state of my feeds is always there, in the cloud, without me needing to synchronize or install an app when I’m at a new computer.

So while I actually like (or maybe am just accustomed to) the stateless programming model of the web, I’m also attracted to the statefulness of web applications as a whole in that the state of my data is not tied to any one machine but it’s stored centrally where I can easily get to it from anywhere (which yes, has its own concerns and problems such as when the net is down).

At the same time, I do check in now and then to see how RSS Bandit is progressing. There are very cool features that it has that I miss out on with Google Reader such as the ability to comment directly from the aggregator via the Comment API and the ability to subscribe to authenticated feeds. And I think Dare’s taking RSS Bandit into compelling new directions.

All this is to say that if you want to become a better developer, join an open source project (such as this one :) because it might just show you exactly what type of developer you are at heart. As I learned, I’m a web developer at heart.

Found a typo or error? Suggest an edit! If accepted, your contribution is listed automatically here.



23 responses

  1. Avatar for Rob Conery
    Rob Conery May 7th, 2009

    I could so derail this post with a messed up comment about... well nevermind :). Good on ya Phil - I was just thinking this exact thing today - Open Source is an amazing vehicle to:
    1) Meet good people who are super smart
    2) Learn some good stuph
    3) Take what you've learned to contribute some good stuph and...
    4) Make a name for yourselph
    It's phunny but the guys who work on SubSonic (and phix a lot of bugs) are sooooooooo loved by the SubSonic community. They will appeal to *them* for pheature/bug phixes! Hrrrmph.
    Can I be a committer yet? Oh yah - I need to submit a phew more patches - the next one involves some SubSonic love. Is that cool?

  2. Avatar for Jirapong Nanta
    Jirapong Nanta May 7th, 2009

    Good one!, I guess that i am following same path as you did. I didn't quite make it right yet, but I am working on it...
    I keep telling myself that "Don't give up".

  3. Avatar for rtpHarry
    rtpHarry May 7th, 2009

    Thanks Phil!
    I applied for a job doing .net winforms the other day and they offered me an interview.
    I kept thinking its not right but at the same time its still basically the same job. But you are right I am a web developer at heart too.

  4. Avatar for anytao
    anytao May 7th, 2009

    Reading hacced in every updating.

  5. Avatar for Gøran Hansen
    Gøran Hansen May 7th, 2009

    Hi Phil
    Just want you to know that I had a very nice experience reading this post:) I totally agree with you regarding OSS, mostly because it enables us to work one something we really want to. We are driven and self motivated by the work we do in these projects. I’ve seen many developers grow while working on such projects. And I don’t think it’s a coincident that the famous guys in our community like Ayende, J. Miller, you, Hanselman, Kzu etc. have worked or working on OSS projects.
    I believe that OSS can be a learning accelerator. You meet new problems, new technologies and new people. And when these meets, you never know what happens.
    Great work!

  6. Avatar for CareySon
    CareySon May 7th, 2009

    only passion can lead us to be a web developer

  7. Avatar for MD. Shahabuddin Khan
    MD. Shahabuddin Khan May 7th, 2009

    here is a problem in Time and Attendance Management System that developed in ms-access. If any company shift time is from Evennig 22:00 to Mornning 08:00 then how to retrieved employee report.
    Date is being changed so I could not retrived the data.
    so please help me.

  8. Avatar for Edwin
    Edwin May 7th, 2009

    Hey Phil, great post. Thanks a lot. I'm definitely going to join the subtext project.

  9. Avatar for Will Sullivan
    Will Sullivan May 7th, 2009

    I always say, 'The state is the enemy.' The more state you hold onto, the more troubles you get into.
    State, unless strictly controlled (which is hard to do!), can result in unintended consequences when it gets out of alignment with what the developer believed it would be in. It makes multithreaded code harder to build, test, and debug. It sucks. I do my best to keep as little state as possible within my classes, preferring to use "contexts", objects that wrap the state required for methods to function that are passed to the methods from the outside.
    So, I agree definitely that keeping the least amount of state within your objects (and therefore application) is the best way to go. Which means that web applications tend to be easier to develop.
    Except for HTML/CSS, which is a clusterf***. The WPF model of having a rich variety of containers that control positioning is so superior to HTML. Div, span, and table. That's pretty much it. And it sucks. HTML needs a *ing reboot. Trash it all and start from scratch.

  10. Avatar for Darren Kopp
    Darren Kopp May 7th, 2009

    the web is dead. viva la command prompt!

  11. Avatar for Andrei Rinea
    Andrei Rinea May 8th, 2009

    I am at the other end here : I started as a WinForms developer 4 years ago and then I switched jobs and ended up doing ASP.NET (Web development). There still are days when I miss my stateful monouser application..

  12. Avatar for Anthony Grace
    Anthony Grace May 8th, 2009

    Aside from being afforded the opportunity to work on technologies not used in one's regular workplace, I can't think of a worse place to observe a well managed project than in the open source arena.

  13. Avatar for Joe Chung
    Joe Chung May 8th, 2009

    I would love to work on a .NET open source project, but I don't see any of them advertising that they need or even want help. Then again maybe I'm just not looking hard enough.

  14. Avatar for don
    don May 8th, 2009

    i am a web developer too ,but not at heart

  15. Avatar for mknopf
    mknopf May 9th, 2009

    I gave several talks on Preparing for Technical Job Interviews which covers a lot of good info this young developer may find useful. The entire talk is available from my blog and can be found at www.mknopf.com/.../...echnical-job-interviews.html

  16. Avatar for brianmrush
    brianmrush May 10th, 2009

    I always chalk it up to
    1. Aptitude
    2. Attitude
    3. Passion
    4. Work ethic
    The rest is syntax

  17. Avatar for Dan Sylvester
    Dan Sylvester May 10th, 2009

    Same advice Bill gives. Get invovled in open source.

  18. Avatar for GuyIncognito
    GuyIncognito May 11th, 2009
    I don’t know. Why don’t you go ask a successful developer?

    Thanks for the lulz! :)
    The associated release of dopamine has prevented me from FTPing my laptop out the window.
    For now at least...

  19. Avatar for Rohit
    Rohit May 11th, 2009

    I am a .NET (WinForms) developer. I want to know where I can find open source projects on .NET. And also, is it the right time to dip my hands in other open source technologies apart from .NET.

  20. Avatar for KevDog
    KevDog May 12th, 2009

    I have to take a bit of an opposing view. I would argue it wasn't open source that made you a successful developer, but the sheer amount of time that you put into it.
    A lot of studies have shown that it takes about 10K hours to get good at something. That's about five years of full time work. Spending time outside of the work day will get your 10,000 hours in faster.
    It's all about time. I can never find the exact attribution for this quote, but a concert pianist said, "I practiced 12 hours a day for 20 years and now they call me a genius".
    It wasn't Open Source that made you, Phil, it was your passion and effort. That makes you a success in any field.

  21. Avatar for Jason Short
    Jason Short May 13th, 2009

    I agree with KevDog. Joining anything will not make you better at it. Passion for what you do will.
    Can't find something to join? Make something for yourself. Just write lots of code.
    My #1 interview question: What is the last thing you wrote for yourself?
    People who write code just because they love to do it will learn a ton more no matter what platform / topology / etc. Write lots and lots of code.

  22. Avatar for libral
    libral August 5th, 2010

    I am also a web developer and now i am work with you i do data entry advertisement like on different forums if you want to work with me then plz tell me

  23. Avatar for GageMedina
    GageMedina January 1st, 2013

    I am really thankful to the author of this post for making this lovely
    and informative article live here for us. We really appreciate ur
    effort. Keep up the good work.