When I was getting my initial technical training, a programmer was expected to be fluent in one language and would spend an entire career doing nothing else. Today, a programmer does the same thing, but an engineer must be much more broad based.
Of course, underlying all of this is a solid foundation in object oriented analysis and design. Then there are the "tools of the trade" that are used such as text editors, specialized IDE's, object/class and relational database diagram tools, web servers, source code control tools, and associated development environments. To round out the tools are things such as JDBC, RMI, CORBA, OBI, EDI and a whole host of software standards and API's that are needed to run and connect application parts together in multi tier, distributed environments.
Yikes! What's to keep you from losing your mind! Well, you don't lose your mind because it's all too much fun! Way too much fun... I just can't imagine doing anything else.
But it's the same for any profession whether it be software engineering, biomedical research, architecture, soccer coaching, chemistry, tv/movie production, physics, teaching, math, writing novels- all of these things present stimulating challenges to those desiring to pursue excellence.
The key to success in any of this is having an interest in something, anything! Without the interest there is no drive to excel- to push toward stretching the boundaries of your capabilities. I see far too many people who have no interests wallowing in self pity and anger, their lives wasting away living for their favorite 20 sports teams, or the soaps, or whatever. People get old fast when they are not stimulated. Just as a pond must have constant in and out flow so as not to grow stagnant, so too we as people must have constant mental and physical stimulus to flourish.
One of the first jobs a friend of mine had was working on the production line in a factory. He told me how amazed he was at the workers who constantly groused about the job and who counted the days until retirement. In the two years that my friend worked there he remembers few of these men who lived longer than 6 months after they retired. He saw enough of that to know that was not how he wanted to live his life. Based on his interests, he went on to open his own successful small business. I'll never forget his stories of all those people who died simply because they had no interests. That had a lasting impression on me!
When I was in my Junior year of high school, I went to seek the advice and counsel of a very good friend of my family — a well respected and wealthy architect in Chicago, Stanley Tigerman. You have to be somebody to constantly have your work featured in Architectural Digest. Stanley certainly was somebody. The best of a driven best.
In any event, I went to Stanley's office one spring day to see if he could point me in a direction to obtain a job for the summer. Stanley knew everybody and so was my most logical choice to ask advice from.
"So. What do you want to do?", was his first question to me after I sat down in a large chair in front of his cluttered desk.
And with that, Stanley picked up the phone and dialed a number. 20 minutes later I was sitting in the executive office of the owner of one of Chicago's largest and most respected architectural firms: Harry Weese & Associates.
"Do?", I stammered. "Well... I'll do anything really. I just need a job."
He leaned forward in his chair and said very softly, "Not just anything, Peter. What do you want to do. If you could have the perfect job, what would it be?"
"Gee...", I mumbled. "I'd like to be an architect like you. I got an A in my last two mechanical drawing classes and I just love that stuff."
"Ok!", he chirped. "Now I can help you! You see, Peter, without a goal- something tangible that you really, really want- you have no hope of achieving anything but mediocrity. You have to have a concrete goal. Then you develop a plan with all the steps you feel you are going to have to take in order to achieve that goal. And then you are going to have to work at that plan like you have never worked before!"
"Gee...", I muttered. "I never thought of it that way before. I was willing to do anything, but I guess I would have ended up doing nothing! That's no way to become a success, is it!"
"No it isn't. Let me ask you this", he continued. "Is that what you want: success?"
"Well, sure", I replied. "Isn't that what everyone wants?"
"Yes, you're right: everyone does want success, but you know what? Not everyone is willing to do what it takes to become a success. What would be a success for you? Making a million dollars?"
"Yeah! You bet!" I exclaimed. "A million bucks would just about do it!"
"Well", he said leaning back slowly in his chair and smiling. "Making a million dollars is the easy part. The tough part is figuring out what it is that you are so passionate about that you are willing to devote 100% of your life's energy toward achieving. That's what separates the rich from the poor. Believe it."
"Whewwwwww!", I whistled as the logic of this hit me like a brick. I could see it. I could feel it.
"You say you like to draw. To design. Well, do you think you have a passion for it?"
"You bet I do!", I exclaimed pulling myself forward onto the edge of my chair. "You bet I do!"
"Good. That's all I need to hear. Because when I pick up that phone and call a very good friend of mine and ask him to give you an interview for a job he may not have, you better be passionate because I'm putting my reputation on the line."
Holy shit! An interview with Harry Weese! I was beyond excited. And nervous. But Harry was just the most wonderful person you could imagine, though if you got him mad, he was fierce. I worked as an office boy for him for that summer, then any vacation time I had, and then the following summer he put me on the boards doing building materials listings, and then actual blueprint drawing expansions. It just couldn't have been any better. And it was that experience that gave me a walking knowledge of the downtown area as one of my tasks was delivering blueprints and proposals all over the city, sometimes taking taxis to get to a company.
And, after all, isn't that life's goal: to be happy; to have a passion for something so great that your success at achievement in that passion brings you the ultimate success of happiness. For without being happy, you have no hope of making the society around you any better; no hope of influencing others- who lack this passion- to strive for peace and happiness in their own lives. This has been the foundation of my entire martial arts philosophy.
Well, the question now is: what effect did Stanley's advice have on me? Was I a success — in a financial sense? The short answer is 'yes' in two different forms. First, because I did achieve that Million Dollar mark, and Second, because my real wealth comes from being happy with myself. But who cares about that, right!
My problem, if in fact it is a problem, is that I was interested in so many things that I thought I'd never be able to choose just one thing that would be my full passion that would lead me to wealth. True, my passion was karate and I made my living for almost 15 years doing that, but it was never going to make me rich. I could never bring myself to sell the martial arts as a commodity as I saw so many others doing. Karate is an art to me; it is my life- my way. I could never sell that.
But karate gave me the foundation to succeed financially. I used the time that owning my own small business provided me to study. I studied everything, but a lot of that was related to money. I learned the rules of the game, and I began to apply those rules. Starting from an initial stake of $2,100 on October 24, 1972 with the opening of my karate school, the Rose School of Karate, I branched out into real estate.
By 1990, after going broke a couple of times, I had assets way in excess of a Million Dollars and a net worth of around $1,000,000. But the depression of the early 90's swallowed all of that and just a bit more. I lost my job, I lost a mortgage company I had started, I failed in starting up another small business, and my karate school became only an expensive aside as few had the disposable income to warrant spending it on karate. But I pulled it together after several very difficult years, and began the long climb back up.
In order to pull myself back, though, I had to use Stanley's advice in its purest form. After the depression wiped me out, I spent months wrestling with his words: what was it that I could be passionate about that would lead me to financial success? I knew many things, but I knew 4 very well: karate, real estate, mortgage banking, and computer programming.
Well, I knew karate was not the answer. The entire real estate and mortgage banking industries were in a shambles. Property itself had experienced anywhere from a 30% to 70% devaluation from their highs in 1989. Besides, I didn't have any money to buy any of what would eventually be some of the best deals imaginable. I even tried shopping things I knew were going to be great investments to the few people I knew who did have money, but they were all so scared that they were paralyzed to act. I had one deal I must have spoken to 6 or 8 people about, but they wouldn't even look. Finally, through a friend of a friend, I found someone who saw the potential, invested $20,000 and saw an on paper profit of $40,000 within 3 months. I don't know how he finally ended up (though I do know he made out very well on the deal), but just a few years later, the profit if cashed out was well over $100,000.
That left computer programming. I had learned programming in 1969, but after graduating with a B.S. in physics in 1972 and then opening my karate school business I didn't have much of an opportunity to do anything in the area until Apple Computer came out with their personal computer in the late 70's. I bought an Apple II Plus in 1979 and I doubt that any consecutive 2 week period has gone by since then in which I haven't done something in programming or computers. Now, that is passion! And in the depths of the depression in 1992, I began a serious passionate drive to hone my skills. I re-started a project that I had begun in the early 80's: a technical and programmatic analysis of stock and commodity price behavior writing in a language called Pascal. I wrote thousands of lines of code. And I began to think of myself as a programmer.
I became totally focused on programming. As a result, I stumbled into an opportunity to do technical recruiting of senior software systems level communications engineers. The agency I worked for, Software Networks, used a home grown software application. As I became more involved with the owner of the agency, I began to make suggestions on how the application could be improved. We decided that there might be a market for such an application if the improvements that we had been thinking about were implemented. We hired a contractor to do the programming as I did not know the FoxPro language the application was written in. But I started learning it right away. Good thing I did because the contractor was not as good as he had led us to believe, and he could not understand how to implement the specifications that I was writing. I took over the completion of the base application and went on to write all of the other functional components over the next year.
Unfortunately, there was not enough money to successfully market the completed application and this meant no money for me. But now I had current skills that I could market, and I was off. My passionate dedication to my chosen field of work has led me to a very successful career in software applications design, implementation, and technical management. Stanley was right: passion is everything.
Soooooo... you may ask: how did it all work out? You may find the following discussion interesting.
Thoughts on Software Engineering
In October of 2001, I was contacted by a job search firm to write an article on my experiences and thoughts as a software engineer for their website clients. I don't know if the article was ever published, but find it interesting to periodically re-read my thoughts. They seem appropriate as a footnote to this discussion, so I include them for anyone who may be interested.
Job Description (2-3 line job description)
I design and build end user business software applications in both client-server and web based environments. I am currently involved in working on internet eCommerce reservations and bookings systems for airlines, hotels, car rental companies, and large travel agencies.
Pertinent Skills (Skills you use everyday on the job)
Project Manager, Project Leader, Senior Programmer/Analyst, Director of Production and Shipping for systems software company. Also real estate investment and mortgage brokerage, tax and estate planning, over 30 years in karate with 8th degree black belt.
Education (Where you went for school, including degree)
1972 B.S. Physics, Eastern Illinois University, Charleston, Illinois, USA.
In your opinion, what qualities are the most important to ensure success in your field? (What traits allow you to perform well on the job, ie. creativity, organization)
You must be able to organize scrambled business logic into a cohesive and easily maintainable code base. You have to be able to focus and have a love of solving problems. You can't be afraid to scrap a process and try another approach. You have to want to learn new things and to study and read about your profession off hours: software engineering is not a 9 to 5 carefree job. What you do is the lifeblood of a company's execution of its financial and accounting plan: you need to be able to appreciate this as a responsibility and not just a job.
What advice would you give to a student who is interested in pursuing a career in your field?
Get a book on the language of choice. Today that is Java. You will have to learn (through a book or by taking a course in) Object Oriented Analysis and Design (OOAD) as well. Then, think up a project. If you are interested in web based technology, then you will have to learn html, http, servlets and some jsp as well. Then design and build your project. If you get bored, or have to give it up for a few days to get a fresh start: forget software engineering. A software engineer is paid to go to work each day and figure out how to do stuff they don't already know how to do. That's got to be fun for you, or you should find something else to do. Admittedly, there are days when I question my sanity as to what I do, and start practicing: "... and would you like fries with that?".
Describe your typical day on the job, from start to finish. (Include hours worked and lunch and breakdown of breaks)
I am generally in the office between 7:30am - 8:00am. I'd be in earlier, but I have a commute that can run from 1 to 2 hours depending on traffic. I do not do well getting up early in the morning; I am a "night person". So that's the best I can do for now. Coffee is first up. I do nothing before my coffee. I then review my notes from the previous day to recall where I left off, and review my calendar to see how to plan my day, i.e. if I have any progress report meetings to prepare for, project sizing estimates to complete, or a code release that is due.
Generally, I have a business problem that I am trying to solve and I need to either write the code for it or rework someone else's code. For example: What information do I need to have to make sure that in an airline reservation system requirements gathering screen I can make a booking for the customer? And when that customer types in their departure and return dates, what checking do I need to do to make sure that these are done legally? Is the departure date request either for today or after today but less then some max number of days in the future? Is the return date request before or after the departure date, and if it is before the departure date is it a date in the next year within the valid max number of days? And if any of this is wrong, how do I trap for these errors? And how do I inform the user of the problem so that they can change their request?
Generally, projects are worked on in a group so periodically during the day team members will interact with each other to make sure everyone is on the same path. Sometimes, a formal meeting with a structured agenda is necessary. This is particularly the case as a major milestone deadline or delivery/release date draw near. The better you are at being able to not only express yourself in these types of meetings but to also condense your thoughts to specific relevant points the more your input will be appreciated. There is nothing worse than being in a meeting where one of the members is either unprepared or rambles on.
Commercial software development is a fast paced environment. In many places this is because the management pushes you to get your work done. This can be a little tiring for the more experienced engineers as this is not considered motivating. The work that we do is very difficult and challenging, but we do it because we enjoy it. The end result of this is that a good engineer works at peak performance all the time because they enjoy it- not because they are told to do it. This is probably the first thing you have to grasp as you enter the software engineering work force: you are expected to do the work in a self directed manner without being prodded by your project manager to do so. Senior engineers can not count on someone who needs to be constantly motivated- we simply do not have the time or desire to. As a result, a person like this will not get good performance reviews. And this translates directly to salary.
I personally very rarely go out for lunch. I usually bring lunch with me as every office I have worked in has a refrigerator, microwave, etc. I eat at my desk so that I can continue to work. Since I enjoy what I am doing, anyway, I don't mind this at all. Every now and then I get frustrated with my inability to solve an issue as quickly as I'd like to and then I do get out of the office for lunch. Sometimes even in the middle of the day I'll just walk out of the building and find a dry patch of grass to park on while I clear my head. Software engineering requires you to be creative and you can't be creative when you are either frustrated, tired, or sick.
Not only due to my commute, but also just because it is my personal desire to be home with my family for dinner at a reasonable hour, I try to wrap things up by 5:00pm. Sometimes this is not possible. I have been on projects where I have never left and just slept on the floor. If I am involved in a particularly interesting or challenging issue, I will talk it through to myself in the car on the ride home, or work on code segments at home at night or on the weekend. Most of the time I do this because I want to, but sometimes you just have to do it because it's the only way the work will get done. But that goes with the job.
Software engineering is a lot of fun and you do have a tendency to become all-encompassed by the challenges of the work. I learned long ago that you have to have balance in your life and that working 10 or 12 hour days for weeks on end not only drains you physically (regardless of your age), but it impacts on your creative ability. Then the work isn't so much fun. I have been doing this a long time and hope to continue to do so. I want to keep it fun. I want to continue to get up in the morning looking forward to the work ahead. I keep the work hours on a weekly basis reasonable.
Having said this, it is critical that I conduct my day in as organized a manner as possible so that I maximize my efforts. Just as I survey the day's work ahead when I get into the office, I try to build in a half hour or so at the end of the day to wind things down and set the stage, so-to-speak, for the next day. I usually have several things I am working on at a time, and so the ability to prioritize and schedule is critical. In past jobs, I have seen unorganized engineers working needless hours on a project simply because they lose sight of the big picture and flounder from task to task.
As part of this wind down process at the end of the day, I generally try to clean the day's clutter from my desk before I leave. This clutter is a synopsis of the work I have done and am continuing to work on. This gives me an opportunity to review what I have done and what I will need to do the next day. More often than not, going through this process reveals solutions to what I have been working on because I am looking over the day's work as a totality.
Besides, leaving clutter to accumulate into heaps, organized or not, implies unfinished work. As that mounts, so does my frustration at "all the work", regardless of actual progress being made. To avoid this, I "clear the deck" before I head out at the end of the day. I leave with a sense of accomplishment- even if that accomplishment has only been to clean up the junk. At least it's something. Sometimes a software engineering effort can go on for literally weeks before a feeling of accomplishment can be had. I admit to needing a daily sense of accomplishment. If nothing else, leaving my desk neat and ordered gives me that sense of accomplishment.
What do you enjoy most about your current job?
For me, the process of analyzing, structuring, and writing code that solves a particular business issue is really satisfying. In my current job, I have an opportunity of expanding my experience into a new arena, that of automated reservations and bookings systems. This if very appealing and interesting for me.
As you know, there are actually two types of software engineering: systems and applications. The two are quite different and require different types of skills, and different personalities. About 15 years ago I made a conscience decision to work in the applications area vs. systems development. I enjoy solving business related problems vs. technology related problems. The technology is a tool that I use to craft my business solutions. For me figuring out network routing algorithms or writing compilers or xml parsers is not as interesting as building a business user application. But that's just me. I have friends who write protocol software that would go nuts trying to deal with writing end user applications with clients suggesting that the background color of an input screen needs to be "...just a little greener," or that they want a change added to complex business logic at the last minute prior to a major release. Oh well. Whatever floats your boat, I guess!
Oh, the other thing I like about my job is that I get paid really well to use my brain instead of my body; I'm just not built to be on a jackhammer all day, or drive a delivery truck, or climb around on scaffolding. I am quite happy banging "the boards" for a living. Statistics show that something like 78% of workers either do not like their jobs or are unhappy in them. I feel fortunate that I am able to enjoy what I do. This makes me good at what I do and gives me the motivation to continue to get better. As the famous CEO of Viacom, Sumner Redstone said, "If you enjoy what you do for work, then you're a very lucky guy." I'm a very lucky guy. But I had to work hard to make that luck stick.