DEV Community

rodney ringler
rodney ringler

Posted on

Old Dogs, New Tricks for a Software Developer

Recently, I switched companies and find myself having to learn a whole new way of developing. I had spent the last 6 years at a complete Windows/.NET shop. Everything was C#, Windows servers, SQL Server dbs, Visual Studio, TFS, the Windows/.NET life. It was a very homogeneous architecture, and all the developers were C# experts. 

At my new company, even though I was recruited for my C#/.NET expertise, I found myself being handed a Mac for my development machine and a whole different world. They use mainly linux servers. I found out that .NET is really only used for a few .NET core api’s running on linux(arrgghh). They have a complete mismatch of platforms/languages/architectures. It is a lot of php, node js, python, and go on the backend, and almost every frontend you can think of(angular, django/python, vue, react, straight html, etc.). They are completely AWS cloud. All of the developers live in the bash terminal window with some sort of code editor(vs code, sublime, atom, etc.) instead of a full blown ide.

My new development team could not believe that anyone would not develop on a mac. They have this belief that full blown ide’s are overly complex and a terminal window, code editor, and console print statements are the best way to debug. Not to be an elitist programmer, this seems fine for simple stuff, but a complex multithreaded application needs more than console log statements to debug.
Well, this was quite a change for me, but I had made the switch because I was getting bored, wanted to learn new things, and see what an enterprise web shop with a bunch of youngsters was like. Little did I know how much learning I would be doing. May be it is a mid life crisis, who knows. I did grow a beard for the first time and get a tattoo. I am beginning to feel cool and hip again. 
Now to the point of the article, my observations, on the pros/cons of these 2 very different environments and architectures.

The Mac as a development machine. I like it. I find myself hating to admit it but a mac is a pretty sweet machine. I do have Parallels and a Windows 10 vm for those days when I want to do some hard core C# stuff, but I find myself living more and more on the mac in a terminal window and vs code. 

Speaking of the terminal window. This is kind of full circle for me. I started on a vax/vms terminal and some unix boxes back in the early nineties. I like the intimate nature of the terminal window and being closer to the os. That said I am still a fan of nice tools that handle lower level stuff for you. The geek in me likes the terminal window. The proficient experienced developer in me likes a good set of tools to handle lower level stuff.

Code editors versus a full blown ide. For node, python, php, and simplier things I am starting to like vs code. I have settled on it over sublime and atom. Maybe it is my visual studio roots but I do like it better. I can do some basic debugging in it, and it integrates well with git. But nothing beats a full blown ide for serious development. In my opinion, the full Visual Studio experience is hard to beat. Its tool set is unmatched. I find most of the young developers I work with do not like its steep learning curve. They find it to complicated and do not want to invest the time to become proficient with it. I think this is a little short sited, but most of what they are doing are projects that do not require visual studio. Creating an api that queries a db and returns some json data is not rocket science. Also, since it is mostly a mixed environment and linux based a lot of visual studio’s benefit are diminished. But in a plug to Microsoft and Visual Studio they have been adding a lot to their linux tooling.

Many languages. I have never been in such a schizophrenic environment. It is flavor of the day on steroids. To their defense some of this is due to acquisitions. The pro of this is it allows a lot of freedom and the choice to use a language best suited for a particular task. The con of this is that there is a ton of technical debt, and everyone becomes a master of all and an expert of none. I find this the biggest downside. Everyone is what I would call a hack at a bunch of languages but not a master of any. There is a benefit to being an expert in the language and platform you develop in. You know the best practices, best design patterns, latest features and trends, etc. I believe you develop cleaner more easily maintained and scalable code this way. To me this is the biggest downside I see to my new environment. But from a learning new things standpoint, it is nice to get to play in a lot of languages instead of only C# everyday.

In summary, I think somewhere in the middle of these 2 environments is probably the best of both worlds. Selfishly, it has been great to get the learning and exposure to all of these languages, platforms, and trends. But if it was my company I would definitely drive to some sort of defined architecture.
I am surprised how much I like the mac, terminal window, and vs code. It is a nice tool set for small tasks.

I look forward to more learning and growing. Never get too bias or stuck in your platform of expertise to not try new things with an open mind. I try to live by this in life and software development.

Top comments (10)

Collapse
 
alainvanhout profile image
Alain Van Hout

Whenever I come across some variation of “real developers use notepad!” (or some barely more efficient terminal equivalent), I can’t help but sigh. When creating code, typing speed or syntax memorization should not show up as limiting factors in how much work you can get done. And refactoring is not something I’d ever again want to do by hand: it’s something my IDE can do for me, with zero chance of mistyping.

It’s a bit odd that your new colleagues see an IDE as having a steep learning curve, since doing anything efficiently with a terminal requires lots of plugins and shortcuts, which require memorization. I’m an Intellij (Java) user myself, and I can’t imagine not having it (if fact, I can, but I’d rather not).

And good luck with your new job. I hope it’s supplies you with lots of learning as well as enjoyment :).

Collapse
 
rodneyringler profile image
rodney ringler

They are a young group with no experience outside this company so they do not have any other perspective.

They only know web development. When I mentioned in my last job that I developed business applications for supply chain logistics and warehouse management solutions, they had no idea what I was talking about.

Collapse
 
webreaper profile image
Mark Otway

Oblig: xkcd.com/378/

Collapse
 
mathur_anurag profile image
Anurag Mathur 

Thank you!

After reading your piece, I firmly believe that there are more people like me who share the belief that a full blown IDE is great for development. I am not a big fan of a text editor for development. It does not offer the debugging capabilities of an IDE, which makes more sense than looking at logger prints.

Be it Visual Studio for .NET or Eclipse/NetBeans/IntelliJ/Others for Java, it makes lots of sense to invest time to learn the ins and outs, and use them for full blown development.

Collapse
 
kspeakman profile image
Kasey Speakman • Edited

I has have posted elsewhere, the thing I really miss from Visual Studio is the automatic build templates. Basically create a new "Web API" (or whatever) project, and do all file changes (add/delete/rename) thru the Solution Explorer, and there's no build to setup and maintain. You can customize the build process, but I have never needed to.

Going to front-end, building is suddenly a nightmare-turned-reality of starter projects and manually editing webpack configs. And the industry seems to consider this normal. I suppose MS had the benefit of releasing only when their tooling was caught up to the new tech they were releasing (well, until dotnet core anyway).

Collapse
 
webreaper profile image
Mark Otway

Maybe I misread the article, but it sounds like you're not using Visual Studio for Mac. If not, you should. I see no need at all to use parallels for "hard core C#" stuff, when the MSFT IDE on the Mac is extremely good already, and getting better all the time. Basically, unless you're doing WPF and other 'native' UI stuff - which, from your mention of services, you aren't - then just use the native C# IDE. Despite nearly 15 years of C# development I ditched Windows about 3-4 years ago at home and all my personal projects are done entirely in C# on the Mac (except for a couple of forays into Java - ugh, type erasure ). :-)

Collapse
 
rodneyringler profile image
rodney ringler

Good point. I am used to doing a lot of WPF apps but not with this new company. I should jump to VS for MAC. I just couldn't bring myself to abandon windows all together.

Collapse
 
na1pir profile image
Uroš Golob

I am total opposite of you I guess. I am proficient in low level C stuff, I prefer doing stuff for a soc Linux kernel also embedded. I tend to think that it is easyer to think of what you do if you do not have to think about shortcuts and specific IDE stuff. IDE and work environments change that is why back to roots always works for me. Just clean code with essential indentations and a bit of code complete. That is why gdb, gcc and vim are my go to tools when doing stuff through ssh. When I have to do some higher stuff in c++, bash or python, I use gnome builder. Embedded development also calls for dedicated IDE.

Collapse
 
maccabee profile image
Maccabee • Edited

I agree with you about IDEs. I love Visual Studio though I'm not as proficient as I should be. A big issue about them is, in the JavaScript community, I can't speak for other languages, there aren't many that do everything in one box. And the ecosystem is moving so fast that almost unreasonable to expect one to keep up, especially with all of the different flavors.

I'd love to do something like you did, moving shop. I'm also I .NET dev but I want to do more in JavaScript. Not that I have anything against C#/.NET but it's mostly back-end work and I like working on the front-end/UI.

Collapse
 
saschadev profile image
Der Sascha

Awww.. This happens to mee in my last project (Deployment of an application with Azure Cloud and so on based on php, c#, Lara El and some other stuff) . They used bash to compile develop and deploy... That was very hard to learn and very uncomfortable I think. I suggest them to try vscode, first they thought that was ms bull***t and cannot do anything. After a week they loving using it because they installed some plug-ins that helps to support the development process.

After a while we moved from an unmanaged gitlab (hosted under a desk) to vsts with auto. Automated build and so on. That deploys into Azure very well.

At a point we are happy to get a nice CD process. And the editor was set for now and the bash was only used for some scripting tasks.

For me and for them it was an huge experience to dive into other technologies and the learn curve on both side was enormous.