DEV Community

John Munsch
John Munsch

Posted on

I have been a professional developer for 31 years and I'm 53 now, Ask Me Anything!

I've been a professional developer since I graduated in 1987. I am currently the lead for a team of five (including myself) doing front-end development on SaaS software (official title is Application Architect). Apparently, at 53 and still up-to-date and still developing I've become a novelty :)

Ask away...

Top comments (95)

Collapse
 
juankortiz profile image
juankOrtiz

Hi John! I have a few questions for you, if you don't mind:
1) How do you kept motivated as a developer troughout the years?
2) What tools do you use for development?
3) Wich current trend in development would be consider "black magic" when you started your carreer?
4) Have you achieved your life goals to this day?

Collapse
 
johnmunsch profile image
John Munsch • Edited

1) Motivation is generally not hard for me. Only if I'm working for someone who is really unpleasant to employees am I demotivated (and I've definitely been there). The work itself is usually interesting enough that I don't find it hard to do that all day every day. Only a really unpleasant bug or ops task which drags on can get tedious.

2) I use WebStorm and VS Code as my editors. I cannot explain why I keep flipping back and forth but I do for some reason. Lately it has been WebStorm at work and VS Code at home and likewise I've been using Chrome at work and Firefox at home. Maybe it's my brain seeking more variety. Beyond that it's the usual stable of JavaScript related tools: Node.js, NPM, Gulp (until very recently, now that all major browsers support JS modules I'm beginning to use those and webpack too). I built JSCrate.com with Hugo but I'm on the fence about it, I'm tempted to try out Gatsby instead. I use Ansible to do provisioning of really cheap commodity machines at places like Digital Ocean (think $5/mo) and deployment of my hobby apps.

3) Interesting. When I started your main tool was your compiler (we used Microsoft C) an editor and some manuals (way fewer of those than you think). That was basically it. I think we could probably envision most everything you see today except for the explosion and speed of change. However, that's not really "black magic", so the only thing that I've seen that really rises to that level is what we're seeing in AI with tools like Tensorflow. AI for most of my career has not produced anything tangible that actually worked in any useful way. To have off-the-shelf packages that can say, "That's an orange. That's a dog. That's John." That's the first thing that might be a real surprise to 1987 me.

4) Hell no :) But there's still time.

Collapse
 
juankortiz profile image
juankOrtiz

Thanks a lot for taking the time to answer!

Collapse
 
andy profile image
Andy Zhao (he/him)

Would you say your career path is still pretty consistent with new developers of today? From what I hear, most people move upward to management and develop less often, while others stay in development strictly as opposed to doing a both.

Collapse
 
johnmunsch profile image
John Munsch

It's difficult for me to say how my career path compares to someone much younger. I advanced quickly in my early years at Tandy, I seem to be advancing quickly in this current job (a couple of promotions in the last few years, maybe another sometime soon if I'm lucky). So I think it's consistent with my past experience but I never had the Silicon Valley startup experience so I don't know exactly what that's like.

Most of those who I know moved toward management don't develop "less often", they ultimately have to give it up completely. There's certainly no way to stay up to date on the front-end unless you do development almost every day. Perhaps it would take longer to get behind if you were working in a more stable world like a given SQL solution (say Oracle) or something like Java. But even then, it would become difficult after a while. There's just a muscle memory to doing this stuff every day.

My management duties are strictly related to the development and work side of thing. Do I know what everybody is doing? If anybody is stuck, can I unstick them? Does everybody have tasks to do in their queue as well as some optional stuff that advances us on a higher level (for example our recent move from Gulp to webpack or our installation of Sentry into an app; that stuff can be a fun change of pace from bugs or even new development)?

But personnel issues like somebody showing up late to work or leaving early too much are things I don't have to deal with. I don't really have any of those at the moment, but if I did, they would be someone else's problems. I deal only with the work side of things. So when it comes to figuring out how to herd all the cats to a particular technology, that's on me :)

Collapse
 
dallgoot profile image
dallgoot

OMG Tandy :D my first computer with its 2 floppydrive and no hdd.
Never thought i'd read this name again :)

Collapse
 
eljayadobe profile image
Eljay-Adobe

Curious as to your answers or thoughts for The Really Big Questions.

  1. Which editor: vi or emacs?
  2. Indentation: spaces or tabs?
  3. Which operating system: Unix or Windows?

After settling those nigh impossible questions, then we can move on to the easy ones like ending world hunger, lasting peace in the Middle-East, and sustainable nuclear fusion energy.

Collapse
 
johnmunsch profile image
John Munsch • Edited

1: I'm an Emacs guy. That's what I learned in 1983 and it's the only one I still kind of remember. However, day to day I'm in Webstorm or VS Code, not Emacs :) I did learn Vi's two modes: beeping and not beeping though.

2: Spaces. Interesting that I don't remember anybody warring about this one back in the 80's or 90's.

3: Unix. Does Windows qualify as an operating system? I'm showing my prejudices there. I'm a Mac user so I typically only interact by choice with BSD Unix on the Mac or Linux on one of my Ubuntu servers.

Still have my fingers crossed to see nuclear fusion in my lifetime. If so, that would be a game changer.

Collapse
 
eljayadobe profile image
Eljay-Adobe

Since you use a Mac, have you worked with Swift?

I started programming in 1976, with the first program I worked on (as a contributor) was Oregon Trail on an HP minicomputer used by TIES. I used to use emacs, switched to vi many years ago ("it's too late for me; save yourself!"). I tend to use tabs, but I don't care; I care about consistency. I'm a Unix guy; and my machine at home is a Mac. I live in C++ day-in-and-day-out and I envy you for escaping from C++'s clutches.

Thread Thread
 
johnmunsch profile image
John Munsch

I did a small amount of Objective-C a few years ago but never tried Swift.

Collapse
 
bobnadler profile image
Bob Nadler

Just ran across this ama. As a fellow old-timer, I wanted to let you know how much I enjoyed your thorough and insightful answers and discussion. You're far more patient than I could ever be. Well done!

Collapse
 
robencom profile image
robencom

Hello John, help me on this : I want to create my own website using new technologies, so I can both learn the new skills and have something that would keep me excited and motivated to keep on learning new skills and share them. It is pretty much gonna be an educational sort of website about web development.

The problem : it seems that I cannot start building the website, because I cannot "imagine" all the architectural details that the website is gonna have. I keep on thinking "so how many fields the 'users' table is gonna have?", "does 'article' need to be an object? if so, what fields does it have?"...and so on many "idiotic and paranoid" thoughts come to me paralyzing me!

Can you give me a general overview of WHAT should I do? I am gonna use Laravel with either Angular or React. Thanks!

Collapse
 
johnmunsch profile image
John Munsch

I suffer from that as well and I'm sure many others do too. Some of the things people do to get past that are having a deadline (either artificial or real), working with somebody else (so there's somebody to whom you're accountable), coding some katas, etc.

Some of the same things that help authors get past writer's block would no doubt help.

But I'm a big proponent of the idea that "success breeds success". If you can get yourself any small win, even deploying a static HTML page to a server (if you don't have that already), makes it that much more likely that you'll take another step to improve it in some small way and do so again and again.

It's super easy to convince yourself that the time spent reading about technologies, gathering articles about similar websites, and planning is real work. But it's not if the project never happens. So it needs to happen in direct proportion to how much time really gets put into building something. I can tell you that every single thing I've built changed over time, usually significantly. It did that because of user feedback, my own understanding of what I was building (which was poor to start with, no matter how good I thought it was), and because of how well or poorly it did.

Collapse
 
robencom profile image
robencom

I was thinking of doing just that, to start creating the template of my website with Bootstrap. I figured that would be a good start point and the rest would follow.

Thanks, have a nice day :)

Collapse
 
monknomo profile image
Gunnar Gissel

How have you stayed on the individual contributor path without getting pulled into principally management duties? Something I've noticed is as programmers get more senior, they get a team, then they manage the team, and the stakeholders, and the project and before they know it, they are a manager and not really a coder.

Also, what do you find works for staying fresh and up to date?

Collapse
 
johnmunsch profile image
John Munsch

I just realized that I had done a poor job of answering your first question, "How have you stayed on the individual contributor path without getting pulled into principally management duties?"

Ultimately it came down to turning down several opportunities to change jobs. Twice it has come up in the last five years that I could move in that direction. One time I was sure I didn't want it unless I had no choice, I was given the choice and turned it down. The other I briefly thought I wanted a different position but when I really sat and looked at it dispassionately I realized that someone else I knew had a very similar job and I never ever envied him. I knew he got a better payout when it came bonus time, but other than that his job just seemed like a drag to me. So I dropped the attempt to change.

Fortunately, they know I'm interested in advancing and the possibility of another move up within the tech track has been floated recently so I don't appear to be stuck at the very top rung on the tech side just yet. At a lot of places, they just don't bother trying to nurture the technical side and offer a corresponding set of advancements for that side. So you can end up unable to move up after a certain point. I don't have that here, so that makes my choice a reasonable one.

Collapse
 
monknomo profile image
Gunnar Gissel

Thank you, I appreciate the clarification. Very helpful!

Collapse
 
johnmunsch profile image
John Munsch

I have managed to avoid the management duties thus far. I do have to devote more of my time to knowing what my team is doing now than I used to and making sure that they all have a stream of work to do. But that has impacted me only a limited amount (perhaps a day a week has been traded off for lead duties).

I've found over the years that there is no substitute for building things to stay current. I simply cannot learn from videos or reading without actually having a real project to try out the things. The reason I put the emphasis on the "real" there is that I feel like having a project that actually has to do something and which people could use forces you to solve problems that you might get stuck on and abandon if there was no reason to power through them to get to a finish line.

For example, my current project is over here: madgameslab.com/

If you click through the various lists aren't going to make a lot of sense to you if you're not really into board games, but it's effectively a spot for people to see what others are selling/buying before going to a convention together. I'm currently working on improvements to it that will add user accounts so that I can then ask for donations to my favorite charity (Extra Life - extra-life.org/index.cfm?fuseactio...) so donators will get extra features on the site. Doing stuff like that gives me the incentive to finish. Don't finish; non-profit children's hospitals don't get money. That's enough incentive :)

But when I do one of those, I'm often using tech that I'm trying to learn. In this case, more Polymer, JS modules (and some webpack), and Mongoose.

Collapse
 
rgautam98 profile image
Raghavendra Gautam

Hi John, thanks for the AMA.
As you are a frontend developer, I wanted to ask you this.

What do you think, about the latest trend in the frontend frameworks, namely angular, react and Vue JS.

Are they really necessary, if yes, what use cases do they solve. Also, how relevant is jquery these days.

Thanks again.

Regards,
Raghavendra Gautam B.

Collapse
 
johnmunsch profile image
John Munsch

Let me handle the last one first. I love(d) jQuery, it was wonderful, however, it's time is past. The things it offered: more uniformity of function calls across browsers, some fixes to areas where a particular browser lacked a feature it could polyfill, promises, wrapping for XMLHttpRequest, etc. have all been addressed by browser makers over time (for example, better browser standards, ES2015, and fetch). I don't know anybody who starts a new project and frets about which version of jQuery to use nor do they add it as their very first file in the project, as they once would have. It's obsolete.

I bring all of that up because I feel like the underpinnings of AngularJS, Angular, React, and Vue.js are likewise obsolete. They are working hard to emulate the idea of creating custom elements and add support for them to your browser, Angular even tries to do some of what the Shadow DOM does, but it's already there! Chrome and Safari (both desktop and mobile flavors) support Custom Elements and Shadow DOM. Opera does too. Firefox has it in active development and Edge will inevitably have to follow suit. So, when every browser has support for it near the end of 2018 (maybe Edge still needs the polyfill for a brief period), why start with something that is slower and devoting a significant amount of code to trying to do something the browser already does and better.

What I think makes a lot more sense is for all of these libraries to follow the Node.js model. Nobody says, "Oh man, I so love developing in raw Node.js to build my servers!" They enjoy the fact that they can start a project simply and call on 700k bits of middleware to give them everything they might need from logging to blockchains and from data storage to sockets.

Custom Elements does not define anything about how you map strings in the HTML attributes to variables (binding in other words), nor how you render your components, nor how (and if) you map between attributes and properties on your elements. So that's where all of these projects can jump in to fill those gaps in their own ways with small pieces of code that still feel like and work like Angular or React or Vue, but leave some of the basic functionality to the browser where it belongs. Polymer has done this in the past but is really doubling down on it with their new LitElement. The code for that middleware is just 5k but it gets you templating and attribute/property handling. You could easily get off-the-shelf components out of a catalog that used LitElement and feel comfortable including them in your application even if you're using some other thing for your own components.

This is the vision I have for future web development. Me being able to draw from a large set of common components that work well and which I can mix and match with what I use day-to-day. Today, you're generally only Angular or only React or whatever.

Collapse
 
rgautam98 profile image
Raghavendra Gautam

Thank you for the detailed reply John. You've cleared a lot of doubts Ive had for some time.

Collapse
 
satansly profile image
Omar Hussain

Hey John! 31 years as a professional developer is impressive. I have been at it for 10 years. I only want to ask how you feel about it as a long term commitment. Does development capability decrease with time? Is it worth sticking to development only if you enjoy it and not move on to a managerial position with less on-hands coding?

Collapse
 
johnmunsch profile image
John Munsch • Edited

I don't think my development capability has decreased with time. If anything, the tools and libraries have allowed me to go quicker than ever and to experiment more (often via refactoring the same thing multiple times to improve it).

I can't speak for anyone else but me. But for me, it's worth not changing. I'm still doing what I enjoy and in many ways enjoying it more today than a long time ago. I would not enjoy being in management, I just wouldn't. It seems like a huge chore to me and it would take away the thing I love.

Collapse
 
satansly profile image
Omar Hussain

I can relate to this so much "I would not enjoy being in management, I just wouldn't.". I am just worried that, with time the number of opportunities get limited as you get more experienced, if the local industry does not have large scale projects. Large enough to require a dedicated solution architect or a very experienced professional.

Thread Thread
 
johnmunsch profile image
John Munsch

You're right. You could find yourself capped in salary/advancement (though that could also happen in management as well). In a case like that you might find that you have to become an entrepreneur and do your own thing, move to another market, or try to find remote work.

Remote work used to be the exception though it seems like more and more places are doing it at least part of the time now and some notable companies are entirely distributed.

Collapse
 
pablomarti profile image
Pablo Martí • Edited

Hi! hey I have some questions:

1 - Have you ever build personal projects or your own startups? What important lessons do you have from them that you may share with the ones that are starting?
2 - How do you make for keep studying while working and having a life?
3 - From your experience and the things you see that are currently moving, what things should we put more attention on general software development? (independently the kind of development, I believe there are things that may shape the current present and future).

Collapse
 
johnmunsch profile image
John Munsch • Edited
  1. I have many personal projects (you can see some here: github.com/JohnMunsch and here: gitlab.com/JohnMunsch). Some are also online at: jscrate.com, paperquik.com, madgameslab.com, and regrettable.tk/ (obviously some of those need some love to look better or be more complete). I also did a couple of video courses for Packt Publishing: packtpub.com/books/info/authors/jo...

    In addition I was part of a startup, a loooonngg time ago, called Select Payment Processing. It was purchased around 2004 by another company.

    The other notable project some of you might have encountered is GameDev.net. I was one of the founders back in the late 90's. However, lots of other people put way more work into that one than I did.

  2. One of the things that people tend to forget about when they think about older developers is that we're often empty nest. My last kiddo left and went off to college five years ago. I have my work and my time with my wife and aside from that I can do a lot more experimenting than I could when I was 33 and had a small child. Sure, 33 year old me is younger, but he has a ton of commitments. I don't :) I see this regularly with my much younger co-workers. Often I've tried out stuff before they have and have put more time in with the interesting stuff than they can spare.

  3. We need to find a way to stop building much the same things in multiple languages. I know that's a tough thing to ask for, but if it can be accomplished, the payoff is huge. With Web Components we may start to see some visual components that get some wide reuse, but what would be really awesome is if the 700,000 packages in the Node Package Manager were available more broadly. Instead, look at C++, Node.js, Python, Ruby, etc. How many bits of software got reimplemented for each of those? And how many did not and are still unavailable to one or more of them.

    I read a book a long time ago called Object Oriented Programming: An Evolutionary Approach. In it the author was lamenting that he could go pull any IC chip he wanted off the shelf and plug it into something he was building, complete with an attendant set of documentation that fully described it, not only the in and out of the pins, but also characteristics like how much electricity it needed at different times and how hot it was likely to get. But there was no equivalent software IC with complete documentation that was compatible with a variety of languages and which described how much memory it needed under different circumstances nor how fast/slow it was. And this was a book written in 1986! Nothing with regard to that has really changed in 30 years.

    Occasionally you see languages that start from another language and thus are able to call functions written in that other language. For example Elm can use JavaScript I believe. But Erlang and Ruby or C++ and Java? Where is there a single common software library format for all of us?

Collapse
 
dallgoot profile image
dallgoot

Hello John,
regarding career evolution my view on this currently is that we have those :

  • junior dev
  • senior dev
  • senior dev with management tasks and less development

What have you experienced/seen that could be considered the evolution of the role of a senior developer that is not management related?
Or put another way what are the next roles after senior dev aside from management?

Collapse
 
johnmunsch profile image
John Munsch

As I understand it, some companies like Intel have had roles for people who were purely researchers and there to teach and inspire and think about "the big picture." However, I think those are unusual roles and are usually reserved for people who made some huge contribution like the creation of a widely used language or hardware invention.

I'm told where I am now that there is such a thing as an "Enterprise Architect" which would be like my current role but looking at problems across the company and how we could create new software or adapt existing software to help that. That would be a different role for me and if I get it I would welcome that because I think it would allow me to contribute more.

But rather than that being a common thing, I think that's actually pretty unusual in my experience. Also, it's not a job I actually have yet :)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.