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...

Latest comments (95)

Collapse
 
asia_nword profile image
Asian Nigga

It requires quite much time to write a program, this can take years. I know that you code by parts, but how do you know if you are going the right way without running it(or do you?)? I am not really aware of this kind of things, could you please, tell about it?

Collapse
 
ez120 profile image
Ehsan Zand

Hi John, I don't know if you check here yet or not, but if yes, please give me an advice.
I am an amateur back-end developer, I started programming by self-training with an unrelated university degree. I'm 35 and I'm working as a developer for about 7 years with some experience with C# and Java for different companies. But after all the years now I realized that I'm not professional yet and I am still evaluated as a junior developer. I know that all of my knowledge is superficial. Seems my work experience is not 7 years, it's 2 years.
I never could deepen my knowledge because I always had to work and make money for my family and in this way, I was just doing simple things, and after a while, I realized that I could not make any progress in terms of my career and even financially.
Now I want to move forward, but I don't know how and I don't know the path. I'm confused and frustrated.
For example for Java, should I start to review the Java Core and continue with other aspects? What about the professional experience that I don't have.
I will be so grateful if you can guide me in this.

Collapse
 
johnmunsch profile image
John Munsch

Yes, I am still here, [plug] I just posted yesterday about some of my video series :) [end-plug].

I've always found that I got knowledge which was more than just surface level from one of three ways:

  1. Teaching others. There is no way to have just surface knowledge and be able to teach other people. They will force you to go deeper because their questions, their confusions, their mistakes will make you have to dig way deeper for an understanding of the material than you ever would have had otherwise.
  2. Fixing someone else's problem. When somebody comes to you and says, "Help," and you are trying to help them, you will go past the surface to fix that problem for them.
  3. Working on something you love. Is there some aspect that you really really enjoy? DevOps, data mining, visualization, front-end work? If there's something there, you can get a lot of mileage out of learning any of those in depth and if it corresponds to something you care about it will be 95% easier to do it.

Is there any way you could do something like mentor someone else (helping), offer to help somebody get rid of a problem, or get tasked with a project that corresponds to something you really like doing?

Those might help. The only other thing I can suggest, and this is what I usually suggest to people who want to learn something, is there a project that you feel passionate about building but which you can also use as a way to fill in some of the knowledge you don't feel like you have now? Because only something you really want is going to help you power through the tough parts.

As for the specifics of Java and what you feel is your missing professional knowledge, part of me feels like this is partly self confidence, part may be realistic, and part may be self expectations which might be a little too high. If you're looking to change things, try interviewing for a few jobs and see how others view you. Hand out a resume and get some feedback. We hired someone last year just because we liked how keen he seemed to be to learn and grow. He didn't have great knowledge or experience but we felt his enthusiasm could help a lot and we're really happy with the choice we made.

Collapse
 
strtw profile image
Stu • Edited

Hi John,

Thanks for making this post. Any other similarly experienced devs please feel free to chime in!

Some context before my questions:

I have the opportunity to work on a project with a lead who has 30+ years experience with CS & math degrees. He prefers to avoid libraries, tools, modern IDEs etc. Anything that modifies the code we would write is out (Babel, Prettier code formatter etc). All valid JavaScript is allowed, no coding standards are imposed. No git branches because he doesn't like the possibility of merge conflicts. jQuery is embedded and won't be going anywhere because he likes its utility. JS files are loaded via script tags without any kind of modules. Functions are hundreds of lines long. Many suggestions of making improvements to the way things are done have been met with strong resistance. I think there is value to working on the project because I would have to build everything from scratch w/out crutches and it's an interesting domain. However, I am concerned about the opportunity costs in terms of time I could spend learning more modern dev practices. I'm also concerned that getting quality 1:1 time with a person that espouses the 'sink-or-swim' school of programming might be very difficult.

  1. Would you view the legacy nature of the project and entrenched attitudes of the lead as red flags or opportunities?

  2. What is a good balance of knowing fundamentals/legacy vs. modern, marketable practices?

  3. What advice would you give to younger programmers on how to interact with programmers of your generation who are set in their ways?

Collapse
 
johnmunsch profile image
John Munsch
  1. I hate to sell out a fellow developer but almost everything you described above doesn't seem like an opportunity to me, it seems like a whole series of red flags. About the only thing your lead and I agree on is no great love of Babel/TypeScript (though I use TS at work, I use straight ES6 code on my own personal projects outside of work). In my case however, it's just because I don't like a system with a lot of tooling and all of the modern browsers (Note: I'm excluding IE11 from that designation) handle ES6 just fine already.

    It really doesn't seem to be about 'sink-or-swim' as much as it seems to be about discomforting an individual from his/her personal preferences. I'm going to come back to that in question 3.

  2. Tough to say on that. You really do need to know your fundamentals, JavaScript, some kind of component system (Web Components, Angular, React, Vue), etc. But I think it is also super valuable to understand how to build a system as a whole. If someone asks you to explain how the various component systems differ or why someone might use Redux or even what concepts like dependency injection, GraphQL, or continuous integration are, then I think you should be able to do that. If someone asks you a question, do you understand it so well that you can answer it simply even if they are not technical at all.

    In my case, my most marketable skill for quite some time has proven to be the ability to look at somebody and say convincingly, "I can fix your problems." Whether those problems were with performance, adding new features or fix bugs in an existing codebase, rewrite a codebase to make it modern, or the ability to get best practices of version control and continuous integration into place. I can listen to the problems they have and explain some of what they might need to fix it and tell a believable story about how I've helped others solve those problems in the past.

  3. Let me extend that a little bit for you, because there are younger developers who at present think that webpack + TypeScript + React is literally the only way to build anything. They are as unwilling to consider any other tech because it would require them to learn something new and to consider that maybe some of the stuff they already know is actually starting to fade. It's not an age thing, it's a mindset.

    Change is going to happen. Your favorite tools aren't going to be the favorites forever, it's a given. jQuery was king, it's not anymore, AngularJS, ditto. React is currently king but tomorrow it may not be. Ask them a simple question, "What is your current plan for change? What do you plan to introduce to simplify coding over the next few years, what do you plan to phase out, and how do you plan to acquire new talent with a good tech stack that solves our problems while still moving forward to well supported solutions?"

    If you can lay out a convincing set of reasons why adoption of something new could make things better while not imposing a lot of tech debt and it would give the project a longer/better lifespan and they aren't willing to even consider it, do you want to work with that person or those people? If they can't articulate some kind of plan and they won't listen to yours, that is a big red flag.

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
 
emehrawn profile image
🦄

I'm facing a problem from last 4 days, I'm not able to install lxml module for python, even through Terminal?!

Collapse
 
johnmunsch profile image
John Munsch

Well, to be fair, this does say "Ask Me Anything". However, I've never used Python and I'm going to be unable to help you.

Collapse
 
emehrawn profile image
🦄

i Figured it out, anyway thanks

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
 
cutiko profile image
Erick Navarro

How are you?

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
 
renoirtech profile image
Renoir dos Reis

Hello John, how do you communicate with people who do not understand programming, I'm going through the challenge of how to estimate the time I'll spend on one task and announce progress to other departments?

Collapse
 
johnmunsch profile image
John Munsch
  1. Don't use jargon. If you overwhelm anyone with language they don't understand then you're not communicating.
  2. If it's not something you've ever built before, make it clear that any estimates you make may not be very accurate. A builder who has built many homes can give you a pretty good estimate on building another house. A builder who has built many homes and who now has to build a commercial restaurant may give a not so great estimate.
  3. Just telling people a percentage may not be very realistic. Often developers think something is 80% done because they've gotten the most obvious parts working. But edge cases and the uncompleted hard stuff can end up not being 20% of the work but 50%+. So you thought you were 80% done but really only 40-50%. It might be better to give them a list of the tasks you've still got to do and if they're each broken out into what will hopefully be no more than three days per task, the estimate may be a better one (and also communicate more of what you have left to do vs. what you've already accomplished).
Collapse
 
rajilsaj profile image
🇨🇬 RAJIL SAJILA

Hi John ! Nice talking to a veteran . Got 2 questions ?

1 - What do you think about remote works , remote job plateform ?
2- How to find job as a non degree Software Developer ? Self taught ?
Bonus : 3- Does it worth working for big company ? or creating its personal business ?

Thanks for answering.

Collapse
 
johnmunsch profile image
John Munsch
  1. It actually took me a while to develop the discipline necessary to work remotely. When I first tried working on my own earlier in my career I was distracted as hell. Now I can sit down and work as efficiently as if I were in an office. We actually work from home once a week and a couple of times I've worked remotely for a couple of weeks at a time while on vacation in another city. We use Sococo + a VPN and that takes care of most everything for us (though don't count that as an endorsement for Sococo; we would replace it if we could find something better).
  2. I'm not sure about the answer to the second one. I have worked over the years with programmers who did not have a formal education in it (including one or two really great ones) but I've never hired one myself. I wouldn't rule one out, but I've not met any in a long time who could show the expertise needed. I'm really sorry I'm not more helpful on this.
  3. I'm a terrible person to ask on this. I have only one significant entrepreneurial sprint and it was around 1997-1999. It did result in a company that sold to another one some years later so you would think that I would be really sold on building up companies. But really I'm sold on reasonable work hours, vacations, and health insurance. So, since that has worked well for me, here's what I'm going to advocate for you. Do some of both. Don't do one or the other exclusively. Work for yourself some and work for others some.
Collapse
 
equiman profile image
Camilo Martinez

Did you feel boring some time developing? What's the cause and how afford it?

Collapse
 
johnmunsch profile image
John Munsch • Edited

Yes. Inevitably. One thing that can lead to that is a project that you don't believe in. If you think it's unlikely to get used or succeed, it's hard to pour the hours in thinking that it's a waste of time. The times when I've been in that situation though, the only thing that would have helped would have been to change to a different job. So that's an extreme reaction unless you're bored for a long time.

The other way I've gotten bored is the most obvious way, repetition. Never changing the variables in the system. If you're fixing the same code, making only minor changes, using the same tools and you're in an environment where even upgrading to new versions of the existing language are resisted (I've been there) then it's inevitable that it gets boring. Come to think of it, that time I did change jobs. So, if it looks like it's going to be a temporary thing to be bored, see if you can't find a fun project at home to help offset it. But if it's just boring because you're stuck at a boring place and its clearly not going to change... You change. Change jobs.

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
 
makerofgirls profile image
Miguel Rodriguez

John: I am an old PL/1 and FORTRAN programmer; have not coded since 1985; would like to get back into it. Do you have suggestions as of how to go about doing that?

Collapse
 
johnmunsch profile image
John Munsch

I'm afraid my advice for this would be similar to my advice to Ankit Puthran about learning Angular or React. For me it would come down to either building a project or teaching others. That's what works for me, but it might not for you.

In your case though, you didn't say what kind of thing you're looking to get into. Your choice of language and project is going to vary a lot depending upon whether you're looking to get into game development, AI, or web development. If you can share more I, or someone else here, might have better suggestions.

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