"Tomorrow I need to look stupider and feel better about it. This staying quiet and trying to guess what's going on isn't working so well." Jake Scruggs during the early days of his apprenticeship at Object Mentor
The people who are paying you to be a software developer are depending on you to know what you're doing.
People need confidence that you can deliver, yet you are unfamiliar with the required technologies.
Show the people who are depending on you that delivering software is a learning process. Let them see you grow.
The need to appear competent is ingrained into the people of most industrialized societies. What's more, these societies are increasingly dependent on your competency as software creeps ever-deeper into our everyday lives. Yet because of your inexperience you have many zones of ignorance. You are in a bind. The people around you are under tremendous pressure to deliver software: your manager, your client, your colleagues, not to mention, you. You can see this need for confidence in people's eyes when they ask you how long feature X will take you to finish. There can be tremendous pressure to pacify these people, to reassure them that you know precisely what they want, how you're going to give it to them, and when.
A software craftsman builds her reputation through strong relationships with her clients and colleagues. Conceding to unspoken pressures and telling people what they want to hear is not a good way to build strong relationships with them. Tell them the truth. Let them know that you're starting to understand what they want and you're in the process of learning how to give it to them. If you reassure them, reassure them with your ability to learn, not by pretending to know something you don't. In this way, your reputation will be built upon your learning ability rather than what you already know.
The most obvious way to Expose Your Ignorance is to ask people questions. This is easier said than done, particularly when the person you're asking has assumed you understood what, in fact, you do not. Press on! Sure, you could protect your pride and take less direct routes to obtain the required knowledge, but remember that your road to journeyman will be reduced by taking the most direct route available. With practice and time, you will find that asking direct questions to the most knowledgeable people will become second-nature. While you are exposing your ingrained, you are also exposing them to your learning ability.
A not knowing stance
As a family therapist I was taught to throw off the notion that I had expert knowledge about other peoples' lives. To approach people with a "not knowing" stance. This is a hard pill to swallow, whether you're a newbie therapist or newbie programmer. Your instincts tell you to hide your ignorance, to feign expert knowledge, but this only stunts your growth and inhibits the work you are trying to accomplish. Taking this lesson with me from one career into another has served me well. I've actually grown attached to feeling ignorant on a daily basis, it lets me know I'm in the right place. I'm growing.
Get used to this learning process, this is craftsmanship. There are those who are uncomfortable with this process. Rather than becoming craftsmen, these people become experts, people who achieve expertise on one platform or in one domain and stick with it. Because of her narrow focus, an expert can deliver functionality into a specific context better than anyone. It is certainly important and inevitable for our industry to have experts, but that is not the goal of the apprentice.
Expertise is a byproduct of The Long Road, not the destination. Over the course of her journey, a craftsman will work with countless technologies and domains. If through necessity or interest, she Digs Deep and develops expertise in one or more of them, so much the better. This is to be expected, just as the woman training for a marathon develops stronger leg muscles. She's not training to have strong legs, she's training to run. Like the motivated developer who after working on a Python project for two years achieves a deep knowledge of Python, the marathon runner's strong leg muscles are a means, not an end.
The critical distinction between a craftsman and an expert is what happens after a sufficient level of expertise has been achieved. The expert will do everything she can to remain wedded to a single context, narrowing the scope of her learning, her practice, and her projects. (She can make a good money by doing this.) The craftsman has the courage and humility to set aside her expertise and pick up an unfamiliar technology or learn a new domain as she continues to Wear The White Belt.
Craftsmen could be considered experts at learning, identifying an area of ignorance and working to reduce it. Like bare patches in a garden, ignorance can be reduced by cultivating your seeds of knowledge. Water your seeds through experimentation, practice, and reading. You can choose to hide these bare patches from the light, embarrassed by their size, covering them with traps to keep your pride intact. Or you can choose to expose them, being honest with yourself and the people who are depending on you, and asking for help.
By the end of your apprenticeship, you will have in-depth knowledge into a few threads of technology. With these threads you will possess the ability to weave together robust software applications on a small number of platforms and domains. The master craftsman has the ability to weave a tapestry out of myriad threads. No doubt she will have her favorite threads, and her favorite combinations, but the number of threads will be high, allowing the master craftsman to adapt into a wide range of technological environments. This is where The Long Road will take you. By exposing and then Confronting Your Ignorance, you will spin the missing threads much more quickly than by faking it in order to appear competent.