Finding Like-Minded Beginners

206 views
Skip to first unread message

Todd Cullum

unread,
Nov 17, 2016, 9:36:19 AM11/17/16
to Clean Code Discussion
So I've found myself in a unique spot. I seem to be good at doing that lol. I'm a trained beginner at software development. I am mostly doing work with ASP.NET MVC & Web API/C#. But I seem to be different. For one, I have a much more difficult finding new developers in my area (San Diego) who use .NET or anything other than MEAN basically. I see a ton of job listings, but aside from that, there aren't many meetups or anything. The second and most important part though is I have a good group of coder friends, but none of them know anything about the principles taught by Uncle Bob... "Good software craftsmanship/engineering" principles.

It seems all the other young guys are more focused on just throwing an app together so that it works rather than using the proper design patterns and SOLID principles to ensure that the code is maintainable and a well-engineered system. I am having a real struggle with this. Admittedly, I'm still in my deep self-learning phase (though I've already put thousands of hours in at this point) but I am doing things like using dependency injection, repository pattern, unit of work, and otherwise programming against interfaces to keep my applications modular and testable. This takes a much greater amount of effort up-front and can be tedious at times, especially as a self-learner who isn't currently getting paid for doing it, but who loves it. It's not tedious because it's not my full-time job just yet, but because nobody seems to be able to even relate to me around me. That makes it a bit tough at times. However, I love coding and I am committed to quality work, no matter the cost, so I will not give up. I was wondering if any of you fine people had any suggestions, insight, or resources for a young guy trying to break into the field but who is not the "learn code quick" type. Unfortunately, I do not currently have the luxury of getting a CS degree, however, I am very self-driven and have read many books and am doing some online courses.

Your fellow (junior) Clean Coder,
Todd

vivek poddar

unread,
Nov 20, 2016, 8:41:40 PM11/20/16
to Clean Code Discussion
Hi Todd,

I think you are exactly in my place, I am also stuck in same situation, you check my threads to gain some insight and how I was able to get mentor ship of talented guys here 
I did couple of projects but due to full time job its sometimes hard to be consistent but I try my best.

So, you can discuss with me if you need some help.

Thanks,

swkane

unread,
Nov 21, 2016, 1:39:42 AM11/21/16
to clean-code...@googlegroups.com
Todd,

    That's strange you weren't able to find developers in San Diego using .NET. I have heard of C# being used by a lot of companies in San Diego. In fact, at a recent recruiting event I went to: 'Hacker X', it seemed like almost every company recruiting there was recruiting for C# developers.

    I would recommend trying to get into open source, or library development. In either case, you may not be able to enforce all of Uncle Bob's teachings, but the code bases will probably be a lot cleaner. The reason open source has to be cleaner is because it is exposed to the world and potentially many developers who don't get paid might contribute. So, you will either be embarrassed by a bad code base, or you will get a lot of tickets to clean up the code, or the project will fail because no one will want to join the project due to it being a mess. You might be wondering why the software industry doesn't have better standards for code. I wondered this for a long time and I think I figured it out and one of the main reasons is quite counterintuitive.

    The first thing is that software code is very ethereal and abstract. An almost limitless number of solutions will generate the same result for an end user. Now, you might think that it is the case that you can compare different solutions and compare them in terms of how well they are 'crafted'. You can for some things that are obviously terrible, but the problem of evaluating the craftsmanship of different solutions is too much for many managers in industry to undertake. Most for-profit software organizations saddle their managers with a variety of responsibilities that make doing things like code reviews a much lower priority.

    The next problem is the fact that even amongst well-known figures within the software development community (e..g Uncle Bob), there are quite a few disagreements. For instance, one of the big points of contention is TDD. Some, like Uncle Bob are big advocates of TDD, while others such as Rich Hickey (creator of the language Clojure) are not. Managers might fall into one camp or the other, but it's easier for them to not enforce TDD. Bottom line is that it's easier to have no principles/styles and just give a nod of approval to any solution that appears to 'work' than to enforce a particular set of principles on the developers. Of course, then, you end up with code bases where some developers might do TDD, and others don't, and that's fine to the manager as long as a solution 'works'. With no underlying style/principle of development, code bases end up with a hodge-podge of styles/principles, which in my opinion is much worse than a code base that might have a single style that I just happen to disagree with in some areas. Some of this mentality was actually praised among individuals in the Perl hacker community, as an example.

    So, many managers in industry have given up trying to enforce good coding practices (or never bothered to in the first place). They just try to get developers to crank out a solution that 'works' (for now), and then react to bad stuff that happens later (bugs, outages, delays in delivering features etc.). The managers are smart enough to know that much of the codebase is bad and many developers would hold up their nose and not want to touch the code...except they get paid to do that. So basically what happens is developers who would normally not touch the festering code bases at a lot of companies, end up working on those codebases because they are getting a paycheck to do so. If a developer quits, the manager knows he can just post a job rec, recruit someone else and pay them to navigate their way through the festering mess to add the next feature. This is the dirty (open) secret of the software industry.

    This brings me back to why open source code bases are often much higher quality compared to what you find in proprietary closed-source code bases. One of the advantages of open source is you can get unpaid developers to contribute. But someone who is passionate about a project is less likely to contribute if the code base is a festering mess. They aren't being paid, so they can just quit out. Also, because such a large number of developers from all over might want to contribute, you can't rely nearly as much on tribal knowledge. At a company where there is a relatively small team, Joe can just message Bob a snippet of code that's a workaround for a known bug, or a 'quick and dirty' script to do something that is not checked into the code repo. This just won't fly as much on an open source project with potentially hundreds of contributors. With many contributors who might run into the same problem, bugs/issues either need to be fixed, or documented. Also, almost no open source project is going to skip out on code review. Merge requests are almost certainly going to be reviewed by the project leads, and probably others.
    

Steven

--
The only way to go fast is to go well.
---
You received this message because you are subscribed to the Google Groups "Clean Code Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clean-code-discussion+unsub...@googlegroups.com.
To post to this group, send email to clean-code-discussion@googlegroups.com.
Visit this group at https://groups.google.com/group/clean-code-discussion.

Oleksii Fedorov

unread,
Dec 5, 2016, 5:04:34 PM12/5/16
to clean-code...@googlegroups.com
Hello Steven,

This is very good content you have here. Did you think about forming a proper blog post out of it? Or if you already have that published somewhere, point me to it, so that I can share it with my network.

Thanks,
Oleksii
To unsubscribe from this group and stop receiving emails from it, send an email to clean-code-discu...@googlegroups.com.
To post to this group, send email to clean-code...@googlegroups.com.

--
The only way to go fast is to go well.
---
You received this message because you are subscribed to the Google Groups "Clean Code Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clean-code-discu...@googlegroups.com.
To post to this group, send email to clean-code...@googlegroups.com.

swkane

unread,
Dec 6, 2016, 3:47:11 AM12/6/16
to clean-code...@googlegroups.com
Oleksii,

   Thanks, it's good to know someone out there reads my thoughts... :)  No, I have not considered making a blog post out of it. I avoid generating content for social media/blogs because it can become too much of a distraction. However, please feel free to share my thoughts with your network.

Steven

To unsubscribe from this group and stop receiving emails from it, send an email to clean-code-discussion+unsub...@googlegroups.com.
To post to this group, send email to clean-code-discussion@googlegroups.com.

--
The only way to go fast is to go well.
---
You received this message because you are subscribed to the Google Groups "Clean Code Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clean-code-discussion+unsub...@googlegroups.com.
To post to this group, send email to clean-code-discussion@googlegroups.com.

--
The only way to go fast is to go well.
---
You received this message because you are subscribed to the Google Groups "Clean Code Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clean-code-discussion+unsub...@googlegroups.com.
To post to this group, send email to clean-code-discussion@googlegroups.com.

Todd Cullum

unread,
Dec 15, 2016, 5:55:53 AM12/15/16
to Clean Code Discussion
Hey Steven,

I just wanted to thank you for your very thorough reply! I apologize that I did not get to it sooner, I thought that this system emailed notifications as this is my first time using Google Groups.

The good news is, you're right in that I did successfully find some .NET "User Groups" as they are called around here which have regular meetups in San Diego county. I had no idea to look for the term "User Group" rather than ".NET programmers" if that makes sense.

About your industry advice... Thanks tremendously. Sounds like a heap of procrastination/needing to get the product out quick and really doesn't surprise me. Which industry do you work in? Desktop? Web? Embedded, etc...? I was wondering if you knew if any of these were more inclined to "care" about their codebase than others, or if its just a professional versus open source thing? It sounds like I may want to keep doing open-source. Given that I feel the web dev world is sort of a mess right now, I've been wanting to write some open-source software to help solve a few problems... Hm...
To post to this group, send email to clean-code...@googlegroups.com.

Todd Cullum

unread,
Dec 15, 2016, 5:56:38 AM12/15/16
to Clean Code Discussion
Vivek,

Awesome, I will pull up your posts and read thanks!

swkane

unread,
Dec 24, 2016, 11:35:12 PM12/24/16
to clean-code...@googlegroups.com
I'm in backend web systems. Currently, I am 'architecting' a microservices based backend that will be used by the other developers in my group. Fortunately for this group, I am writing and deploying the foundational services for the container clusters and so I am eating my own dog food so-to-speak. I will tell you more about my current employment situation when we meet up in January.

Of the industries you listed, embedded would probably care the most about quality since things like firmware updates will affect hardware devices that may only receive updates on a limited basis, and firmware updates that go bad can 'brick' a device. Although, strangely, the brief period of time I did embedded development was at a shop that was the worst in terms of quality of any place I have ever worked at.

Open source is probably going to be the best in terms of quality, but I am saying that with the caveat that obviously not every open source project is going to be better in terms of quality. When I am talking about open source in this context, or in the context of my previous reply, I'm talking about major open source projects that have significant user bases.

Steven

To unsubscribe from this group and stop receiving emails from it, send an email to clean-code-discussion+unsubscri...@googlegroups.com.
To post to this group, send email to clean-code...@googlegroups.com.
Visit this group at https://groups.google.com/group/clean-code-discussion.

--
The only way to go fast is to go well.
---
You received this message because you are subscribed to the Google Groups "Clean Code Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clean-code-discussion+unsub...@googlegroups.com.
To post to this group, send email to clean-code-discussion@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages