DEV Community

Cover image for I spent 30 years coding full-time, then I switched to full-time management and leadership. Ask me anything.
Lorenzo Pasqualis
Lorenzo Pasqualis

Posted on

I spent 30 years coding full-time, then I switched to full-time management and leadership. Ask me anything.

My name is Lorenzo Pasqualis. I started writing software in 1984. Over the years I used many languages, technologies, and tools. I have been in technical leadership positions since the early 2000s, and in full-time executive roles since the beginning of 2014.

Today I spend most of my time focused on the art of architecting scalable systems, organizing engineering efforts, hiring and training talent, managing people, leading engineering teams, and helping designing solutions in the EdTech industry. I am very close to the technology as an architect, but my principal concern is people. I am an active advocate for Women in Tech, a believer in servant leadership, and a lifetime learner.

I still code; mostly personal projects or to help my teams. Coding is a passion that will never die, and staying close to the technology makes me a better leader of technologists.

I am the author of a blog, CoderHood, dedicated to the human dimension of software engineering. In other words, it's about people and their life in the software industry.

I have been x-posting some of my articles here on dev.to. Dev.to is an amazing community that I like to support in whatever way I can ( Ben and Jess, you rock! Well done! ). If you have any questions that you think I can answer, ask away. I will respond as best as I can, and I might write a blog post to expand on the topic.

Ask me anything!

Oldest comments (74)

Collapse
 
vikkio88 profile image
Vincenzo

Hi Lorenzo, I am quite new to the professional career, I've been working on Enterprise software just for 4 years, before I was just doing small website as a freelancer to pay my university studies.

Something that really scares me is getting old in this job, I can already tell that I am slower to pick up new tech and more attached to what I know in comparison of what I used to be when I was 18-19... and I think this will get worse aging.
I am really scared that at some point I will lose my ability to adapt to changes completly and get useless.

Ho do you keep yourself always updated on cutting-edge tech stack when your learning pace slows down due to the age?
(I am not calling you old, lol, I think is scientifically proven that learning pace decrease with age)

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

Vincenzo,
Recent studies have demonstrated that the human brain does NOT start to decline past age 25 as we thought it did. It actually keeps on growing! In other words, there is no physiological reason for learning to stop.
What really happens is that we become more resilient to let information in, because new information has to contend with the old stuff we stored.
It's like if our experience makes it harder for new knowledge to stick because new knowledge gets judged and often rejected by the old knowledge. While this is a good mechanism to apply experience to life, it does get in the way in tech.
The trick is to maintain the fundamentals, but question the details you know, and assume that there is always a better way. A better way that somebody probably found, and that you can learn.
The type of fundamentals that you can maintain a bit more closely are things like CS fundamentals, lessons learned personally, things about team work, processes, shipping software, human needs, etc. That stuff is sort of timeless, but it does evolve.
The stuff that is always temporary is stuff like languages, libraries, and frameworks. Those things are like cars. There is always a new model the next year, and it is going to be better than the previous model. Most of the time, at least.
If you look at it that way and assume that everything changes for the better, you won't get stuck in defending old knowledge, and new knowledge will flow into your brain without finding unhealthy resistance.
So... it is all about the attitude toward new things. Fight like hell any temptation to say "this new stuff is junk, in the old days..." It is tempting, but it doesn't work well in tech. Consider anything that exists today as old within 6 months, and keep looking for emerging technologies and trends.

Collapse
 
vikkio88 profile image
Vincenzo

that was a great answer, thanks a lot

Thread Thread
 
lpasqualis profile image
Lorenzo Pasqualis

My pleasure!!

Collapse
 
zasuh_ profile image
Žane Suhadolnik

What is your advice for people in their twenties trying to get into their first programming jobs?

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

My advice is to use what you have to your advantage and understand the issues that hiring managers might be facing that you can resolve. Here are some ideas:

1) You are young and energetic. Bring your passion for learning and for technology to the table. Present yourself as ready to learn, thirsty for knowledge and ready to grow in your job.
2) When you go for an interview, do your homework. Make sure you know everything you can about the company and the product. Present yourself as very passionate about what the company does.
3) You can't bring experience, but you can bring new ideas. Companies seek young tech talent to eliminate old crusty ideas that seem to be unshakable, and if you present yourself as someone who can bring new ideas with passion, that goes a long way.
4) Seek jobs at your level in companies that have good mentors. If you find a boss who is a great technologist who is willing to grow you, it will be well worth the time and effort even if the initial salary is not great.
5) Try to figure out what you want to do long term and what your goals are. All of that can change anytime, and that's ok. Having plans based on the information you have right now is the important thing. Employers will be impressed by someone with a clear set of goals.
6) Try to stay in any job for at least two years, unless you are absolutely miserable. Jumping from job to job is not a good thing.
7) Don't worry. You can do this.

Collapse
 
glego profile image
Glenn Goffin • Edited

@Lorenzo, Staying in a company for 2 years where you have no mentor or is not in line with your skills (e.g. hired as a Python programmer only doing Unit Testing or babysitting old code...) is also not an alternative. Staying less than 2 years in a company is not an alarm bell unless you do it multiple times.

Good mentors are key, regardless what you earn in the beginning it can change your career rapidly in a positive sense. I noticed the biggest career-boosts when being mentored during tough times.

Interesting read btw :)

Collapse
 
andy profile image
Andy Zhao (he/him)

What were your thoughts of going from coding full time to switching to leadership positions? Any reflections on the transition that you'd like to share?

Also, did you ever juggle with doing both at the same time?

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

The most important thing is that you must be sure that you want to do it. I did it the first time many years ago thinking that it was going to be "business as usual plus some extra management stuff." In reality is a different job, and different focus. It is very difficult to get into a state of coding flow if you are going to be doing coding and management at the same time.
If you want to take the leadership track I recommend to embrace it completely and see how much coding you can fit in your schedule. It will be mostly up to you to decide at that point.

Collapse
 
andy profile image
Andy Zhao (he/him)

Gotcha, that makes a lot of sense. I'm personally nowhere near taking a leadership role, but I've been thinking about what kind of a career I'd like to have as a developer (and if that includes leadership).

Thread Thread
 
lpasqualis profile image
Lorenzo Pasqualis

Excellent. Knowing what you want is super important. It allows you to jump into opportunities when they open up.

Collapse
 
ben profile image
Ben Halpern

What has changed most in the industry since you started?

What has stayed the same?

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis • Edited

Thank you for the question, Ben. This could be a 5000 words response, but I'll try to keep it short.

What changed in the industry.

When I started everything was local on the developer's machine, it was very difficult to get documentation and even things like source control management were very primitive. Debugging was mostly done with "printf", and the concept of "production" didn't really exist. Most serious code was written in C, and scripting languages weren't really a thing (with some exceptions for shell scripts.) Everything was done from scratch. I spent a lot of time writing string manipulation functions in the old days.
Today everything is "online", developers have amazing tools, powerful debuggers, and a huge array of libraries and language choices. Scripting languages changed the game, and web development is a large percentage of what coders do, and a good entry point for many programmers.
In the old days, developers were much more "low level". Memory needed to be managed by hand, and memory leaks or buffer out of bound crashing bugs were a real evil pox. I remember when writing C code how it would regularly reboot my machine when I had buffer overrun bugs. Fun times.

What stayed the same

The fundamentals of programming languages are the same, but these days learning frameworks are almost more important. So, coding itself has not changed very much, but the context around coding has shifted dramatically.
Another thing that hasn't change is the passion of developers and their love for technologies.

Collapse
 
arthyn profile image
Hunter Miller

Is it that learning frameworks is more important or that there's a tendency for people to put a lot more emphasis on them? Additionally would you say that the ability to learn quickly/read a framework and still understand (without knowing the framework) is more important?

Thread Thread
 
lpasqualis profile image
Lorenzo Pasqualis

The tendency is for hiring managers to ask if people are familiar with frameworks. Also frameworks tend to be unruly and not always greatly designed, making them a bit challenging.
The ability to learn quickly is more important once you are on the job. Knowing it is more important when you apply for a job. I know... one of the many contradictions of the industry.
I am generalizing here, and giving a view of what I see in the industry. I personally don't really care very much of expertise with frameworks, but I "grew up" as a developer in the 80's and 90's, so my view probably reflects that time.

Collapse
 
ryn456 profile image
ryn456

I'm a young PM, and I've already gotten scrum and studied the PMBOK. What other skills/knowledge can I pick up to better serve the devs & product? Should I just start learning out stack?

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

The more technical knowledge you have, the better you can be as a PM. That said, it all depends on the type of teams you are working with, mostly so that you can follow the nuances of the discussions.
I'd recommend focusing on soft skills before you focus on technical skills. You can add much more value as a great people person than a somewhat technical PM. Becoming "technical" as a PM will take a long time before it brings value, but focusing on people skills will make you stronger much faster.

Collapse
 
tmclaughbos profile image
Tom McLaughlin

What are some areas in leadership that you think engineering didn't adequately prepare you for? For me, I'm spending more time in product now and I've started getting better at understanding or formulating the "why" behind what we choose to engineer but still having a hard time with the articulation and organization of strategy for others to see and understand.

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

The answer is pretty clear in my mind: Soft skills and Project Management Skills.
Engineering didn't teach me much about soft skills and as a leader, I had to develop those from scratch. People are very complex, and leading them is a subtle art of seeding ideas and waiting for them to grow.
Also, project management. The "why" is a super important aspect of project management, but there are others. For example, an understanding of the importance of evaluating cost vs. value of anything that is being done is not something that an engineering background really prepares you for. The economy of software development is a key aspect that is important to understand for proper leadership.

Collapse
 
jess profile image
Jess Lee

a subtle art of seeding ideas and waiting for them to grow

oh yes, couldn't agree more.

Thread Thread
 
lpasqualis profile image
Lorenzo Pasqualis

Thank you, Jess!!

Collapse
 
ankitmpatel profile image
Ankit Patel

I've been in software field last 10 years. So many challenges I've found so far. Every day is a learning day. Hats off to you, You spent 30 years of coding and that too full time. Salute you buddy!!

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

Thank you!!! Challenges keep on coming. It never gets boring :)

Collapse
 
programazing profile image
Christopher C. Johnson

Well if it's not overly rude I did just post this question maybe you could give your input here?

community.operationcode.org/t/what...

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

To me, the most important skills a developer needs to have are:

1) Practicing the craft with the intent to learn, and not with the sole intent to get something to work.
2) Always thinking about abstractions for every concept. If the customer says "2" you should think "a number". If the customer says "I need this to look pretty", you should think "let's parameterize everything that could make something pretty".
3) Love for technology.
4) Collaboration, collaboration, and more collaboration. The time for a lone developer changing the world is passed.
5) Ability to estimate the cost of solutions. Most developers I've seen having a hard time simply had no idea how long it would take them to resolve a problem. It is difficult, but if you work on it you get better overtime.

Collapse
 
lpasqualis profile image
Lorenzo Pasqualis
  • Operating system: any flavor of Unix. For my development machine, I like to use a Mac.
  • Font? Uhm... I guess it depends for what purpose. I am not super opinionated about fonts.
  • Code editor: I love anything that JetBrains make. I use IntelliJ and RubyMine. They are the best!
  • I don't have one. It is all situational, and what works for one project might not work for another.
Collapse
 
lpasqualis profile image
Lorenzo Pasqualis

My advice is to make sure that you create a solid framework, not just a solid language. Ruby would not have been successful without Rails. A solid framework can change the destiny of a language. I am not familiar with Crystal, but I'll take a look.