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

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