Scott Hanselman

Put yourself out there and publish that Open Source project today

October 17, '14 Comments [26] Posted in Musings | Open Source
Sponsored By

I helped write FoolProof Software for WindowsIt's a leap of faith to put your code out there. You have to have tough skin sometimes. Mean people will say it's crap. Many years ago (93-94?) I worked on a piece of software called FoolProof Desktop Security. I was just a few years in the industry full time and working on this cool new project that would keep kids in schools from breaking into Windows machines. I was pretty proud of the work. I did the 16 bit Windows, 32-bit Windows, and DOS Clients (in Turbovision!).

A new employee arrived on the project and a week later, perhaps as a way to prove themselves, they sent email to the whole team with the subject "Top 10 FOOLISH Code Mistakes in FoolProof."

And 7 of the 10 mistakes were in my code.

It's gonna happen, and while it's not OK when folks are cruel, I am accountable for how I take the feedback. I decided to double my efforts and take the valid technical feedback (a lot of my code was poor, I was new) and ignore the tackiness of the message itself.

When you write code you're putting yourself out there, even if no one sees your code, they see the result. It's hard to be a creative, to write, to sing, to act, to code. Coding and producing is a declarative statement and as they say:

He or she who is most likely to make declarative statements is most likely to be called a fool in retrospect.

The code I wrote today was AWESOME. The code I wrote yesterday was CRAP! ;) If it wasn't, I wouldn't be growing.

You likely have some code on your machine you're holding off to publish. Perhaps a private or hidden repository somewhere. I hear several times a week things like "I'm not ready for people to see my code." But let me tell you, while it may be painful, it will make you better.

Books are made better by editors. Coders are made better by pair programming and code reviews. If you love it, let it go.

Yes, some people will be unkind, but not the people that matter. Publish your project!

If you're a more senior person, be kind and coach. Share your wisdom.

Related Links


Sponsor: Thanks for my friends at Octopus Deploy for sponsoring the feed this week. Their product is fantastic. Using NuGet and powerful conventions, Octopus Deploy makes it easy to automate releases ofASP.NET applications and Windows Services. Say goodbye to remote desktop and start automating today!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb
Friday, 17 October 2014 21:01:45 UTC
This cracked me up, Scott.

Your program, on Win 95, had a bug that would take the foolproof process down if another process crashed. This was installed in my school library. I noticed this bug when Netscape would occasionally crash.

So, I wrote a quick VB program to divide by 0, giving my friends and me unfettered access to the library computers.

Thanks for the trip down memory lane. Those were the days. Coincidentally, I was banned from school computers for a year at one point during high school. However, the teachers still let me use theirs since they needed me to fix them for them all the time (IT was a joke for the school).
Friday, 17 October 2014 21:11:23 UTC
Chris B - of course, the only answer I can give you is "I didn't write THAT part." ;)
Scott Hanselman
Friday, 17 October 2014 22:30:34 UTC
Yup. Nothing has helped this self-taught guy more than jumping in on a couple of nicely-scoped OSS projects run by someone who has been both patient, and tolerant. After years of learning on my own in a vacuum, working with someone else, on *their* vision, has broadened my perspective immensely.


Still scary, though...
Friday, 17 October 2014 22:45:46 UTC
I have a couple of public repos on Github for open-source libraries, yet none of them have ever gotten any traction in terms of pull requests or feature requests or anything like that. Do you have any tips for engaging the community with your projects, once you've opened them up?
Friday, 17 October 2014 23:01:48 UTC
@Brad make sure they are published somewhere (like Nuget or NPM) where developers search for packages. Use appropriate keywords, and provide docs to make sure its easy to get started.
frank
Friday, 17 October 2014 23:12:14 UTC
How long did the author of "Top 10 FOOLISH Code Mistakes in FoolProof" manage to keep his job? Doesn't sound like the best way to endear your new colleagues...
Friday, 17 October 2014 23:23:41 UTC
Shameless plug, and you're welcome to explain why it's crap:
https://github.com/POPWorldMedia/POPForums

Actually, would love to have another language translation for the next release. RTL, Arabic or Hebrew would be nice so I can see how the CSS holds up. Pull request away!
Saturday, 18 October 2014 02:25:31 UTC
I am the young programmer who is attempting to get better with all levels of research, and collaboration. It would certainly be an understatement that showing my code to someone makes me a little nervous at times. I did enjoy your article, and it gave me hope.
Fredrick Ward
Saturday, 18 October 2014 02:30:14 UTC
Love this post. It's fun to publish anything really. Most of us don't have to worry about criticism though (at least I haven't had much) because nobody will ever see our code, even when we do publish it. Which begs the question... Why publish unless it's for yourself? And if you're the only one using it, why publish it at all?

Not trying to be a downer, just thinking out loud. :-)
Saturday, 18 October 2014 03:19:28 UTC
Curated links to actively maintained projects with significant new features added within the last 12 months. It'd help if github and others allowed one to filter out projects with no activity in the last 6 months...

Consider the potential longevity of heavily blogged/promoted angularJS, knockoutJS and backboneJS which are all used by well under 0.001 of websites:

http://w3techs.com/technologies/overview/javascript_library/all

Ron
Saturday, 18 October 2014 09:09:21 UTC
"I'm not ready for people to see my code."
I am there at the moment, but not because I do not want to share/show my code: Licenses!
It is a rather big project (~20.000 LOC) and I used some third-party libraries and code-parts. I really want to share my code, but getting all the licenses in check is a nightmare. Especially GPL code vs. non-GPL...

How do you guys deal with that? Don't use "conflicting pacakges" at all?
Christoph
Saturday, 18 October 2014 16:34:41 UTC
Scott, love that you posted this now. Being fairly new still I run into this dilemma quite frequently. I recently was trying to decide on putting a project I am working on out on Gihub now or waiting till I have at some point gone back in a "cleaned" it up. I ended up deciding that if I didn't go ahead and put it out there I would probably never do it. So I published it, its still very early and so so far from done but its a good feeling to just kinda put my code out there and maybe get some good feedback from someone willing to help.
Saturday, 18 October 2014 22:03:18 UTC
Thanks for this. We all learn everyday so we should always have it in mind that we can do better.
Sunday, 19 October 2014 06:39:13 UTC
Scott, really love the advise I am senior to some people junior to some. I will be publishing code soon now. Thanks for this wonderful advise.

Sunday, 19 October 2014 07:00:44 UTC
There is a great project to show part of your code from @JoelSpolsky
http://codereview.stackexchange.com/
Serge
Monday, 20 October 2014 02:20:28 UTC
Nice story Scott - I think we have all been there one way or another!

I know I procrastinated for *years* (!) before publishing one of my local development "for my eyes only" type apps - https://minisqlquery.codeplex.com/

I called it "code pride". There is plenty of stuff in there I did not like then and not now. There are many improvements I would live to make but simply don't have time... I just had to be OK with that :-)

In addition - I think publishing the application as Open Source has been a great source of learning etc.

I do still get emails asking for the code though... :-|

PK

Monday, 20 October 2014 15:55:58 UTC
A new employee arrived on the project and a week later, perhaps as a way to prove themselves, they sent email to the whole team with the subject "Top 10 FOOLISH Code Mistakes in FoolProof."


Is there any way to encourage your team to not make foolish code mistakes besides being an ass?

Most developers aren't like you, Scott... They don't try to get better.
Steve
Monday, 20 October 2014 16:32:54 UTC
It is tough to have your code critiqued and I have known this primarily with younger developers. The more senior guys just need to remember that they were at one point in time that young developer.
George John
Tuesday, 21 October 2014 15:05:18 UTC
The job I learned the most from was the job where other developers would call me out if I coded something poorly or made bad architectural choices.

On the other end, I've seen bad code and chose not to call out the developer. They will keep making the same mistake over and over until you do.

The best thing you can do is put yourself out there. You'll either learn from it or teach others from it. No one is on the losing end here.
Tuesday, 21 October 2014 16:32:44 UTC
I truly believe in this philosophy. Best is to keep trying with your ideas and make them open-source.

It gives us plenty opportunities to get early feedback on your idea, code quality and thereby, improve our product and indirectly hone technical skills - a very important aspect of being a developer, as per me.

Tuesday, 21 October 2014 19:27:23 UTC
Thanks for the encouragement. I would add that if you get harsh criticism of your code, then your project is already popular. Congratulations! People will usually not take time to criticize an obscure project for no reason; they need to make sure that their criticism is widely heard in order to satisfy their ego.
Khaled Hammouda
Tuesday, 21 October 2014 23:36:05 UTC
Yet another worry is that once you upload your project, you are going to see seventeen different copies of your application in the Play/App/Windows Store, published under names other than your own. LOL
Wednesday, 22 October 2014 14:06:55 UTC
This reminds me of an application called Fortress on the computers at school. Needless to say a lot of coders were not so secure with their software because all aspects of technology was new and there wasn't a Norm for end users and children.
Wednesday, 22 October 2014 14:21:45 UTC
"Many years ago (93-94?)" Whoo! what computers were you working on 93 years ago? Sorry couldn't help it...

I've been holding off for a while. I have some code, I know the code is bad I know the architecture is bad... I know if I show people (whilst some will point and laugh) some will help make it better. I keep telling myself when it gets to [some arbitrary point in the future] I'll put it on CodePlex.
Dave
Thursday, 23 October 2014 00:18:07 UTC
Scott, thanks for the inspiration. I have a mere 4,600 downloads of the OSS projects I've pushed to NuGet and have been lucky I guess. Nobody has provided any ugly feedback. A few coworkers have started using one or two of my libraries in their own work and have expressed their satisfaction with them. That's been very gratifying. ~Tyler
Wednesday, 05 November 2014 15:12:27 UTC
Lol - I've had mine posted on github for aeons, and no-one has ever said a bad word about it. Come to think of it, no-one has ever said a word. Which is worse of course. ;)

https://github.com/voxbox/POS
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.