Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am working on improving my architect / senior engineer skills. In particular, I want to focus on "getting lost in the weeds" - spending a lot of time on a problem while a better solution could have been achieved and "not seeing the forest for the trees" - missing the big picture and only providing part of the functionality - issues. What is some recommended reading/source material that can help me along?

share|improve this question

closed as not a real question by Telastyn, Yusubov, MainMa, Thomas Owens Oct 28 '12 at 13:48

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Did you look at some of the related questions on the right that may be similar? For example, programmers.stackexchange.com/questions/20352/… –  JB King Apr 13 '12 at 22:30
add comment

2 Answers

Books about Architecture

With regard to software architecture, check out Software Architecture in Practice. You should also get familiar with the GOF Design Patterns book if you are not already. Consulting original sources can also be a good way to know something deeper, so look at architect Alexander's Timeless Way of Building for at least a few minutes, perhaps at your local library.

If you really want to get in the architect frame of mind, spend some time on Frank Lloyd Wright and I.M. Pei. You can get additional insights on architecture and design for software from Grady Booch's Object Oriented Analysis and Design book.

Because the user experience is an important part of systems you will architect, check out Donald Norman's Design of Everyday Things (the maschocist's teapot is a hoot), the Invisible Computer, and Emotional Design.

Developing Senior Engineer Skills

With regard to senior engineer skills, there are a lot of things that you can do to move toward a greater level of professionalism. Getting lost in the weeds might be less common for experienced people hopefully due to their increased skill, but also for a darker reason too. If a career is filled with a lot of getting lost in the weeds, that person may get weeded out. The experience people you work with may be the survivors who were selected for their ability to drive projects to completion.

Key skills for staying out of the weeds will be focus, control of scope, caution, and the ability to recognize mistakes. As I gain experience I find I can more easily recognize my mistakes and sometimes those of others, primarily due to familiarity. I have made so many mistakes and spent so much time on rework, bugs are like old friends. But I have hopefully learned to spend more time planning, testing, asking for help, and finding ways to avoid future problems.

Be Careful What You Wish For...

As you move upward, you will become responsible and accountable for the mistakes of others. Hopefully you will master the ability to mentor and advise, and to take heat for your team while at the same time sharing credit generously when things go well. Process and interacting with people will become more important, as will your reputation for integrity and alignment with company goals like cost control, return on investment, and profit. Communication, writing, long term persistence on problems (perhaps after they have lost their novelty for you) will need to be a hallmark of your work.

Many young engineers want to be architects, but often that can mean spending crazy amounts of time on documentation, delegating the coding to someone else. You may be asked to be a system engineer and allocated too few resources to accomplish your mission, so you will need to chose whether to write code or documentation or evaluate things outside your expertise like radio equipment, control systems, industrial design, or circuit board designs. Your cross functional team might need your guidance, but all you will be able to do in some areas critical to the project will be to ask questions like help me understand this problem, which will hopefully help your team members diagnose problems you can't imagine. Without taking extreme care, you may find that others will spend their time thinking about and immersing in the technical details, but you will spend your time thinking about money and time, so you might as well go buy a recording of Dark Side of the Moon.

Innocence Lost

As you move toward senior status, you will be trusted and called upon to support and make large decisions that affect the company's survival and the welfare of people within the company. At first you may be asked to help evaluate your coworkers performance. After that, it is just a matter of time before you will be accountable for chopping off members of your team, sending them to the unemployment office, and somehow searching out someone who can do the job they could not do.

You will need judgment, a moral compass, and a code that guides your choices. I admire the Code of Ethics that was created jointly by IEEE Computer Society and ACM and highly recommend you learn it and evaluate your plans and actions in the workplace using its guidance.

Your personal goals and values may be disrespected along the way. I had a friend who was promoted to executive management after a great triumph on a technical project that had delayed the completion of his PhD. With the promotion came a high level of interaction with international customers. When the company started putting him on a plane to fly a half million miles a year, he lost his technical participation, his ability to work on the PhD, and it had a heavy impact on his health. In the process, they inserted another level of management between him and the CEO, and between him an his technical teams, and he became accountable for a lot of results that were highly visible.

Rewards

IEEE did a salary survey of its members a few years ago and remarked that one thing they found was that, although trained as engineers, those who had titles other than engineer made more money. If you can be a senior engineer and take the steps that go beyond that, which generally means entering a management or executive track, you will probably make more money both personally and for your company.

When offered bigger roles there is generally only one right answer. So, when you say yes, use your increased responsibility and authority to make more jobs, reward engineering professionals and others for what they contribute, and improve the quality and functionality of products available to the public.

A few years ago, drove the CEO of my company to the airport. During the drive, he talked about charitable giving he had initiated in the community on behalf of the company. I told him I agreed with his desire to give back to the community, but that the company was and could continue to help people in a very big way by maintaining and creating jobs for employees and making great products for customers.

Work hard, prepare thoroughly, and lead well when you get the opportunity.

share|improve this answer
add comment

The technical and business know-how is more important for young software engineers and the soft skills getting increasingly relevant for senior software engineers.

The following list should give you an idea what you need as a senior:

  1. Fundamentals of Emotional Intelligence
  2. Understand the Business of your Customer
  3. Minimum One Programming Language for each Mainstream Development Paradigm
  4. Know your Tools
  5. Standard Data Structures, Algorithms and Big-O-Notation
  6. Don't Trust Code without Adequate Test
  7. Basics of Project Management, Lean Management and Agile Concepts
  8. Key Metrics of Software Development
  9. The Root Cause of the Last Defect
  10. Understand the Infrastructure

The best for you is not just to focus on code and technology but also on what seniors in your organisation do. Just ask them. From my point of view soft skills make 60-80% of your success as senior the rest is just a must.

If you like to read more details you may read my blog post Top 10 Things Every Software Engineer Should Know

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.