#[1]Dormeo Ergo Sum - The blog where I talk about nerdy computer stuff
(BUTTON) Toggle navigation [2]Dormeo Ergo Sum
* [3]About Me
* [4]Portfolio
[5][descartes.png]
Code Shame
Should you share your embarrassing code?
Posted on January 31, 2020
A friend of mine has recently been working on his own game engine, I
don’t know much about game development but to me this seems like an
impressive feat. I have been encouraging him to put his code up on
Github (even if it is a private repo), so I can look/help. He has been
somewhat resistant which has made me reflect on when I started putting
things on Github.
I think most of us cringe when we look back at our old code. A while
ago I decided to clean up my Github profile as I had a lot of old repos
that I haven’t seriously worked on in years or forks that I never
touched. Looking at some of my old repositories made me kind of
embarrassed but instead of deleting them, I decided to keep them and do
a little cleanup:
1. I edited their README and added a screenshot (if it made sense)
2. I setup CI (if it made sense)
3. I setup a demo site (if it made sense)
4. I added a binary (if it made sense)
5. I moved it to another Github Organization ([6]bbody-old)
6. I archived them
I seriously considered outright deleting them. Most were hackathon
sites I spun up over the course of a weekend or things I built while I
was still in university. I decided not to because these repositories
represented and demonstrated my growth. I think the repository that
represents this the best is [7]Pinger.
Screenshot of Pinger
The wxWidgets interface ages it a bit but Pinger was developed in 2013.
In my internship at the time, I had to do a lot of testing with remote
computers. When updating the software, it would automatically restart
the computer. Once it turned back on I’d need to reconnect, which I
could never really tell when to. The waiting and repetition of
attempting to connect forced me try and solve this problem. So in my
spare time I developed a program which would:
* Monitor a list of IP’s
* Intermittently ping if alive
* Intermittently port scan UltraVNC port
* Open UltraVNC when double clicked
* Allow basic configuration
* Store addresses
Despite a few stumbling blocks, it eventually became an integral part
of my work. I scratched my own itch and it allowed me to do my job more
efficiently with less repetition. [8]wlcmd is a similar repository I
worked on around the same time.
Screenshot of wlcmd
Uploading this code to Github wasn’t only my introduction to Github but
also git! At university I had to use [9]CVS, [10]SVN and [11]TFVC at
work.
I am still not sure why I uploaded them to Github but I am glad I did,
I think putting my code out there definitely made me more confident. At
the time I was still at university and was somewhat protective of code
I wrote. I felt bad code was a reflection on my ability, but experience
has taught me that it is usually a reflection of circumstance. Those 2
tools despite being very simple, solved a real world problem I had. The
reason the code isn’t great is because I hadn’t done much real world
coding. The reason my hackathon code is not up to scratch, is because
of extreme time pressure. Any shortcuts taken was in order to provide a
demo of the business case rather than my technical chops. One of my
biggest fears was that people would belittle me or my code… And guess
what? Those repositories have no comments/issues from other people and
next to no stars/forks/watchers! My fear was unfounded.
I summed this up to my friend as:
* No-one if going to leave comments on your code saying it is bad, if
they do it means you made an impact e.g. [12]VVVVVV, [13]Facebook
* A hiring company care a lot more about a project that works and
does something than a repository filled with “perfect code” (if
there even exists such a thing) that does nothing
* Other devlepers understand if it is a work in progress
* It is good git practice
* Others can help you
Despite being somewhat shy about sharing my code, once I got over the
initial hurdle of sharing what I built, I became a more confident
developer. It definitely leaked into my professional career technical
tests become less daunting and code reviews with peers is a learning
experience not an adversarial experience.
Got any comments or feedback? Feel free to go over to the [14]Hacker
News Discussion and let me know your thoughts!
Tags: [15]coding [16]github [17]git [18]source-control [19]development
[20]developers [21]confidence [22]growth [23]productivity
* [24]← Previous Post
Brendon Body • 2020 • [25]brendonbody.com
Theme by [26]beautiful-jekyll
References
1.
https://www.brendonbody.com/feed.xml
2.
http://www.brendonbody.com/
3.
https://www.brendonbody.com/aboutme
4.
http://portfolio.bbody.io/
5.
http://www.brendonbody.com/
6.
https://github.com/bbody-old/
7.
https://github.com/bbody-old/Pinger
8.
https://github.com/bbody-old/wlcmd
9.
https://en.wikipedia.org/wiki/Concurrent_Versions_System
10.
https://en.wikipedia.org/wiki/Apache_Subversion
11.
https://en.wikipedia.org/wiki/Azure_DevOps_Server#Team_Foundation_Version_Control
12.
https://www.polygon.com/2020/1/13/21064100/vvvvvv-source-code-game-development-terry-cavanagh-release
13.
https://gist.github.com/nikcub/3833406
14.
https://news.ycombinator.com/item?id=22234999
15.
https://www.brendonbody.com/tags#coding
16.
https://www.brendonbody.com/tags#github
17.
https://www.brendonbody.com/tags#git
18.
https://www.brendonbody.com/tags#source-control
19.
https://www.brendonbody.com/tags#development
20.
https://www.brendonbody.com/tags#developers
21.
https://www.brendonbody.com/tags#confidence
22.
https://www.brendonbody.com/tags#growth
23.
https://www.brendonbody.com/tags#productivity
24.
https://www.brendonbody.com/2020/01/23/dogfooding/
25.
http://www.brendonbody.com/
26.
https://deanattali.com/beautiful-jekyll/